object *resolve_forwarding(object *untagged) { parent->check_data_pointer(untagged); /* is there another forwarding pointer? */ while(untagged->forwarding_pointer_p()) untagged = untagged->forwarding_pointer(); /* we've found the destination */ return untagged; }
gc_bignum(bignum **addr_, factor_vm *vm) : addr(addr_), parent_vm(vm) { if(*addr_) parent_vm->check_data_pointer(*addr_); parent_vm->gc_bignums.push_back((cell)addr); }