1.0.12.9: don't limit TOUCH-OBJECT to descriptor-regs
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 30 Nov 2007 17:46:09 +0000 (17:46 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 30 Nov 2007 17:46:09 +0000 (17:46 +0000)
* Allows objects known to be FIXNUM to be pinned. Question:
  why is a FIXNUM not acceptable to a DESCRIPTOR-REG?

src/compiler/x86-64/c-call.lisp
src/compiler/x86/c-call.lisp
tests/compiler.pure.lisp
version.lisp-expr

index 0589617..afbe857 100644 (file)
 ;;; that GC won't move them while foreign functions go to work.
 (define-vop (touch-object)
   (:translate touch-object)
-  (:args (object :scs (descriptor-reg)))
+  (:args (object))
   (:ignore object)
   (:policy :fast-safe)
   (:arg-types t)
index 8c756b3..023c99b 100644 (file)
 ;;; that GC won't move them while foreign functions go to work.
 (define-vop (touch-object)
   (:translate touch-object)
-  (:args (object :scs (descriptor-reg)))
+  (:args (object))
   (:ignore object)
   (:policy :fast-safe)
   (:arg-types t)
index 5d12ac0..ce69513 100644 (file)
                      t)
                    t
                    (error "~a" y)))))
+
+;;; Compiling W-P-O when the pinned objects are known to be fixnums
+;;; or characters.
+(compile nil '(lambda (x y)
+               (declare (fixnum y) (character x))
+               (sb-sys:with-pinned-objects (x y)
+                 (some-random-function))))
index 15217fe..8ab1483 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.12.8"
+"1.0.12.9"