GC_API void * GC_CALL GC_pre_incr (void **p, ptrdiff_t how_much) { void * initial = *p; void * result = GC_same_obj((void *)((ptr_t)initial + how_much), initial); if (!GC_all_interior_pointers) { (void) GC_is_valid_displacement(result); } return (*p = result); }
GC_API void GC_CALL GC_debug_ptr_store_and_dirty(void *p, const void *q) { *(void **)GC_is_visible(p) = GC_is_valid_displacement((void *)q); GC_debug_end_stubborn_change(p); REACHABLE_AFTER_DIRTY(q); }