diff --git a/ChangeLog b/ChangeLog index f637f5b0f7..b93b5dda2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Jul 19 15:09:22 2013 Koichi Sasada + + * gc.c, internal.h (rb_gc_writebarrier_remember_promoted): add a new + function to remember an specified object. This api is only + experimental (strongly depend on WB/rgengc strategy). + Fri Jul 19 14:56:00 2013 Koichi Sasada * array.c (ary_unprotect_logging): use (void *) for first parameter diff --git a/gc.c b/gc.c index 6543821ba1..e83bff302a 100644 --- a/gc.c +++ b/gc.c @@ -3894,6 +3894,13 @@ rb_gc_writebarrier_unprotect_promoted(VALUE obj) #endif } +void +rb_gc_writebarrier_remember_promoted(VALUE obj) +{ + rb_objspace_t *objspace = &rb_objspace; + rgengc_remember(objspace, obj); +} + #endif /* USE_RGENGC */ /* RGENGC analysis information */ diff --git a/internal.h b/internal.h index 05a59253a5..e9f8cb03ae 100644 --- a/internal.h +++ b/internal.h @@ -278,6 +278,7 @@ void rb_w32_init_file(void); void Init_heap(void); void *ruby_mimmalloc(size_t size); void rb_objspace_set_event_hook(const rb_event_flag_t event); +void rb_gc_writebarrier_remember_promoted(VALUE obj); /* hash.c */ struct st_table *rb_hash_tbl_raw(VALUE hash);