From: Alastair Bridgewater Date: Sun, 8 Aug 2010 01:13:20 +0000 (+0000) Subject: 1.0.41.37: ppc: allocation fixes for threaded builds. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=dad60222de85068322fbd0214b9c715053510f4d;p=sbcl.git 1.0.41.37: ppc: allocation fixes for threaded builds. * Use the alloc region in the thread structure instead of the global boxed_region. --- diff --git a/src/compiler/ppc/macros.lisp b/src/compiler/ppc/macros.lisp index bb8a734..7921078 100644 --- a/src/compiler/ppc/macros.lisp +++ b/src/compiler/ppc/macros.lisp @@ -211,14 +211,23 @@ (t (move ,temp-tn ,size))) + #!-sb-thread (inst lr ,flag-tn (make-fixup "boxed_region" :foreign)) + #!-sb-thread (inst lwz ,result-tn ,flag-tn 0) + #!+sb-thread + (inst lwz ,result-tn thread-base-tn (* thread-alloc-region-slot + n-word-bytes)) ;; we can optimize this to only use one fixup here, once we get ;; it working ;; (inst lr ,flag-tn (make-fixup "boxed_region" :foreign 4)) ;; (inst lwz ,flag-tn ,flag-tn 0) + #!-sb-thread (inst lwz ,flag-tn ,flag-tn 4) + #!+sb-thread + (inst lwz ,flag-tn thread-base-tn (* (1+ thread-alloc-region-slot) + n-word-bytes)) (without-scheduling () ;; CAUTION: The C code depends on the exact order of @@ -239,8 +248,13 @@ (inst b ,fix-addr) (emit-label ,inline-alloc) + #!-sb-thread (inst lr ,flag-tn (make-fixup "boxed_region" :foreign)) + #!-sb-thread (inst stw ,result-tn ,flag-tn 0) + #!+sb-thread + (inst stw ,result-tn thread-base-tn (* thread-alloc-region-slot + n-word-bytes)) (emit-label ,fix-addr) ;; At this point, result-tn points at the end of the object. diff --git a/version.lisp-expr b/version.lisp-expr index 21900b7..b85c36c 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.36" +"1.0.41.37"