- (inst extru object 31 3 result)
- (inst comib := other-pointer-lowtag result other-ptr :nullify t)
- (inst comib := fun-pointer-lowtag result function-ptr :nullify t)
- (inst bb t object 31 done :nullify t)
- (inst extru object 31 2 result :=)
- (inst extru object 31 8 result)
- (inst nop :tr)
+ (inst li lowtag-mask temp1)
+ (inst li other-pointer-lowtag temp2)
+ (inst and temp1 object temp1)
+ (inst xor temp1 temp2 temp1)
+ (inst comb := temp1 zero-tn OTHER-PTR)
+ (inst li (logxor other-pointer-lowtag fun-pointer-lowtag) temp2)
+ (inst xor temp1 temp2 temp1)
+ (inst comb := temp1 zero-tn FUNCTION-PTR)
+ (inst li fixnum-tag-mask temp1) ; pick off fixnums
+ (inst li 1 temp2)
+ (inst and temp1 object result)
+ (inst comb := result zero-tn DONE)
+
+ (inst and object temp2 result)
+ (inst comb :<> result zero-tn LOWTAG-ONLY :nullify t)
+
+ ;; must be an other immediate
+ (inst li widetag-mask temp2)
+ (inst b DONE)
+ (inst and temp2 object result)