version 1.5, 2002/07/24 08:00:12 |
version 1.6, 2003/06/24 05:11:34 |
Line 437 void GC_init_explicit_typing() |
|
Line 437 void GC_init_explicit_typing() |
|
for (; bm != 0; bm >>= 1, current_p++) { |
for (; bm != 0; bm >>= 1, current_p++) { |
if (bm & 1) { |
if (bm & 1) { |
current = *current_p; |
current = *current_p; |
|
FIXUP_POINTER(current); |
if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) { |
if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) { |
PUSH_CONTENTS((ptr_t)current, mark_stack_ptr, |
PUSH_CONTENTS((ptr_t)current, mark_stack_ptr, |
mark_stack_limit, current_p, exit1); |
mark_stack_limit, current_p, exit1); |
|
|
if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) { |
if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) { |
FASTUNLOCK(); |
FASTUNLOCK(); |
op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind); |
op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind); |
if (0 == op) return(0); |
if (0 == op) return 0; |
# ifdef MERGE_SIZES |
# ifdef MERGE_SIZES |
lw = GC_size_map[lb]; /* May have been uninitialized. */ |
lw = GC_size_map[lb]; /* May have been uninitialized. */ |
# endif |
# endif |
} else { |
} else { |
*opp = obj_link(op); |
*opp = obj_link(op); |
|
|
FASTUNLOCK(); |
FASTUNLOCK(); |
op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind); |
op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind); |
# ifdef MERGE_SIZES |
# ifdef MERGE_SIZES |
lw = GC_size_map[lb]; /* May have been uninitialized. */ |
lw = GC_size_map[lb]; /* May have been uninitialized. */ |
# endif |
# endif |
} else { |
} else { |
*opp = obj_link(op); |
*opp = obj_link(op); |