Fix missing WB going to too_complex on class/geniv #13696
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We were creating a new fields object, and then inserting into it without a write barrier.
I was looking into this because of this CI failure: https://rubyci.s3.amazonaws.com/debian11/ruby-master/log/20250624T213003Z.fail.html.gz
When running OpenSSL::TestSSL, wbcheck reports:
Another thing I noticed is that in some other cases (for T_OBJECT?), we're allocating an st_table first and only after assigning it to the object. That might be fine, but I wonder if that could fail under autocompact. I kept this building the table first and then inserting with a writebarrier after for that reason.
cc @byroot