Skip to content

Get rid of SHAPE_T_OBJECT #13556

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jun 7, 2025
Merged

Get rid of SHAPE_T_OBJECT #13556

merged 9 commits into from
Jun 7, 2025

Conversation

casperisfine
Copy link
Contributor

New (less ambitious) attempt at #13519.

byroot added 6 commits June 7, 2025 12:16
This is preparation to getting rid of `T_OBJECT` transitions.
By first only replicating the information it's easier to ensure
consistency.
Now that we have the `heap_index` in shape flags we no longer
need `T_OBJECT` shapes.
@casperisfine casperisfine marked this pull request as draft June 7, 2025 12:50

This comment has been minimized.

@casperisfine casperisfine force-pushed the remove-shape-t-object branch from be681b4 to 0f241aa Compare June 7, 2025 14:00
byroot added 2 commits June 7, 2025 16:49
Now that there no longer multiple shape roots, all we need to do
when moving an object from one slot to the other is to update the
`heap_index` part of the shape_id.

Since this never need to create a shape transition, it will always
work and never result in a complex shape.
Now that `rb_shape_traverse_from_new_root` has been eliminated there's
no longer any reason to pin these objects, because we no longer
need to traverse shapes downward during compaction.
@byroot byroot marked this pull request as ready for review June 7, 2025 16:06
@matzbot matzbot requested a review from a team June 7, 2025 16:06
@byroot byroot merged commit 7d8695e into ruby:master Jun 7, 2025
83 checks passed
@casperisfine casperisfine deleted the remove-shape-t-object branch June 7, 2025 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants