Changeset 11823 for trunk/abcl/src


Ignore:
Timestamp:
05/03/09 19:01:53 (15 years ago)
Author:
ehuelsmann
Message:

Revert r11814 (fix for stack inconsistencies),
because it breaks in other horrible ways.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

    r11820 r11823  
    78727872           (result-register (allocate-register))
    78737873           (values-register (allocate-register))
     7874           (return-address-register (allocate-register))
    78747875           (BEGIN-PROTECTED-RANGE (gensym))
    78757876           (END-PROTECTED-RANGE (gensym))
    78767877           (HANDLER (gensym))
    7877            (EXIT (gensym)))
     7878           (EXIT (gensym))
     7879           (CLEANUP (gensym)))
    78787880      ;; Make sure there are no leftover multiple return values from previous calls.
    78797881      (emit-clear-values)
     
    78877889          (astore values-register))
    78887890        (label END-PROTECTED-RANGE))
    7889       (dolist (subform cleanup-forms)
    7890         (compile-form subform nil nil))
     7891      (emit 'jsr CLEANUP)
    78917892      (emit 'goto EXIT) ; Jump over handler.
    78927893      (label HANDLER) ; Start of exception handler.
    78937894      ;; The Throwable object is on the runtime stack. Stack depth is 1.
    78947895      (astore exception-register)
    7895       (dolist (subform cleanup-forms)
    7896         (compile-form subform nil nil))
     7896      (emit 'jsr CLEANUP) ; Call cleanup forms.
    78977897      (maybe-emit-clear-values cleanup-forms)
    78987898      (aload exception-register)
    78997899      (emit 'athrow) ; Re-throw exception.
     7900      (label CLEANUP) ; Cleanup forms.
     7901      ;; Return address is on stack here.
     7902      (astore return-address-register)
     7903      (dolist (subform cleanup-forms)
     7904        (compile-form subform nil nil))
     7905      (emit 'ret return-address-register)
    79007906      (label EXIT)
    79017907      ;; Restore multiple values returned by protected form.
Note: See TracChangeset for help on using the changeset viewer.