Skip to content

Plans with multiple traces #520

Open
@qinsoon

Description

@qinsoon

Each policy provides their trace_object() method and that should be used for a GC transitive closure. However, if a plan needs to do multiple traces, do we expect trace_object() be used for all the traces?

For example, in mark compact, the GC needs multiple traces. The MarkCompactSpace provides several trace_object() methods, and each trace will use a different one. However, in mark compact, the common policies (such as LOS) is still in use, and they only provide one trace_object(). For the current implementation (ad95d77), trace_object() in LOS may not keep tracing objects that have already been traced in previous traces, which leads to a bug and we do not have a full transitive closure.

There are a few things we need to figure out:

  1. Do we expect trace_object() to be used for all the traces?
  2. If not, should each policy provide a re_trace_object() method? What is the difference between trace and re_trace? Do we expect trace to happen before re_trace?
  3. Who should provide the re_trace_object() for each policy? The plan or the policy itself?

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-policyArea: PolicyC-bugCategory: BugP-normalPriority: Normal.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions