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

Closed
headius opened this issue May 23, 2018 · 1 comment
Closed

Finish reification #5186

headius opened this issue May 23, 2018 · 1 comment
Milestone

Comments

@headius
Copy link
Member

headius 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.

@headius
Copy link
Member Author

headius commented Oct 11, 2018

Finished for 9.2.1.0 a few months ago and working well.

@headius headius closed this as completed Oct 11, 2018
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

No branches or pull requests

1 participant