Skip to content

[pull] master from ruby:master#978

Merged
pull[bot] merged 8 commits intoturkdevops:masterfrom
ruby:master
May 2, 2026
Merged

[pull] master from ruby:master#978
pull[bot] merged 8 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 2, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

jhawthorn and others added 8 commits May 1, 2026 12:11
This adds specialization for Class#allocate to perform the same inlining
that Class#new will do. This was done conservatively, only inlining when
we see a known leaf allocator so that there's no difference between
interpreter and JIT if the allocator happenes to observe the stack.
Otherwise some code defining ivars on a naked object early during
program boot can cause all objects to be larger than needed.

This seem like it was always the intention, but wasn't quite
properly prevented.

Also stop updating `max_iv_count` during GC marking as it is
redundant.
Simplify the API by taking a shape_id upon creation.
Embed and shrink the capacities array so that it can be queried
more efficiently.

Move `next_shape_id` and `cache_size` outside of the struct on their
own cache line, as they're expected to be incremented atomically from
concurrent threads, so we want to avoid false sharing.
The also don't need to be exposed to the rest of the VM.

Get rid of `root_shape` as it's always equal to `shape_list`.
This shrinks the `rb_shape_t` struct from 40B to 32B.
Extracted from: #16817

It's likely that it will be u8 soon.
@pull pull Bot locked and limited conversation to collaborators May 2, 2026
@pull pull Bot added the ⤵️ pull label May 2, 2026
@pull pull Bot merged commit db26919 into turkdevops:master May 2, 2026
1 of 3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants