Loading package-data-list.lisp-expr +3 −1 Original line number Diff line number Diff line Loading @@ -276,7 +276,9 @@ of SBCL which maintained the CMU-CL-style split into two packages.)" "GET-VECTOR-SUBTYPE" "GET-TOPLEVELISH-FILE-INFO" "HALT" "IF-EQ" "INLINE-SYNTACTIC-CLOSURE-LAMBDA" "IF-EQ" "IMMEDIATE-TN-P" "INLINE-SYNTACTIC-CLOSURE-LAMBDA" "INSERT-STEP-CONDITIONS" "IR2-COMPONENT-CONSTANTS" "IR2-CONVERT" "IR2-PHYSENV-NUMBER-STACK-P" Loading src/compiler/tn.lisp +10 −0 Original line number Diff line number Diff line Loading @@ -445,6 +445,16 @@ (aver (eq (tn-kind tn) :constant)) (constant-value (tn-leaf tn))) (defun immediate-tn-p (tn) (declare (type tn tn)) (let ((leaf (tn-leaf tn))) ;; Leaves with KIND :CONSTANT can have NIL as the leaf if they ;; represent load time values. (and leaf (eq (tn-kind tn) :constant) (eq (immediate-constant-sc (constant-value leaf)) (sc-number-or-lose 'sb!vm::immediate))))) ;;; Force TN to be allocated in a SC that doesn't need to be saved: an ;;; unbounded non-save-p SC. We don't actually make it a real "restricted" TN, ;;; but since we change the SC to an unbounded one, we should always succeed in Loading src/compiler/x86-64/pred.lisp +0 −4 Original line number Diff line number Diff line Loading @@ -103,10 +103,6 @@ (let ((scn (sc-number-or-lose representation))) (labels ((make-tn () (make-representation-tn ptype scn)) (immediate-tn-p (tn) (and (eq (sb!c::tn-kind tn) :constant) (eq (sb!c::immediate-constant-sc (tn-value tn)) (sc-number-or-lose 'immediate)))) (frob-tn (tn) (if (immediate-tn-p tn) tn Loading src/compiler/x86/pred.lisp +0 −4 Original line number Diff line number Diff line Loading @@ -91,10 +91,6 @@ (let ((scn (sc-number-or-lose representation))) (labels ((make-tn () (make-representation-tn ptype scn)) (immediate-tn-p (tn) (and (eq (sb!c::tn-kind tn) :constant) (eq (sb!c::immediate-constant-sc (tn-value tn)) (sc-number-or-lose 'immediate)))) (frob-tn (tn) (if (immediate-tn-p tn) tn Loading tests/compiler.pure.lisp +5 −0 Original line number Diff line number Diff line Loading @@ -2691,6 +2691,11 @@ t) t))) (with-test (:name :regression-1.0.24.37) (compile nil '(lambda (&key (test (constantly t))) (when (funcall test) :quux)))) ;;; Attempt to test a decent cross section of conditions ;;; and values types to move conditionally. (macrolet Loading Loading
package-data-list.lisp-expr +3 −1 Original line number Diff line number Diff line Loading @@ -276,7 +276,9 @@ of SBCL which maintained the CMU-CL-style split into two packages.)" "GET-VECTOR-SUBTYPE" "GET-TOPLEVELISH-FILE-INFO" "HALT" "IF-EQ" "INLINE-SYNTACTIC-CLOSURE-LAMBDA" "IF-EQ" "IMMEDIATE-TN-P" "INLINE-SYNTACTIC-CLOSURE-LAMBDA" "INSERT-STEP-CONDITIONS" "IR2-COMPONENT-CONSTANTS" "IR2-CONVERT" "IR2-PHYSENV-NUMBER-STACK-P" Loading
src/compiler/tn.lisp +10 −0 Original line number Diff line number Diff line Loading @@ -445,6 +445,16 @@ (aver (eq (tn-kind tn) :constant)) (constant-value (tn-leaf tn))) (defun immediate-tn-p (tn) (declare (type tn tn)) (let ((leaf (tn-leaf tn))) ;; Leaves with KIND :CONSTANT can have NIL as the leaf if they ;; represent load time values. (and leaf (eq (tn-kind tn) :constant) (eq (immediate-constant-sc (constant-value leaf)) (sc-number-or-lose 'sb!vm::immediate))))) ;;; Force TN to be allocated in a SC that doesn't need to be saved: an ;;; unbounded non-save-p SC. We don't actually make it a real "restricted" TN, ;;; but since we change the SC to an unbounded one, we should always succeed in Loading
src/compiler/x86-64/pred.lisp +0 −4 Original line number Diff line number Diff line Loading @@ -103,10 +103,6 @@ (let ((scn (sc-number-or-lose representation))) (labels ((make-tn () (make-representation-tn ptype scn)) (immediate-tn-p (tn) (and (eq (sb!c::tn-kind tn) :constant) (eq (sb!c::immediate-constant-sc (tn-value tn)) (sc-number-or-lose 'immediate)))) (frob-tn (tn) (if (immediate-tn-p tn) tn Loading
src/compiler/x86/pred.lisp +0 −4 Original line number Diff line number Diff line Loading @@ -91,10 +91,6 @@ (let ((scn (sc-number-or-lose representation))) (labels ((make-tn () (make-representation-tn ptype scn)) (immediate-tn-p (tn) (and (eq (sb!c::tn-kind tn) :constant) (eq (sb!c::immediate-constant-sc (tn-value tn)) (sc-number-or-lose 'immediate)))) (frob-tn (tn) (if (immediate-tn-p tn) tn Loading
tests/compiler.pure.lisp +5 −0 Original line number Diff line number Diff line Loading @@ -2691,6 +2691,11 @@ t) t))) (with-test (:name :regression-1.0.24.37) (compile nil '(lambda (&key (test (constantly t))) (when (funcall test) :quux)))) ;;; Attempt to test a decent cross section of conditions ;;; and values types to move conditionally. (macrolet Loading