- (move ptr object)
- (move count zero-tn)
-
- LOOP
-
- (inst beq ptr null-tn done)
- (inst nop)
-
- (inst and temp ptr lowtag-mask)
- (inst xor temp list-pointer-lowtag)
- (inst bne temp zero-tn not-list)
- (inst nop)
-
- (loadw ptr ptr cons-cdr-slot list-pointer-lowtag)
- (inst b loop)
- (inst addu count count (fixnumize 1))
-
- NOT-LIST
- (cerror-call vop done object-not-list-error ptr)
-
- DONE
- (move result count)))
-