Skip to content

Finish reification #5186

@headius

Description

@headius

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions