Changeset 11870
- Timestamp:
- 05/15/09 17:19:34 (14 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11868 r11870 4228 4228 (aver (null (variable-register variable))) 4229 4229 (setf (variable-register variable) t))) 4230 (let ((must-clear-values nil)) 4230 (let (must-clear-values 4231 temporary-storage) 4231 4232 (declare (type boolean must-clear-values)) 4232 4233 ;; Evaluate each initform. If the variable being bound is special, allocate … … 4259 4260 (allocate-variable-register variable)) 4260 4261 (cond ((variable-special-p variable) 4261 (emit-move-from-stack 4262 (setf (variable-temp-register variable) 4263 (allocate-register)))) 4262 (let ((temp-register (allocate-register))) 4263 ;; FIXME: this permanently allocates a register 4264 ;; which has only a single local use 4265 (push (cons temp-register variable) 4266 temporary-storage) 4267 (emit-move-from-stack temp-register))) 4264 4268 ((variable-representation variable) 4265 4269 (emit-move-to-variable variable)) … … 4270 4274 ;; Now that all the initforms have been evaluated, move the results from 4271 4275 ;; the temporary registers (if any) to their proper destinations. 4272 (dolist (variable (block-vars block)) 4273 (when (variable-temp-register variable) 4274 (aver (variable-special-p variable)) 4275 (aload (variable-temp-register variable)) 4276 (compile-binding variable)))) 4276 (dolist (temp temporary-storage) 4277 (aload (car temp)) 4278 (compile-binding (cdr temp)))) 4277 4279 ;; Now make the variables visible. 4278 4280 (dolist (variable (block-vars block)) -
trunk/abcl/src/org/armedbear/lisp/jvm.lisp
r11869 r11870 246 246 name 247 247 initform 248 temp-register249 248 (declared-type :none) 250 249 (derived-type :none)
Note: See TracChangeset
for help on using the changeset viewer.