diff options
Diffstat (limited to 'typd_mlc.c')
-rw-r--r-- | typd_mlc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -325,6 +325,7 @@ GC_make_sequence_descriptor(complex_descriptor *first, result -> sd_tag = SEQUENCE_TAG; result -> sd_first = first; result -> sd_second = second; + GC_dirty(result); } return((complex_descriptor *)result); } @@ -602,6 +603,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_explicitly_typed(size_t lb, /* the former might be updated asynchronously. */ lg = BYTES_TO_GRANULES(GC_size(op)); op[GRANULES_TO_WORDS(lg) - 1] = d; + GC_dirty(op + GRANULES_TO_WORDS(lg) - 1); return op; } @@ -642,6 +644,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL lg = BYTES_TO_GRANULES(GC_size(op)); } ((word *)op)[GRANULES_TO_WORDS(lg) - 1] = d; + GC_dirty(op + GRANULES_TO_WORDS(lg) - 1); return op; } @@ -695,6 +698,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_calloc_explicitly_typed(size_t n, size_t lw = GRANULES_TO_WORDS(lg); op[lw - 1] = (word)complex_descr; + GC_dirty(op + lw - 1); /* Make sure the descriptor is cleared once there is any danger */ /* it may have been collected. */ if (EXPECT(GC_general_register_disappearing_link( |