1.1 --- a/TO_DO.txt Tue May 10 00:48:24 2011 +0200
1.2 +++ b/TO_DO.txt Sat May 21 19:00:05 2011 +0200
1.3 @@ -1,3 +1,12 @@
1.4 +Low-Level Instructions and Macro Instructions
1.5 +=============================================
1.6 +
1.7 +Migrate macro instructions such as the *Index instructions to library code implemented
1.8 +using low-level instructions.
1.9 +
1.10 +Consider introducing classic machine level instructions (word addition, subtraction, and
1.11 +so on) in order to implement all current RSVP instructions.
1.12 +
1.13 Class and Module Attribute Assignment
1.14 =====================================
1.15
1.16 @@ -6,6 +15,21 @@
1.17
1.18 Update docs/assignment.txt.
1.19
1.20 +Consider attribute assignment observations, along with the possibility of class and module
1.21 +attribute assignment.
1.22 +
1.23 + (Note direct assignments as usual, indirect assignments via the attribute usage
1.24 + mechanism. During attribute collection and inference, add assigned values to all
1.25 + inferred targets.)
1.26 +
1.27 + (Since class attributes can be assigned, StoreAttrIndex would no longer need to reject
1.28 + static attributes, although this might still be necessary where attribute usage analysis
1.29 + has not been performed.)
1.30 +
1.31 + Potentially consider changing static attribute details to use object-relative offsets in
1.32 + order to simplify the instruction implementations. This might allow us to eliminate the
1.33 + static attribute flag for attributes in the object table, at least at run-time.
1.34 +
1.35 Dynamic Attribute Access
1.36 ========================
1.37
1.38 @@ -14,21 +38,6 @@
1.39 Attribute Usage
1.40 ===============
1.41
1.42 -Consider attribute assignment observations, along with the possibility of class attribute
1.43 -assignment.
1.44 -
1.45 - Note direct assignments as usual, indirect assignments via the attribute usage
1.46 - mechanism. During attribute collection and inference, add assigned values to all
1.47 - inferred targets.
1.48 -
1.49 - Since class attributes can be assigned, StoreAttrIndex would no longer need to reject
1.50 - static attributes, although this might still be necessary where attribute usage analysis
1.51 - has not been performed.
1.52 -
1.53 - Potentially consider changing static attribute details to use object-relative offsets in
1.54 - order to simplify the instruction implementations. This might allow us to eliminate the
1.55 - static attribute flag for attributes in the object table, at least at run-time.
1.56 -
1.57 Consider attribute usage observations being suspended inside blocks where AttributeError
1.58 may be caught (although this doesn't anticipate such exceptions being caught outside a
1.59 function altogether).
1.60 @@ -60,7 +69,15 @@
1.61
1.62 Local assignment detection plus frame re-use. Example: slice.__init__ calls
1.63 xrange.__init__ with the same arguments which are unchanged in xrange.__init__. There is
1.64 -therefore no need to build a new frame for this call.
1.65 +therefore no need to build a new frame for this call, although in some cases the locals
1.66 +frame might need expanding.
1.67 +
1.68 +Inlining
1.69 +========
1.70 +
1.71 +Where a function or method call can always be determined, the body of the target could be
1.72 +inlined - copied into place - within the caller. If the target is only ever called by a
1.73 +single caller it could be moved into place.
1.74
1.75 Function Specialisation
1.76 =======================