Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp
- index 539642a..b9e0972 100644
- --- a/src/compiler/ir1opt.lisp
- +++ b/src/compiler/ir1opt.lisp
- @@ -1903,7 +1903,7 @@
- ((let ((use (lvar-uses arg)))
- (when (ref-p use)
- (let ((leaf (ref-leaf use)))
- - (when (and (constant-reference-p use)
- + (when (and nil;(constant-reference-p use)
- (csubtypep (leaf-type leaf)
- ;; (NODE-DERIVED-TYPE USE) would
- ;; be better -- APD, 2003-05-15
- diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp
- index e95b565..bb51c60 100644
- --- a/src/compiler/ir1util.lisp
- +++ b/src/compiler/ir1util.lisp
- @@ -519,7 +519,13 @@
- (and (trivial-lambda-var-ref-p use)
- (let ((uses (lvar-uses (trivial-lambda-var-ref-lvar use))))
- (or (eq use uses)
- - (lvar-good-for-dx-p (trivial-lambda-var-ref-lvar use) dx component))))))
- + (lvar-good-for-dx-p (trivial-lambda-var-ref-lvar use) dx component))))
- + (and (ref-p use)
- + (let ((leaf (ref-leaf use)))
- + (or (lambda-p leaf)
- + (and (constant-p leaf)
- + (and (consp (constant-value leaf))
- + (every #'lambda-p (constant-value leaf)))))))))
- (defun lvar-good-for-dx-p (lvar dx &optional component)
- (let ((uses (lvar-uses lvar))) ; TODO use ENSURE-LIST? or is it too slow?
- @@ -659,13 +665,26 @@
- (unless (eq other lvar)
- (handle-nested-dynamic-extent-lvars
- dx other recheck-component)))))))
- - (cons (cons dx lvar)
- - (if (listp uses) ; TODO use ENSURE-LIST? or is it too slow?
- - (loop for use in uses
- - when (use-good-for-dx-p use dx recheck-component)
- - nconc (recurse use))
- - (when (use-good-for-dx-p uses dx recheck-component)
- - (recurse uses)))))))
- + (cond ((and (ref-p uses)
- + (lambda-p (ref-leaf uses)))
- + (setf (leaf-extent (functional-entry-fun (ref-leaf uses))) dx)
- + (list (cons dx (car (combination-args
- + (lambda-allocator (functional-entry-fun (ref-leaf uses))))))))
- + ((and (ref-p uses)
- + (and (constant-p (ref-leaf uses))
- + (and (consp (constant-value (ref-leaf uses)))
- + (every #'lambda-p (constant-value (ref-leaf uses))))))
- + (setf (leaf-extent (car (constant-value (ref-leaf uses)))) dx)
- + (list (cons dx (car (combination-args
- + (lambda-allocator (car (constant-value (ref-leaf uses)))))))))
- + (t
- + (cons (cons dx lvar)
- + (if (listp uses) ; TODO use ENSURE-LIST? or is it too slow?
- + (loop for use in uses
- + when (use-good-for-dx-p use dx recheck-component)
- + nconc (recurse use))
- + (when (use-good-for-dx-p uses dx recheck-component)
- + (recurse uses)))))))))
- ;;;;; BLOCK UTILS
- diff --git a/src/compiler/locall.lisp b/src/compiler/locall.lisp
- index 9fc2db2..47a5a9e 100644
- --- a/src/compiler/locall.lisp
- +++ b/src/compiler/locall.lisp
- @@ -1238,9 +1238,10 @@
- (reoptimize-call dest)
- (setf (functional-kind clambda)
- (if (mv-combination-p dest) :mv-let :let))
- - (when (combination-p dest) ; mv-combinations are too hairy
- - ; for me to handle - PK 2012-05-30
- - (substitute-let-funargs dest clambda component))))
- + ;; (when (combination-p dest) ; mv-combinations are too hairy
- + ;; ; for me to handle - PK 2012-05-30
- + ;; (substitute-let-funargs dest clambda component))
- + ))
- t))))
- ;;;; tail local calls and assignments
Add Comment
Please, Sign In to add comment