2008-06-30 | Paul Boddie | raw annotate files changeset graph | Attempted to improve invocations by adopting explicitly populated frames. Attempted to resolve the context generation and validation strategy. Attempted to improve optimisations, incorporating constant storage optimisations into the new_op method and adding better tests for side-effect-resistant operations suitable for stack optimisations, incorporating last invocation tracking. Changed the internal stack operation descriptions to use explicit classes, since a distinct StackLoad instruction is now used (as opposed to StackPull which was previously StackLoad, and StackPush which was previously StackSave). Added LoadAddressContext and StoreAddressContext to address the issue of loading class-originating attributes via an instance (predicted using self). Removed various obsolete instructions and added stack operations to others. Added a test of for loops. |
1 Exception Handling 2 ------------------ 3 4 Where exceptions may be raised, the following rules are applied: 5 6 1. If exception labels exist, any raised exception causes a jump to the 7 handler label. 8 9 2. If no exception labels exist, any raised exception causes the current 10 function to be terminated with an exception condition. 11 12 3. Where an invocation returns with an exception condition set, rules #1 and 13 #2 are applied.