X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Flate-extensions.lisp;h=890fd43f8ac40fbc10dd4af08e3b6b61761b8328;hb=e62bb3a4b9633dbd898fca05cc4af3dd0a16e0aa;hp=947d45046c5c2ea457a96200732eb2f2e779c41c;hpb=74f749f68b1163d43ec96d63d00144d2b146deab;p=sbcl.git diff --git a/src/code/late-extensions.lisp b/src/code/late-extensions.lisp index 947d450..890fd43 100644 --- a/src/code/late-extensions.lisp +++ b/src/code/late-extensions.lisp @@ -177,7 +177,7 @@ EXPERIMENTAL: Interface subject to change." (aref (when (cddr args) (invalid-place)) - #!+(or x86-64) + #!+(or x86 x86-64 ppc) (with-unique-names (array) `(let ((,array (the (simple-array sb!ext:word (*)) ,(car args)))) (%array-atomic-incf/word @@ -189,7 +189,7 @@ EXPERIMENTAL: Interface subject to change." `(the sb!vm:signed-word ,diff)) (atomic-decf `(- (the sb!vm:signed-word ,diff)))))))) - #!-(or x86-64) + #!-(or x86 x86-64 ppc) (with-unique-names (array index old-value) (let ((incremented-value (ecase name @@ -289,13 +289,18 @@ EXPERIMENTAL: Interface subject to change." (expand-atomic-frob 'atomic-decf place diff)) ;; Interpreter stubs for ATOMIC-INCF. -#!+(or x86-64) +#!+(or x86 x86-64 ppc) (defun %array-atomic-incf/word (array index diff) (declare (type (simple-array word (*)) array) (fixnum index) (type sb!vm:signed-word diff)) (%array-atomic-incf/word array index diff)) +(defun spin-loop-hint () + #!+sb-doc + "Hints the processor that the current thread is spin-looping." + (spin-loop-hint)) + (defun call-hooks (kind hooks &key (on-error :error)) (dolist (hook hooks) (handler-case