Why was the Grip abstraction from the original VM design removed?
Re: changeset 4423 The original rational for Grips was to provide an abstraction for object references that does not involve write barriers. Apart from that, it was pretty much an exact mirror of the ReferenceScheme. The thinking was that the GC should be written against grips as it does not need to update write barriers. However, it turns out that object reference fix up is done via Pointers in the current GC implementations and I don’t see why this won’t/can’t be true for any other GC. That is, we had a whole extra (and confusing) abstraction whose whole reason for existence was not being used! Additionally, even if references were being fixed up via Reference.setReference(…) and Reference.writeReference(…) instead of Pointer.setReference(…) and Pointer.writeReference(…) there is still no need for an extra abstraction. It would be far simpler to annotate the method(s) doing the update with an annotation (e.g. @NO_BARRIERS) that would instruct the compiler not to insert write
Related Questions
- What should teachers expect to experience if their school decides to implement fully the original MRSH design for school improvement?
- What is the difference between data abstraction, encapsulation and data hiding in terms of java?
- Was the original design adequate? Were the right materials and processes specified?