micropython

docs/optimisations.txt

143:2548cd0c4008
2008-09-07 Paul Boddie Removed the source storage optimisation, since it can effectively be replaced by a suitably chosen temporary storage substitute under the appropriate conditions. Made temporary storage substitution possible for assignment expressions and other source values when used immediately. Added missing unused result optimisation test. Added frame extension at the module level. Added temporary storage erasure after each statement. Made each AST Module node refer to the inspected module object. Added an initial frame to the RSVP machine.
     1 Optimisation                    Prerequisites and Effect
     2 ------------                    ------------------------
     3 
     4 constant_storage                value instruction references a constant;
     5 (elimination)                   storage instruction references a constant;
     6                                 remove both instructions (currently a single
     7                                 merged instruction)
     8 
     9 known_target                    value instruction references a constant;
    10 (guidance)                      target and context are provided (no instructions removed)
    11 
    12 self_access                     value instruction references "self" in a method;
    13 (guidance)                      specified attribute name always has the same position;
    14                                 appropriate instruction generated
    15 
    16 temp_storage                    value instruction is a simple input operation;
    17 (elimination)                   value instruction is the last instruction;
    18 (guidance)                      remove the value instruction, provide the value
    19                                 instruction in place of a temporary storage
    20                                 reference
    21 
    22 load_operations                 value instruction is a simple input operation;
    23 (merge)                         value instruction is the last instruction;
    24                                 current instruction uses simple input;
    25                                 remove the value instruction, make the value
    26                                 instruction the input to the current instruction
    27 
    28 no_operations                   input to the current instruction loads from the
    29 (elimination)                   destination of the current instruction;
    30                                 omit the current instruction
    31 
    32 unused_results                  value instruction is a simple input operation;
    33 (elimination)                   value instruction is the final instruction of a
    34                                 discarded expression;
    35                                 remove the value instruction