Skip to content

Meta: Refactoring / fixing related to valid-object (VO) bit #804

@wks

Description

@wks

A previous attempt to address many of the following problems was unsuccessful. #680

We should do the following one by one in separate PRs.

  • Renaming alloc bit to VO bit. Rename "alloc bit" to "valid-object bit" (VO bit), the second attempt. #791
  • Add an API for explicitly clearing the VO bit. Add an API to clear the valid-object bit (a.k.a. alloc-bit) #648
  • Remove the is_mmtk_object feature. It should be enabled as long as VO bit is available.
  • Refactor vo_bit.rs
    • Clean up the API, and only use ObjectReference (not Address) to access the VO bit. This emphasises that VO bits are set at object references' raw addresses.
    • Use fetch_and and fetch_or for atomic setting/clearing of bits.
  • MarkCompactSpace shall use local bits. It should use space-local allocation bits to identify objects.
  • MallocSpace shall use local alloc bits. Its semantics is different from VO bit. Even after the VO bit is cleared, malloc MarkSweep still needs the alloc bit to identify objects allocated by malloc, and call free on them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-metaArea: Meta issues for the repositoryP-normalPriority: Normal.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions