mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[Feature #18619] remove FL_FROM_FREELIST
This commit is contained in:
parent
c26a85fc96
commit
d8352ff3ac
Notes:
git
2022-04-01 21:46:19 +09:00
1 changed files with 1 additions and 13 deletions
12
gc.c
12
gc.c
|
@ -564,8 +564,6 @@ typedef struct gc_profile_record {
|
||||||
#endif
|
#endif
|
||||||
} gc_profile_record;
|
} gc_profile_record;
|
||||||
|
|
||||||
#define FL_FROM_FREELIST FL_USER0
|
|
||||||
|
|
||||||
struct RMoved {
|
struct RMoved {
|
||||||
VALUE flags;
|
VALUE flags;
|
||||||
VALUE dummy;
|
VALUE dummy;
|
||||||
|
@ -5034,7 +5032,6 @@ try_move(rb_objspace_t *objspace, rb_heap_t *heap, struct heap_page *free_page,
|
||||||
|
|
||||||
gc_move(objspace, src, dest, free_page->slot_size);
|
gc_move(objspace, src, dest, free_page->slot_size);
|
||||||
gc_pin(objspace, src);
|
gc_pin(objspace, src);
|
||||||
FL_SET(src, FL_FROM_FREELIST);
|
|
||||||
free_page->free_slots--;
|
free_page->free_slots--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5311,12 +5308,7 @@ gc_sweep_plane(rb_objspace_t *objspace, rb_heap_t *heap, uintptr_t p, bits_t bit
|
||||||
rb_bug("T_MOVED shouldn't be seen until compaction is finished\n");
|
rb_bug("T_MOVED shouldn't be seen until compaction is finished\n");
|
||||||
}
|
}
|
||||||
gc_report(3, objspace, "page_sweep: %s is added to freelist\n", obj_info(vp));
|
gc_report(3, objspace, "page_sweep: %s is added to freelist\n", obj_info(vp));
|
||||||
if (FL_TEST(vp, FL_FROM_FREELIST)) {
|
|
||||||
ctx->empty_slots++;
|
ctx->empty_slots++;
|
||||||
}
|
|
||||||
else {
|
|
||||||
ctx->freed_slots++;
|
|
||||||
}
|
|
||||||
heap_page_add_freeobj(objspace, sweep_page, vp);
|
heap_page_add_freeobj(objspace, sweep_page, vp);
|
||||||
break;
|
break;
|
||||||
case T_ZOMBIE:
|
case T_ZOMBIE:
|
||||||
|
@ -5764,7 +5756,6 @@ invalidate_moved_plane(rb_objspace_t *objspace, struct heap_page *page, uintptr_
|
||||||
|
|
||||||
CLEAR_IN_BITMAP(GET_HEAP_PINNED_BITS(forwarding_object), forwarding_object);
|
CLEAR_IN_BITMAP(GET_HEAP_PINNED_BITS(forwarding_object), forwarding_object);
|
||||||
|
|
||||||
bool from_freelist = FL_TEST_RAW(forwarding_object, FL_FROM_FREELIST);
|
|
||||||
object = rb_gc_location(forwarding_object);
|
object = rb_gc_location(forwarding_object);
|
||||||
|
|
||||||
gc_move(objspace, object, forwarding_object, page->slot_size);
|
gc_move(objspace, object, forwarding_object, page->slot_size);
|
||||||
|
@ -5772,9 +5763,6 @@ invalidate_moved_plane(rb_objspace_t *objspace, struct heap_page *page, uintptr_
|
||||||
* is the free slot for the original page */
|
* is the free slot for the original page */
|
||||||
struct heap_page *orig_page = GET_HEAP_PAGE(object);
|
struct heap_page *orig_page = GET_HEAP_PAGE(object);
|
||||||
orig_page->free_slots++;
|
orig_page->free_slots++;
|
||||||
if (!from_freelist) {
|
|
||||||
objspace->profile.total_freed_objects++;
|
|
||||||
}
|
|
||||||
heap_page_add_freeobj(objspace, orig_page, object);
|
heap_page_add_freeobj(objspace, orig_page, object);
|
||||||
|
|
||||||
GC_ASSERT(MARKED_IN_BITMAP(GET_HEAP_MARK_BITS(forwarding_object), forwarding_object));
|
GC_ASSERT(MARKED_IN_BITMAP(GET_HEAP_MARK_BITS(forwarding_object), forwarding_object));
|
||||||
|
|
Loading…
Add table
Reference in a new issue