version 1.1, 1999/11/27 10:58:33 |
version 1.1.1.2, 2000/12/01 14:48:25 |
Line 175 GC_descr GC_double_descr(descriptor, nwords) |
|
Line 175 GC_descr GC_double_descr(descriptor, nwords) |
|
register GC_descr descriptor; |
register GC_descr descriptor; |
register word nwords; |
register word nwords; |
{ |
{ |
if (descriptor && DS_TAGS == DS_LENGTH) { |
if (descriptor & DS_TAGS == DS_LENGTH) { |
descriptor = GC_bm_table[BYTES_TO_WORDS((word)descriptor)]; |
descriptor = GC_bm_table[BYTES_TO_WORDS((word)descriptor)]; |
}; |
}; |
descriptor |= (descriptor & ~DS_TAGS) >> nwords; |
descriptor |= (descriptor & ~DS_TAGS) >> nwords; |
|
|
if (bm & 1) { |
if (bm & 1) { |
current = *current_p; |
current = *current_p; |
if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) { |
if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) { |
PUSH_CONTENTS(current, mark_stack_ptr, |
PUSH_CONTENTS((ptr_t)current, mark_stack_ptr, |
mark_stack_limit, current_p, exit1); |
mark_stack_limit, current_p, exit1); |
} |
} |
} |
} |
|
|
# endif |
# endif |
} else { |
} else { |
*opp = obj_link(op); |
*opp = obj_link(op); |
|
obj_link(op) = 0; |
GC_words_allocd += lw; |
GC_words_allocd += lw; |
FASTUNLOCK(); |
FASTUNLOCK(); |
} |
} |
|
|
# endif |
# endif |
} else { |
} else { |
*opp = obj_link(op); |
*opp = obj_link(op); |
|
obj_link(op) = 0; |
GC_words_allocd += lw; |
GC_words_allocd += lw; |
FASTUNLOCK(); |
FASTUNLOCK(); |
} |
} |
|
|
lw = BYTES_TO_WORDS(GC_size(op)); |
lw = BYTES_TO_WORDS(GC_size(op)); |
} |
} |
if (op != NULL) |
if (op != NULL) |
((word *)op)[lw - 1] = d; |
((word *)op)[lw - 1] = d; |
return((GC_PTR) op); |
return((GC_PTR) op); |
} |
} |
|
|
|
|
# endif |
# endif |
} else { |
} else { |
*opp = obj_link(op); |
*opp = obj_link(op); |
|
obj_link(op) = 0; |
GC_words_allocd += lw; |
GC_words_allocd += lw; |
FASTUNLOCK(); |
FASTUNLOCK(); |
} |
} |