mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
1.0.10.47: proper fix for "high-debug-known-function-inlining"
* Add ALLOW-INSTRUMENTING slot to CLAMBDA, taking it's value from *ALLOW-INSTRUMENTING*. * Require LAMBDA-ALLOW-INSTRUMENTING to be true for emission of BIND/UNBIND-SENTINEL. * Remove the earlier KLUDGE workaround.
This commit is contained in:
parent
b2a8ffe548
commit
e066009ccd
1
NEWS
1
NEWS
|
|
@ -28,6 +28,7 @@ changes in sbcl-1.0.11 relative to sbcl-1.0.10:
|
||||||
* bug fix: instances of non-standard metaclasses using standard
|
* bug fix: instances of non-standard metaclasses using standard
|
||||||
instance structure protocol sometimes missed the slot type checks
|
instance structure protocol sometimes missed the slot type checks
|
||||||
in safe code.
|
in safe code.
|
||||||
|
* bug fix: known functions can be inlined in high-debug code.
|
||||||
|
|
||||||
changes in sbcl-1.0.10 relative to sbcl-1.0.9:
|
changes in sbcl-1.0.10 relative to sbcl-1.0.9:
|
||||||
* minor incompatible change: the MSI installer on Windows no longer
|
* minor incompatible change: the MSI installer on Windows no longer
|
||||||
|
|
|
||||||
|
|
@ -843,12 +843,6 @@
|
||||||
(:inline t)
|
(:inline t)
|
||||||
(:no-chance nil)
|
(:no-chance nil)
|
||||||
((nil :maybe-inline) (policy call (zerop space))))
|
((nil :maybe-inline) (policy call (zerop space))))
|
||||||
;; FIXME & KLUDGE: This LET-CONVERSION check was added as a
|
|
||||||
;; half-assed workaround for the bug for which the test
|
|
||||||
;; case :HIGH-DEBUG-KNOWN-FUNCTION-INLINING checks in
|
|
||||||
;; compiler.pure.lisp. The _real_ culprit seems to be
|
|
||||||
;; the insertion of BIND/UNBIND-SENTINEL vops.
|
|
||||||
(policy call (plusp let-conversion))
|
|
||||||
(defined-fun-p leaf)
|
(defined-fun-p leaf)
|
||||||
(defined-fun-inline-expansion leaf)
|
(defined-fun-inline-expansion leaf)
|
||||||
(let ((fun (defined-fun-functional leaf)))
|
(let ((fun (defined-fun-functional leaf)))
|
||||||
|
|
|
||||||
|
|
@ -1181,8 +1181,9 @@
|
||||||
(ir2-physenv-return-pc env))
|
(ir2-physenv-return-pc env))
|
||||||
|
|
||||||
#!+unwind-to-frame-and-call-vop
|
#!+unwind-to-frame-and-call-vop
|
||||||
(when (and (policy fun (>= insert-debug-catch 2))
|
(when (and (lambda-allow-instrumenting fun)
|
||||||
(lambda-return fun))
|
(lambda-return fun)
|
||||||
|
(policy fun (>= insert-debug-catch 2)))
|
||||||
(vop sb!vm::bind-sentinel node block))
|
(vop sb!vm::bind-sentinel node block))
|
||||||
|
|
||||||
(let ((lab (gen-label)))
|
(let ((lab (gen-label)))
|
||||||
|
|
@ -1211,7 +1212,8 @@
|
||||||
(return-pc (ir2-physenv-return-pc env))
|
(return-pc (ir2-physenv-return-pc env))
|
||||||
(returns (tail-set-info (lambda-tail-set fun))))
|
(returns (tail-set-info (lambda-tail-set fun))))
|
||||||
#!+unwind-to-frame-and-call-vop
|
#!+unwind-to-frame-and-call-vop
|
||||||
(when (policy fun (>= insert-debug-catch 2))
|
(when (and (lambda-allow-instrumenting fun)
|
||||||
|
(policy fun (>= insert-debug-catch 2)))
|
||||||
(vop sb!vm::unbind-sentinel node block))
|
(vop sb!vm::unbind-sentinel node block))
|
||||||
(cond
|
(cond
|
||||||
((and (eq (return-info-kind returns) :fixed)
|
((and (eq (return-info-kind returns) :fixed)
|
||||||
|
|
|
||||||
|
|
@ -962,7 +962,8 @@
|
||||||
(call-lexenv nil :type (or lexenv null))
|
(call-lexenv nil :type (or lexenv null))
|
||||||
;; list of embedded lambdas
|
;; list of embedded lambdas
|
||||||
(children nil :type list)
|
(children nil :type list)
|
||||||
(parent nil :type (or clambda null)))
|
(parent nil :type (or clambda null))
|
||||||
|
(allow-instrumenting *allow-instrumenting* :type boolean))
|
||||||
(defprinter (clambda :conc-name lambda- :identity t)
|
(defprinter (clambda :conc-name lambda- :identity t)
|
||||||
%source-name
|
%source-name
|
||||||
%debug-name
|
%debug-name
|
||||||
|
|
|
||||||
|
|
@ -17,4 +17,4 @@
|
||||||
;;; checkins which aren't released. (And occasionally for internal
|
;;; checkins which aren't released. (And occasionally for internal
|
||||||
;;; versions, especially for internal versions off the main CVS
|
;;; versions, especially for internal versions off the main CVS
|
||||||
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
|
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
|
||||||
"1.0.10.46"
|
"1.0.10.47"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue