1.0.41.31: ppc: Update backend to use TL symbol storage as appropriate.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 8 Aug 2010 01:11:41 +0000 (01:11 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 8 Aug 2010 01:11:41 +0000 (01:11 +0000)
  * 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
src/compiler/ppc/nlx.lisp
version.lisp-expr

index d6201a7..e6839a9 100644 (file)
     (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)
   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
 
   (declare (ignore start count))
 
-  (load-symbol-value catch *current-catch-block*)
+  (load-tl-symbol-value catch *current-catch-block*)
 
   loop
 
index 7636495..783fcd4 100644 (file)
@@ -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)))
   (: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)
   (: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)
     (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)))
 
 (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)))
 
 \f
 ;;;; NLX entry VOPs:
index 3c02e38..704a9c1 100644 (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.41.30"
+"1.0.41.31"