\f
(defun %test-fixnum (value target not-p &key temp)
(assemble ()
- (inst and value 3 temp)
+ (inst and value fixnum-tag-mask temp)
(if not-p
(inst bne temp target)
(inst beq temp target))))
(defun %test-fixnum-and-headers (value target not-p headers &key temp)
(let ((drop-through (gen-label)))
(assemble ()
- (inst and value 3 temp)
+ (inst and value fixnum-tag-mask temp)
(inst beq temp (if not-p drop-through target)))
(%test-headers value target not-p nil headers
:drop-through drop-through :temp temp)))
(inst bne temp target)
(inst beq temp target))))
-(defun %test-lowtag-and-headers (value target not-p lowtag
- function-p headers &key temp)
- (let ((drop-through (gen-label)))
- (%test-lowtag value (if not-p drop-through target) nil lowtag :temp temp)
- (%test-headers value target not-p function-p headers
- :drop-through drop-through :temp temp)))
-
(defun %test-headers (value target not-p function-p headers
&key (drop-through (gen-label)) temp)
(let ((lowtag (if function-p fun-pointer-lowtag other-pointer-lowtag)))
(values not-target target)
(values target not-target))
(assemble ()
- (inst and value 3 temp)
+ (inst and value fixnum-tag-mask temp)
(inst beq temp yep)
(inst and value lowtag-mask temp)
(inst xor temp other-pointer-lowtag temp)
(values target not-target))
(assemble ()
;; Is it a fixnum?
- (inst and value 3 temp1)
+ (inst and value fixnum-tag-mask temp1)
(inst move value temp)
(inst beq temp1 fixnum)