summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2021-11-05 09:52:07 -0400
committerPeter Zhu <peter@peterzhu.ca>2021-11-08 14:05:54 -0500
commit309406484b98fe0aea55016d8f5971b4e6b91761 (patch)
tree10b3634821772ff6cf7b929597a00c369b0c639d /gc.c
parentaeae6e2842e1702dfb89b8ae69b48c4f5f64c662 (diff)
[Feature #18290] Deprecate rb_gc_force_recycle and remove invalidate_mark_stack_chunk
This commit deprecates rb_gc_force_recycle and coverts it to a no-op function. Also removes invalidate_mark_stack_chunk since only rb_gc_force_recycle uses it.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4363
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c73
1 files changed, 1 insertions, 72 deletions
diff --git a/gc.c b/gc.c
index 3fa1abb59a..3251719066 100644
--- a/gc.c
+++ b/gc.c
@@ -6142,35 +6142,6 @@ pop_mark_stack(mark_stack_t *stack, VALUE *data)
return TRUE;
}
-#if GC_ENABLE_INCREMENTAL_MARK
-static int
-invalidate_mark_stack_chunk(stack_chunk_t *chunk, int limit, VALUE obj)
-{
- int i;
- for (i=0; i<limit; i++) {
- if (chunk->data[i] == obj) {
- chunk->data[i] = Qundef;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static void
-invalidate_mark_stack(mark_stack_t *stack, VALUE obj)
-{
- stack_chunk_t *chunk = stack->chunk;
- int limit = stack->index;
-
- while (chunk) {
- if (invalidate_mark_stack_chunk(chunk, limit, obj)) return;
- chunk = chunk->next;
- limit = stack->limit;
- }
- rb_bug("invalid_mark_stack: unreachable");
-}
-#endif
-
static void
init_mark_stack(mark_stack_t *stack)
{
@@ -8743,49 +8714,7 @@ rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache)
void
rb_gc_force_recycle(VALUE obj)
{
- rb_objspace_t *objspace = &rb_objspace;
- RB_VM_LOCK_ENTER();
- {
- int is_old = RVALUE_OLD_P(obj);
-
- gc_report(2, objspace, "rb_gc_force_recycle: %s\n", obj_info(obj));
-
- if (is_old) {
- if (RVALUE_MARKED(obj)) {
- objspace->rgengc.old_objects--;
- }
- }
- CLEAR_IN_BITMAP(GET_HEAP_UNCOLLECTIBLE_BITS(obj), obj);
- CLEAR_IN_BITMAP(GET_HEAP_WB_UNPROTECTED_BITS(obj), obj);
- CLEAR_IN_BITMAP(GET_HEAP_PINNED_BITS(obj), obj);
-
- if (is_incremental_marking(objspace)) {
-#if GC_ENABLE_INCREMENTAL_MARK
- if (MARKED_IN_BITMAP(GET_HEAP_MARKING_BITS(obj), obj)) {
- invalidate_mark_stack(&objspace->mark_stack, obj);
- CLEAR_IN_BITMAP(GET_HEAP_MARKING_BITS(obj), obj);
- }
- CLEAR_IN_BITMAP(GET_HEAP_MARK_BITS(obj), obj);
-#endif
- }
- else {
- if (is_old || GET_HEAP_PAGE(obj)->flags.before_sweep) {
- CLEAR_IN_BITMAP(GET_HEAP_MARK_BITS(obj), obj);
- }
- CLEAR_IN_BITMAP(GET_HEAP_MARKING_BITS(obj), obj);
- }
-
- objspace->profile.total_freed_objects++;
-
- heap_page_add_freeobj(objspace, GET_HEAP_PAGE(obj), obj);
-
- /* Disable counting swept_slots because there are no meaning.
- * if (!MARKED_IN_BITMAP(GET_HEAP_MARK_BITS(p), p)) {
- * objspace->heap.swept_slots++;
- * }
- */
- }
- RB_VM_LOCK_LEAVE();
+ /* no-op */
}
#ifndef MARK_OBJECT_ARY_BUCKET_SIZE