示例#1
0
STATIC complex_descriptor *
GC_make_sequence_descriptor(complex_descriptor *first,
                            complex_descriptor *second)
{
    struct SequenceDescriptor * result =
        (struct SequenceDescriptor *)
                GC_malloc(sizeof(struct SequenceDescriptor));
    /* Can't result in overly conservative marking, since tags are      */
    /* very small integers. Probably faster than maintaining type       */
    /* info.                                                            */
    if (result != 0) {
        result -> sd_tag = SEQUENCE_TAG;
        result -> sd_first = first;
        result -> sd_second = second;
        GC_dirty(result);
        REACHABLE_AFTER_DIRTY(first);
        REACHABLE_AFTER_DIRTY(second);
    }
    return((complex_descriptor *)result);
}
 GC_API void GC_CALL GC_end_stubborn_change(void *p)
 {
   GC_dirty(p);
 }