From b254f1478ded7debd4e42cb7294d6e1a6d75affb Mon Sep 17 00:00:00 2001 From: Alastair Bridgewater Date: Sun, 8 Aug 2010 01:11:41 +0000 Subject: [PATCH] 1.0.41.31: ppc: Update backend to use TL symbol storage as appropriate. * This turned out to be all of the uses of the original -symbol-value access macros... And all to do with NLX, to two symbols not tied to particular slots in the thread structure. --- src/assembly/ppc/assem-rtns.lisp | 6 +++--- src/compiler/ppc/nlx.lisp | 26 +++++++++++++++----------- version.lisp-expr | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/assembly/ppc/assem-rtns.lisp b/src/assembly/ppc/assem-rtns.lisp index d6201a7..e6839a9 100644 --- a/src/assembly/ppc/assem-rtns.lisp +++ b/src/assembly/ppc/assem-rtns.lisp @@ -157,7 +157,7 @@ (inst cmpwi block 0) (inst beq error)) - (load-symbol-value cur-uwp *current-unwind-protect-block*) + (load-tl-symbol-value cur-uwp *current-unwind-protect-block*) (loadw target-uwp block unwind-block-current-uwp-slot) (inst cmpw cur-uwp target-uwp) (inst bne do-uwp) @@ -174,7 +174,7 @@ DO-UWP (loadw next-uwp cur-uwp unwind-block-current-uwp-slot) - (store-symbol-value next-uwp *current-unwind-protect-block*) + (store-tl-symbol-value next-uwp *current-unwind-protect-block* cfp-tn) (inst b do-exit)) (define-assembly-routine (throw @@ -187,7 +187,7 @@ (declare (ignore start count)) - (load-symbol-value catch *current-catch-block*) + (load-tl-symbol-value catch *current-catch-block*) loop diff --git a/src/compiler/ppc/nlx.lisp b/src/compiler/ppc/nlx.lisp index 7636495..783fcd4 100644 --- a/src/compiler/ppc/nlx.lisp +++ b/src/compiler/ppc/nlx.lisp @@ -38,7 +38,7 @@ (nsp :scs (descriptor-reg))) (:vop-var vop) (:generator 13 - (load-symbol-value catch *current-catch-block*) + (load-tl-symbol-value catch *current-catch-block*) (let ((cur-nfp (current-nfp-tn vop))) (when cur-nfp (move nfp cur-nfp))) @@ -48,9 +48,10 @@ (:args (catch :scs (descriptor-reg)) (nfp :scs (descriptor-reg)) (nsp :scs (descriptor-reg))) + #!+sb-thread (:temporary (:scs (any-reg)) temp) (:vop-var vop) (:generator 10 - (store-symbol-value catch *current-catch-block*) + (store-tl-symbol-value catch *current-catch-block* temp) (let ((cur-nfp (current-nfp-tn vop))) (when cur-nfp (move cur-nfp nfp))) @@ -81,7 +82,7 @@ (:temporary (:scs (non-descriptor-reg)) ndescr) (:generator 22 (inst addi block cfp-tn (* (tn-offset tn) n-word-bytes)) - (load-symbol-value temp *current-unwind-protect-block*) + (load-tl-symbol-value temp *current-unwind-protect-block*) (storew temp block unwind-block-current-uwp-slot) (storew cfp-tn block unwind-block-current-cont-slot) (storew code-tn block unwind-block-current-code-slot) @@ -102,7 +103,7 @@ (:temporary (:scs (non-descriptor-reg)) ndescr) (:generator 44 (inst addi result cfp-tn (* (tn-offset tn) n-word-bytes)) - (load-symbol-value temp *current-unwind-protect-block*) + (load-tl-symbol-value temp *current-unwind-protect-block*) (storew temp result catch-block-current-uwp-slot) (storew cfp-tn result catch-block-current-cont-slot) (storew code-tn result catch-block-current-code-slot) @@ -110,9 +111,9 @@ (storew temp result catch-block-entry-pc-slot) (storew tag result catch-block-tag-slot) - (load-symbol-value temp *current-catch-block*) + (load-tl-symbol-value temp *current-catch-block*) (storew temp result catch-block-previous-catch-slot) - (store-symbol-value result *current-catch-block*) + (store-tl-symbol-value result *current-catch-block* temp) (move block result))) @@ -123,28 +124,31 @@ (define-vop (set-unwind-protect) (:args (tn)) (:temporary (:scs (descriptor-reg)) new-uwp) + #!+sb-thread (:temporary (:scs (any-reg)) temp) (:generator 7 (inst addi new-uwp cfp-tn (* (tn-offset tn) n-word-bytes)) - (store-symbol-value new-uwp *current-unwind-protect-block*))) + (store-tl-symbol-value new-uwp *current-unwind-protect-block* temp))) (define-vop (unlink-catch-block) (:temporary (:scs (any-reg)) block) + #!+sb-thread (:temporary (:scs (any-reg)) temp) (:policy :fast-safe) (:translate %catch-breakup) (:generator 17 - (load-symbol-value block *current-catch-block*) + (load-tl-symbol-value block *current-catch-block*) (loadw block block catch-block-previous-catch-slot) - (store-symbol-value block *current-catch-block*))) + (store-tl-symbol-value block *current-catch-block* temp))) (define-vop (unlink-unwind-protect) (:temporary (:scs (any-reg)) block) + #!+sb-thread (:temporary (:scs (any-reg)) temp) (:policy :fast-safe) (:translate %unwind-protect-breakup) (:generator 17 - (load-symbol-value block *current-unwind-protect-block*) + (load-tl-symbol-value block *current-unwind-protect-block*) (loadw block block unwind-block-current-uwp-slot) - (store-symbol-value block *current-unwind-protect-block*))) + (store-tl-symbol-value block *current-unwind-protect-block* temp))) ;;;; NLX entry VOPs: diff --git a/version.lisp-expr b/version.lisp-expr index 3c02e38..704a9c1 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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.41.30" +"1.0.41.31" -- 1.7.10.4