2008-05-19 | Paul Boddie | file changeset files shortlog | Moved Label into the common module. Fixed code generation for class storage. Fixed context generation in method invocations. Added stack pop operation for Discard nodes. Tidied the instructions, adding get_operand methods for use in RSVPMachine instances. Improved instruction coverage in RSVPMachine, employing the instruction representations used elsewhere. Added a function which converts the code such that Attr instances become simplified values of the form (context, reference). |
paul@57 | 1 | Exception Handling |
paul@57 | 2 | ------------------ |
paul@57 | 3 | |
paul@57 | 4 | Where exceptions may be raised, the following rules are applied: |
paul@57 | 5 | |
paul@57 | 6 | 1. If exception labels exist, any raised exception causes a jump to the |
paul@57 | 7 | handler label. |
paul@57 | 8 | |
paul@57 | 9 | 2. If no exception labels exist, any raised exception causes the current |
paul@57 | 10 | function to be terminated with an exception condition. |
paul@57 | 11 | |
paul@57 | 12 | 3. Where an invocation returns with an exception condition set, rules #1 and |
paul@57 | 13 | #2 are applied. |