RVM

Bidirectional object model

Details

  • Type: New Feature New Feature
  • Status: Open Open
  • Priority: Minor Minor
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: 1000
  • Component/s: Runtime: Object Model
  • Labels:
    None
  • Number of attachments :
    0

Description

Bidirectional object models are well known in the literature and implementations have been made in the RVM by Dayong Gu at McGill and by the guys at ANU. I intend to create a branch so that we can work on creating a stable bidirectional object model to merge back into the trunk.

Issue Links

Activity

Hide
David Grove added a comment -

There's nothing wrong with supporting a bidirectional object model as an option (generality, has been published before, etc).

I'm skeptical it's actually going to improve on the default sufficiently to justify the added complexity of parsing a bi-directional heap. The usual motivation for a bidirectional object model in Java is optimizing GC tracing operations, but as far as I know, no one has evaluated the bidirectional optimized tracing vs. a properly optimized tracing routine for a unidirectional object model. Been wrong before though...

Show
David Grove added a comment - There's nothing wrong with supporting a bidirectional object model as an option (generality, has been published before, etc). I'm skeptical it's actually going to improve on the default sufficiently to justify the added complexity of parsing a bi-directional heap. The usual motivation for a bidirectional object model in Java is optimizing GC tracing operations, but as far as I know, no one has evaluated the bidirectional optimized tracing vs. a properly optimized tracing routine for a unidirectional object model. Been wrong before though...
Hide
Robin Garner added a comment -

The bidirectional object model was one data point in the scanning method survey that Daniel, Steve and I did earlier this year. It performed pretty badly, which is why we committed specialization instead.

Show
Robin Garner added a comment - The bidirectional object model was one data point in the scanning method survey that Daniel, Steve and I did earlier this year. It performed pretty badly, which is why we committed specialization instead.
Hide
Ian Rogers added a comment -

Yes, I'm not expecting this to improve performance, it's more for completeness - I have an other need

Show
Ian Rogers added a comment - Yes, I'm not expecting this to improve performance, it's more for completeness - I have an other need
Hide
Ian Rogers added a comment -

For moving GCs, we iterate over all objects in a space to update forwarding pointers to the pointer they forward to. To detect when we've scanned all the pointers we need to identify words belonging to the object header (the normal object model records all offsets of pointers in a structure of off the TIB and so implicitly knows the header and reference offsets). A bit in the status word or detecting the TIB can be used to identify when we've reached the object header in the bidirectional object model.

Show
Ian Rogers added a comment - For moving GCs, we iterate over all objects in a space to update forwarding pointers to the pointer they forward to. To detect when we've scanned all the pointers we need to identify words belonging to the object header (the normal object model records all offsets of pointers in a structure of off the TIB and so implicitly knows the header and reference offsets). A bit in the status word or detecting the TIB can be used to identify when we've reached the object header in the bidirectional object model.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated: