0.9.5.66:
authorJuho Snellman <jsnell@iki.fi>
Sat, 15 Oct 2005 14:02:34 +0000 (14:02 +0000)
committerJuho Snellman <jsnell@iki.fi>
Sat, 15 Oct 2005 14:02:34 +0000 (14:02 +0000)
Fix the umpteenth sign-extension problem on x86-64 (invalid
        types for SIGN-EXTEND VOP).

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

index 1ab967a..a45217f 100644 (file)
 ;;; The ABI specifies that signed short/int's are returned as 32-bit
 ;;; values. Negative values need to be sign-extended to 64-bits (done
 ;;; in a :NATURALIZE-GEN alien-type-method).
-(defknown sign-extend (fixnum) fixnum (foldable flushable movable))
+(defknown sign-extend ((signed-byte 64)) (signed-byte 64)
+          (foldable flushable movable))
 
 (define-vop (sign-extend)
   (:translate sign-extend)
   (:policy :fast-safe)
-  (:args (val :scs (any-reg)))
-  (:arg-types fixnum)
-  (:results (res :scs (any-reg)))
-  (:result-types fixnum)
+  (:args (val :scs (signed-reg)))
+  (:arg-types signed-byte-64)
+  (:results (res :scs (signed-reg)))
+  (:result-types signed-byte-64)
   (:generator 1
    (inst movsxd res
          (make-random-tn :kind :normal
index 45fb31d..623a62a 100644 (file)
 
 ;;; tests for a sign extension problem in callback argument handling on x86-64
 
-(with-test (:name sign-extension :fails-on :x86-64)
+(with-test (:name sign-extension)
   (let ((*add-two-ints*
          (sb-alien::alien-callback (function int int int) #'+)))
     (assert (= (alien-funcall *add-two-ints* #x-80000000 1)
index 4a9ae38..44d0379 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".)
-"0.9.5.65"
+"0.9.5.66"