Changeset 13528
- Timestamp:
- 08/21/11 20:03:44 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r13527 r13528 3006 3006 (emit-getfield +lisp-thread+ "_values" +lisp-object-array+) 3007 3007 (astore values-register) 3008 3009 ;; we need to clear the values again:3010 ;; some parts will consider a non-null _values array3011 ;; by itself a legitimate return value (multiple values)3012 ;; however, if we have a non-local return after the previous form3013 ;; set the values array, other code may pick up the values instead3014 ;; of the actual return code. (Fixes MULTIPLE-VALUE-PROG1.10)3015 (emit-clear-values)3016 3008 (compile-progn-body subforms nil nil) 3017 3009 ;; Restore multiple values returned by first subform. … … 3895 3887 ;; inside the block we're returning from? 3896 3888 (unless (enclosed-by-protected-block-p block) 3897 (unless (compiland-single-valued-p *current-compiland*) 3898 (emit-clear-values)) 3889 (emit-clear-values) 3899 3890 (compile-form result-form (block-target block) nil) 3900 3891 (when (and (block-needs-environment-restoration block)
Note: See TracChangeset
for help on using the changeset viewer.