Changeset 12100
- Timestamp:
- 08/13/09 20:18:59 (14 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp
r12099 r12100 341 341 ;; However, p1 transforms the forms being processed, so, we 342 342 ;; need to copy the forms to create a second copy. 343 (let* ((block (make-unwind-protect-node :name '(UNWIND-PROTECT)))343 (let* ((block (make-unwind-protect-node)) 344 344 ;; a bit of jumping through hoops... 345 345 (unwinding-forms (p1-body (copy-tree (cddr form)))) … … 369 369 ;; local return anyway so that UNWIND-PROTECT can catch it and run 370 370 ;; its cleanup forms. 371 (dformat t "*blocks* = ~S~%" (mapcar #'node-name *blocks*))371 ;;(dformat t "*blocks* = ~S~%" (mapcar #'node-name *blocks*)) 372 372 (let ((protected (enclosed-by-protected-block-p block))) 373 373 (dformat t "p1-return-from protected = ~S~%" protected) … … 386 386 387 387 (defun p1-tagbody (form) 388 (let* ((block (make-tagbody-node :name '(TAGBODY)))388 (let* ((block (make-tagbody-node)) 389 389 (*blocks* (cons block *blocks*)) 390 390 (*visible-tags* *visible-tags*) -
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r12099 r12100 838 838 (defun single-valued-p (form) 839 839 (cond ((node-p form) 840 (if ( equal (node-name form) '(TAGBODY))840 (if (tagbody-node-p form) 841 841 (not (unsafe-p (node-form form))) 842 842 (single-valued-p (node-form form)))) … … 6411 6411 ((node-p form) 6412 6412 (let ((result t)) 6413 (cond ((equal (node-name form) '(LET)) 6413 (cond ((and (block-node-p form) 6414 (equal (block-name form) '(LET))) 6414 6415 ;; (format t "derive-type LET/LET* node case~%") 6415 6416 (let* ((forms (cddr (node-form form))) … … 6422 6423 ;; ) 6423 6424 (setf result derived-type))) 6424 ((symbolp (node-name form)) 6425 ((and (block-node-p form) 6426 (symbolp (block-name form))) 6425 6427 (unless (block-return-p form) 6426 6428 (let* ((forms (cddr (block-form form))) -
trunk/abcl/src/org/armedbear/lisp/jvm.lisp
r12095 r12100 363 363 364 364 (defstruct node 365 ;; Block name or (TAGBODY) or (LET) or (MULTIPLE-VALUE-BIND).366 name367 365 form 368 366 (compiland *current-compiland*)) … … 433 431 (:include control-transferring-node) 434 432 (:constructor %make-block-node (name))) 433 ;; Block name or (TAGBODY) or (LET) or (MULTIPLE-VALUE-BIND). 434 name 435 435 (exit (gensym)) 436 436 target … … 457 457 (defun find-block (name) 458 458 (dolist (block *blocks*) 459 (when (eq name (node-name block)) 459 (when (and (block-node-p block) 460 (eq name (block-name block))) 460 461 (return block)))) 461 462 … … 479 480 than just restore the lastSpecialBinding (= dynamic environment). 480 481 " 481 ( let ((name (node-name object)))482 (or (equal name '(CATCH))483 (equal name '(UNWIND-PROTECT))484 (equal name'(THREADS:SYNCHRONIZED-ON)))))482 (or (unwind-protect-node-p object) 483 (catch-node-p object) 484 (and (block-node-p object) 485 (equal (block-name object) '(THREADS:SYNCHRONIZED-ON))))) 485 486 486 487
Note: See TracChangeset
for help on using the changeset viewer.