:disp (- other-pointer-lowtag)))
(inst test al-tn lowtag-mask)
(inst jmp :ne nope)
- (loadw eax-tn value 0 other-pointer-lowtag)
- (inst cmp eax-tn (+ (ash 1 n-widetag-bits) bignum-widetag))
+ (inst cmp (make-ea-for-object-slot value 0 other-pointer-lowtag)
+ (+ (ash 1 n-widetag-bits) bignum-widetag))
(inst jmp (if not-p :ne :e) target))
NOT-TARGET))
:disp (- other-pointer-lowtag)))
(inst test al-tn lowtag-mask)
(inst jmp :ne nope)
- (loadw eax-tn value 0 other-pointer-lowtag)
- (inst cmp eax-tn (+ (ash 1 n-widetag-bits) bignum-widetag))
+ (inst cmp (make-ea-for-object-slot value 0 other-pointer-lowtag)
+ (+ (ash 1 n-widetag-bits) bignum-widetag))
(inst jmp :ne nope))
YEP
(move result value)))
;; Get the second digit.
(loadw eax-tn value (1+ bignum-digits-offset) other-pointer-lowtag)
;; All zeros, its an (unsigned-byte 32).
- (inst or eax-tn eax-tn)
+ (inst test eax-tn eax-tn)
(inst jmp :z yep)
(inst jmp nope)
;; positive implies (unsigned-byte 32).
(emit-label fixnum)
- (inst or eax-tn eax-tn)
+ (inst test eax-tn eax-tn)
(inst jmp (if not-p :s :ns) target)
(emit-label not-target)))))
;; Get the second digit.
(loadw eax-tn value (1+ bignum-digits-offset) other-pointer-lowtag)
;; All zeros, its an (unsigned-byte 32).
- (inst or eax-tn eax-tn)
+ (inst test eax-tn eax-tn)
(inst jmp :z yep)
(inst jmp nope)
;; positive implies (unsigned-byte 32).
(emit-label fixnum)
- (inst or eax-tn eax-tn)
+ (inst test eax-tn eax-tn)
(inst jmp :s nope)
(emit-label yep)