refactor/fix: Use object offsets instead of field indexes for precise object scanning #3736
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Immix and Commix scan objects precisely based on array of indexes containing possible references. Previously this list was populate by indexes of fields, now it's a list of offsets starting from object address (also known as start of object header) to make the code more readable.
It also can possibly some issues on 32-bit CPU architectures, see code comment below.
As an additional improvement used when debugging we're adding an utility to extract Class name as wide-string allowing to show it in debug information from the GC (best effort, no guarantess about String object layout)