projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.13.4: Removing UNIX-NAMESTRING, part 4
[sbcl.git]
/
src
/
compiler
/
ir1-translators.lisp
diff --git
a/src/compiler/ir1-translators.lisp
b/src/compiler/ir1-translators.lisp
index
a6cfd96
..
affa00f
100644
(file)
--- a/
src/compiler/ir1-translators.lisp
+++ b/
src/compiler/ir1-translators.lisp
@@
-74,7
+74,7
@@
otherwise evaluate ELSE and return its values. ELSE defaults to NIL."
(if (policy *lexenv* (= store-coverage-data 0))
nil
(labels ((sub (form)
(if (policy *lexenv* (= store-coverage-data 0))
nil
(labels ((sub (form)
- (or (gethash form *source-paths*)
+ (or (get-source-path form)
(and (consp form)
(some #'sub form)))))
(or (sub form)))))
(and (consp form)
(some #'sub form)))))
(or (sub form)))))
@@
-478,7
+478,7
@@
Return VALUE without evaluating it."
(second thing))
((lambda instance-lambda)
`(lambda ,(second thing)))
(second thing))
((lambda instance-lambda)
`(lambda ,(second thing)))
- ((lambda-with-lexenv)'
+ ((lambda-with-lexenv)
`(lambda ,(fifth thing)))))
(defun fun-name-leaf (thing)
`(lambda ,(fifth thing)))))
(defun fun-name-leaf (thing)
@@
-575,7
+575,7
@@
be a lambda expression."
;;; directly to %FUNCALL, instead of waiting around for type
;;; inference.
(define-source-transform funcall (function &rest args)
;;; directly to %FUNCALL, instead of waiting around for type
;;; inference.
(define-source-transform funcall (function &rest args)
- (if (and (consp function) (eq (car function) 'function))
+ (if (and (consp function) (member (car function) '(function lambda)))
`(%funcall ,function ,@args)
(let ((name (constant-global-fun-name function)))
(if name
`(%funcall ,function ,@args)
(let ((name (constant-global-fun-name function)))
(if name
@@
-585,6
+585,11
@@
be a lambda expression."
(deftransform %coerce-callable-to-fun ((thing) (function) *)
"optimize away possible call to FDEFINITION at runtime"
'thing)
(deftransform %coerce-callable-to-fun ((thing) (function) *)
"optimize away possible call to FDEFINITION at runtime"
'thing)
+
+(define-source-transform %coerce-callable-to-fun (thing)
+ (if (and (consp thing) (member (car thing) '(function lambda)))
+ thing
+ (values nil t)))
\f
;;;; LET and LET*
;;;;
\f
;;;; LET and LET*
;;;;
@@
-700,7
+705,7
@@
form to reference any of the previous VARS."
#!+sb-doc
"LOCALLY declaration* form*
#!+sb-doc
"LOCALLY declaration* form*
-Sequentially evaluate the FORMS in a lexical environment where the the
+Sequentially evaluate the FORMS in a lexical environment where the
DECLARATIONS have effect. If LOCALLY is a top level form, then the FORMS are
also processed as top level forms."
(ir1-translate-locally body start next result))
DECLARATIONS have effect. If LOCALLY is a top level form, then the FORMS are
also processed as top level forms."
(ir1-translate-locally body start next result))
@@
-1051,6
+1056,7
@@
due to normal completion or a non-local exit such as THROW)."
(%unwind-protect (%escape-fun ,exit-tag)
(%cleanup-fun ,cleanup-fun))
(return-from ,drop-thru-tag ,protected)))
(%unwind-protect (%escape-fun ,exit-tag)
(%cleanup-fun ,cleanup-fun))
(return-from ,drop-thru-tag ,protected)))
+ (declare (optimize (insert-debug-catch 0)))
(,cleanup-fun)
(%continue-unwind ,next ,start ,count)))))))
\f
(,cleanup-fun)
(%continue-unwind ,next ,start ,count)))))))
\f