Skip to content
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

Finish reification #5186

headius opened this Issue May 23, 2018 · 1 comment


None yet
1 participant
Copy link

commented May 23, 2018

For 9.2, we landed a new version of reified instance variables that can generate object shapes of arbitrary size. However we did not have time to finish the generation logic by also generating the accessors for those shapes.

I limited the generation to ten-wide in 4e1c9dd because we only have variable accessors for up to ten fields. That commit also fixed a regression in invokedynamic logic due to the new reification not creating one of the special "checked" VariableAccessor subtypes.

The following items need to be addressed in a future release of 9.2 to call instance variable reification "complete"

  • The accessors for wider widths need to be generated.
  • The volatility or lack thereof needs to be address. 9.0.x and gave volatile semantics by default configurable via a flag. 9.1 introduced the original reified variables, which did not provide volatility guarantees. 9.2 should turn it off for the remaining non-reified fields.
  • The "shape" should be associate with individual objects, so that as new variables are added we can choose a new shape without breaking existing objects. This will allow us to adaptively shape user-defined Ruby objects exactly to the needed width.

This can happen in 9.2.x, since the major change of generating these classes is already there.


This comment has been minimized.

Copy link
Member Author

commented Oct 11, 2018

Finished for a few months ago and working well.

@headius headius closed this Oct 11, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.