inline object *factorvm::allot_zone(zone *z, cell a) { cell h = z->here; z->here = h + align8(a); object *obj = (object *)h; allot_barrier(obj); return obj; }
/* Since the image might have been saved with a different base address than where it is loaded, we need to fix up pointers in the image. */ void relocate_data() { CELL relocating; CELL i; for(i = 0; i < USER_ENV; i++) data_fixup(&userenv[i]); data_fixup(&T); data_fixup(&bignum_zero); data_fixup(&bignum_pos_one); data_fixup(&bignum_neg_one); F_ZONE *tenured = &data_heap->generations[TENURED]; for(relocating = tenured->start; relocating < tenured->here; relocating += untagged_object_size(relocating)) { allot_barrier(relocating); relocate_object(relocating); } }
/* Since the image might have been saved with a different base address than where it is loaded, we need to fix up pointers in the image. */ void relocate_data() { cell relocating; cell i; for(i = 0; i < USER_ENV; i++) data_fixup(&userenv[i]); data_fixup(&T); data_fixup(&bignum_zero); data_fixup(&bignum_pos_one); data_fixup(&bignum_neg_one); zone *tenured = &data->generations[data->tenured()]; for(relocating = tenured->start; relocating < tenured->here; relocating += untagged_object_size((object *)relocating)) { object *obj = (object *)relocating; allot_barrier(obj); relocate_object(obj); } }