Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
05428c8
ZJIT: Remove side-exit locations dump after test
nobu Mar 30, 2026
5b83468
Adjust indent [ci skip]
nobu Mar 30, 2026
ae9b60f
[Feature #19107] parse.y: Allow trailing comma in method signature
nobu Feb 26, 2026
f9704cb
Only check malloc_increase atomically if necessary
jhawthorn Jan 13, 2026
5163a3a
Fix age_bits
luke-gruber Mar 16, 2026
66d5b87
Use planar age bits like 4.1.0
luke-gruber Mar 16, 2026
188bc3d
Add RUBY_TYPED_CONCURRENT_FREE_SAFE flag
luke-gruber Mar 16, 2026
4de7e58
Don't free in sweep thread for typeddata that aren't concur free safe
luke-gruber Mar 16, 2026
75b792d
Add a few concurrent free safe flags to ext typeddatas
luke-gruber Mar 16, 2026
4fbf561
Fix warnings
etiennebarrie Mar 18, 2026
04e2cee
Add GC.stat about pages swept by sweep thread
etiennebarrie Mar 25, 2026
7395b9e
Turn off background sweep page bookkeeping
luke-gruber Mar 26, 2026
d2f95d6
Update concurrent set for concurrent deletions
luke-gruber Mar 26, 2026
c6bfdfa
gc: remove atomic operations on bitmaps
luke-gruber Mar 26, 2026
a3a803b
Turn on concurrent set deletions in sweep thread
luke-gruber Mar 26, 2026
713019e
Fix assertion in string.c
luke-gruber Mar 26, 2026
b9bbab4
Fix age bits
luke-gruber Mar 26, 2026
40ddc68
Add RGENGC assertions to pre_sweep_plane
luke-gruber Mar 26, 2026
c1c1e28
Add major GC reasons to GC.stat
luke-gruber Mar 26, 2026
b3ab6f7
Add DEBUG_SWEEP_BOOKKEEPING assertions
luke-gruber Mar 26, 2026
343912d
Add GC sweep bookkeeping assertions on sweep_finish
luke-gruber Mar 26, 2026
6f9427c
Call post_sweep_page after freeing all deferred objects.
luke-gruber Mar 27, 2026
fb0d274
Fix garbage_object_p() to load and use background_sweep_thread atomic…
luke-gruber Mar 27, 2026
62b195a
Add per-page `pre_freed_malloc_bytes` to deal with malloc_increase issue
luke-gruber Mar 27, 2026
4fc9c58
Add deferred free object bitmap per page
luke-gruber Mar 27, 2026
ebf3453
Add concurrent_set.c debugging facilities
luke-gruber Mar 27, 2026
e7a7070
concurrent_set: change CAS memory order
luke-gruber Mar 28, 2026
0189543
gc: change some atomic memory orderings
luke-gruber Mar 28, 2026
f7ff576
assert all unmarked slots are freed if RGENGC_CHECK_MODE > 0
luke-gruber Mar 30, 2026
5d496a7
Remove a bitfield that shouldn't be there
luke-gruber Mar 31, 2026
603ac42
parallel sweep: imemo_callcache handled by weakref cleanup
luke-gruber Mar 31, 2026
0c3bb5f
Parallel sweep: add more fiber pool lock assertions to cont.c
luke-gruber Mar 31, 2026
504a426
Fix RGENGC_CHECK_MODE without VM_CHECK_MODE
luke-gruber Mar 31, 2026
6f6a1d9
Remove commented out function in darray.h
luke-gruber Mar 31, 2026
947a598
parallel sweep: fix for id2ref_tbl being managed table
luke-gruber Mar 31, 2026
19c82be
Parallel sweep: fix rb_gc_obj_needs_cleanup_p() for T_ZOMBIE
luke-gruber Mar 31, 2026
82933eb
gc: Add more assertions
luke-gruber Apr 1, 2026
a43e982
gc: remove comments and change VM_CHECK_MODE
luke-gruber Apr 1, 2026
d50cb33
Debugging issues after rebase
luke-gruber Apr 1, 2026
9b584ad
before claude code help
luke-gruber Apr 1, 2026
a87512f
More debugging code
luke-gruber Apr 2, 2026
f36b8af
gc/default.c: Put debugging behind RUBY_DEBUG
luke-gruber Apr 2, 2026
295aecf
Better sweep lock management
luke-gruber Apr 2, 2026
ab9962f
cleanup PSWEEP debug macros
luke-gruber Apr 2, 2026
8f48f3c
Fix psweep if not USE_MALLOC_INCREASE_LOCAL
luke-gruber Apr 2, 2026
c8e5033
Remove old rb_bug
luke-gruber Apr 2, 2026
1a8274c
Remove unused parameter
luke-gruber Apr 2, 2026
84fd235
GC: better id2ref_lock management with comments
luke-gruber Apr 2, 2026
6936e4c
parallel sweep: more checks for garbage needed in rb_obj_info
luke-gruber Apr 2, 2026
5f78bb3
Remove unneeded code
luke-gruber Apr 2, 2026
8f857aa
move gc_report to before making object T_NONE
luke-gruber Apr 2, 2026
316ece5
Fix issue with gc_rest() and MISMATCH debug
luke-gruber Apr 2, 2026
3845778
More debug fixes
luke-gruber Apr 2, 2026
f08c4fb
tmp commit
luke-gruber Apr 2, 2026
8bfa0f5
parallel sweep: blacklist imemo types specifically
luke-gruber Apr 9, 2026
78cce78
parallel sweep: remove a test from test_tracepoint.rb that no longer …
luke-gruber Apr 9, 2026
2180916
Parallel Sweep: no longer user blacklisted_vm_weak_references
luke-gruber Apr 9, 2026
4de9fe0
Pull out deferred freeing into its own function in from gc_sweep_step()
luke-gruber Apr 9, 2026
c3be429
Remove deferred freelist
luke-gruber Apr 9, 2026
f78728f
Change name of free_whitelisted_vm_weak_references_from_sweep_thread
luke-gruber Apr 9, 2026
9dbf1d7
Fix concurrent_set.c when found garbage object
luke-gruber Apr 9, 2026
65e09d4
Didn't mean to merge this a while back
luke-gruber Apr 10, 2026
b8760d6
Go from 2 to 1 allocations in onig_region_resize
luke-gruber Apr 10, 2026
ba09ff9
Remove old is_sweep_thread_p checks in vm_sync.c
luke-gruber Apr 13, 2026
f2f9358
Remove old is_sweep_pthread_p check in darray.h
luke-gruber Apr 13, 2026
7290630
fix GC.verify_internal_consistency with Parallel Sweep
luke-gruber Apr 13, 2026
bbe44b9
Enable sweep thread when calling GC.start
luke-gruber Apr 13, 2026
8237f5e
psweep: Attempt to remove lock contention during page dequeue
luke-gruber Apr 15, 2026
d91cc7f
psweep: Change direction of heap iteration during first incremental s…
luke-gruber Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion array.c
Original file line number Diff line number Diff line change
Expand Up @@ -6875,7 +6875,7 @@ static const rb_data_type_t ary_sample_memo_type = {
.function = {
.dfree = (RUBY_DATA_FUNC)st_free_table,
},
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
};

static VALUE
Expand Down
4 changes: 2 additions & 2 deletions ast.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ static const rb_data_type_t rb_node_type = {
"AST/node",
{node_gc_mark, RUBY_TYPED_DEFAULT_FREE, node_memsize,},
0, 0,
RUBY_TYPED_FREE_IMMEDIATELY,
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
};

struct ASTLocationData {
Expand All @@ -70,7 +70,7 @@ static const rb_data_type_t rb_location_type = {
"AST/location",
{location_gc_mark, RUBY_TYPED_DEFAULT_FREE, location_memsize,},
0, 0,
RUBY_TYPED_FREE_IMMEDIATELY,
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
};


Expand Down
6 changes: 3 additions & 3 deletions box.c
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ static const rb_data_type_t rb_box_data_type = {
box_entry_memsize,
rb_box_gc_update_references,
},
0, 0, RUBY_TYPED_FREE_IMMEDIATELY // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
};

static const rb_data_type_t rb_root_box_data_type = {
Expand All @@ -311,7 +311,7 @@ static const rb_data_type_t rb_root_box_data_type = {
box_entry_memsize,
rb_box_gc_update_references,
},
&rb_box_data_type, 0, RUBY_TYPED_FREE_IMMEDIATELY // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
&rb_box_data_type, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
};

VALUE
Expand Down Expand Up @@ -755,7 +755,7 @@ box_ext_cleanup_free(void *p)
static const rb_data_type_t box_ext_cleanup_type = {
"box_ext_cleanup",
{box_ext_cleanup_mark, box_ext_cleanup_free},
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
};

void
Expand Down
8 changes: 4 additions & 4 deletions compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -12312,7 +12312,7 @@ static const rb_data_type_t labels_wrapper_type = {
.dmark = (RUBY_DATA_FUNC)rb_mark_set,
.dfree = (RUBY_DATA_FUNC)st_free_table,
},
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_CONCURRENT_FREE_SAFE,
};

void
Expand Down Expand Up @@ -12573,7 +12573,7 @@ static const rb_data_type_t pinned_list_type = {
RUBY_DEFAULT_FREE,
NULL, // No external memory to report,
},
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
};

static VALUE
Expand Down Expand Up @@ -14724,7 +14724,7 @@ ibf_dump_memsize(const void *ptr)
static const rb_data_type_t ibf_dump_type = {
"ibf_dump",
{ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
};

static void
Expand Down Expand Up @@ -14961,7 +14961,7 @@ ibf_loader_memsize(const void *ptr)
static const rb_data_type_t ibf_load_type = {
"ibf_loader",
{ibf_loader_mark, ibf_loader_free, ibf_loader_memsize,},
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
};

const rb_iseq_t *
Expand Down
Loading
Loading