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:
Nikodemus Siivola 2007-10-18 12:56:51 +00:00
parent b2a8ffe548
commit e066009ccd
5 changed files with 9 additions and 11 deletions

1
NEWS
View file

@ -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
instance structure protocol sometimes missed the slot type checks
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:
* minor incompatible change: the MSI installer on Windows no longer

View file

@ -843,12 +843,6 @@
(:inline t)
(:no-chance nil)
((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-inline-expansion leaf)
(let ((fun (defined-fun-functional leaf)))

View file

@ -1181,8 +1181,9 @@
(ir2-physenv-return-pc env))
#!+unwind-to-frame-and-call-vop
(when (and (policy fun (>= insert-debug-catch 2))
(lambda-return fun))
(when (and (lambda-allow-instrumenting fun)
(lambda-return fun)
(policy fun (>= insert-debug-catch 2)))
(vop sb!vm::bind-sentinel node block))
(let ((lab (gen-label)))
@ -1211,7 +1212,8 @@
(return-pc (ir2-physenv-return-pc env))
(returns (tail-set-info (lambda-tail-set fun))))
#!+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))
(cond
((and (eq (return-info-kind returns) :fixed)

View file

@ -962,7 +962,8 @@
(call-lexenv nil :type (or lexenv null))
;; list of embedded lambdas
(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)
%source-name
%debug-name

View file

@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
"1.0.10.46"
"1.0.10.47"