projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.8.10:
[sbcl.git]
/
src
/
compiler
/
node.lisp
diff --git
a/src/compiler/node.lisp
b/src/compiler/node.lisp
index
0025ca5
..
715f246
100644
(file)
--- a/
src/compiler/node.lisp
+++ b/
src/compiler/node.lisp
@@
-372,7
+372,8
@@
;; has already been analyzed, but new references have been added by
;; inline expansion. Unlike NEW-FUNCTIONALS, this is not disjoint
;; from COMPONENT-LAMBDAS.
;; has already been analyzed, but new references have been added by
;; inline expansion. Unlike NEW-FUNCTIONALS, this is not disjoint
;; from COMPONENT-LAMBDAS.
- (reanalyze-functionals nil :type list))
+ (reanalyze-functionals nil :type list)
+ (delete-blocks nil :type list))
(defprinter (component :identity t)
name
#!+sb-show id
(defprinter (component :identity t)
name
#!+sb-show id
@@
-784,9
+785,12
@@
;; :DELETED
;; This function has been found to be uncallable, and has been
;; marked for deletion.
;; :DELETED
;; This function has been found to be uncallable, and has been
;; marked for deletion.
+ ;;
+ ;; :ZOMBIE
+ ;; Effectless [MV-]LET; has no BIND node.
(kind nil :type (member nil :optional :deleted :external :toplevel
:escape :cleanup :let :mv-let :assignment
(kind nil :type (member nil :optional :deleted :external :toplevel
:escape :cleanup :let :mv-let :assignment
- :toplevel-xep))
+ :zombie :toplevel-xep))
;; Is this a function that some external entity (e.g. the fasl dumper)
;; refers to, so that even when it appears to have no references, it
;; shouldn't be deleted? In the old days (before
;; Is this a function that some external entity (e.g. the fasl dumper)
;; refers to, so that even when it appears to have no references, it
;; shouldn't be deleted? In the old days (before
@@
-918,11
+922,15
@@
;; retain it so that if the LET is deleted (due to a lack of vars),
;; we will still have caller's lexenv to figure out which cleanup is
;; in effect.
;; retain it so that if the LET is deleted (due to a lack of vars),
;; we will still have caller's lexenv to figure out which cleanup is
;; in effect.
- (call-lexenv nil :type (or lexenv null)))
+ (call-lexenv nil :type (or lexenv null))
+ ;; list of embedded lambdas
+ (children nil :type list)
+ (parent nil :type (or clambda null)))
(defprinter (clambda :conc-name lambda- :identity t)
%source-name
%debug-name
#!+sb-show id
(defprinter (clambda :conc-name lambda- :identity t)
%source-name
%debug-name
#!+sb-show id
+ kind
(type :test (not (eq type *universal-type*)))
(where-from :test (not (eq where-from :assumed)))
(vars :prin1 (mapcar #'leaf-source-name vars)))
(type :test (not (eq type *universal-type*)))
(where-from :test (not (eq where-from :assumed)))
(vars :prin1 (mapcar #'leaf-source-name vars)))
@@
-1168,14
+1176,6
@@
"<deleted>"))
args)))
"<deleted>"))
args)))
-(defun call-full-like-p (call)
- (declare (type combination call))
- (let ((kind (basic-combination-kind call)))
- (or (eq kind :full)
- (and (fun-info-p kind)
- (null (fun-info-templates kind))
- (not (fun-info-ir2-convert kind))))))
-
;;; An MV-COMBINATION is to MULTIPLE-VALUE-CALL as a COMBINATION is to
;;; FUNCALL. This is used to implement all the multiple-value
;;; receiving forms.
;;; An MV-COMBINATION is to MULTIPLE-VALUE-CALL as a COMBINATION is to
;;; FUNCALL. This is used to implement all the multiple-value
;;; receiving forms.
@@
-1232,9
+1232,12
@@
;; NIL
;; No type check is necessary (VALUE type is a subtype of the TYPE-TO-CHECK.)
;;
;; NIL
;; No type check is necessary (VALUE type is a subtype of the TYPE-TO-CHECK.)
;;
+ ;; :EXTERNAL
+ ;; Type check will be performed by NODE-DEST.
+ ;;
;; T
;; A type check is needed.
;; T
;; A type check is needed.
- (%type-check t :type (member t nil))
+ (%type-check t :type (member t :external nil))
;; the lvar which is checked
(value (missing-arg) :type lvar))
(defprinter (cast :identity t)
;; the lvar which is checked
(value (missing-arg) :type lvar))
(defprinter (cast :identity t)