Skip to content

Remove ProcessEdgesBase in LXR - #1559

Draft
wks wants to merge 2 commits into
mmtk:masterfrom
wks:fix/lxr-no-pew
Draft

Remove ProcessEdgesBase in LXR#1559
wks wants to merge 2 commits into
mmtk:masterfrom
wks:fix/lxr-no-pew

Conversation

@wks

@wks wks commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

DRAFT:

  • Give LXRStopTheWorldProcessEdges a better name, without "process edge".
  • Refactor LXRStopTheWorldProcessEdges, inline process_slots and flush into do_work if possible because we don't have to follow the structure of the legacy ProcessEdgesWork trait. Move fields to local variables if possible. Replace enqueue with a local queue and a closure.

The ProcessEdgesBase was introduced to make the legacy code work. We remove it.

@wks

wks commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator Author

LXRStopTheWorldProcessEdges is essentially the same as plan::tracing::closure::ProcessSlots (more precisely, edge-ordered slot enqueuing tracing), with the Trace being the implementation of mature_evac_trace_object and full_gc_trace_object. It also has some special handling of root edges and remembered set recorded edges.

I think it would be better to refactor LXRStopTheWorldProcessEdges after we refactor plan::tracing::closure::ProcessSlots to remove double enqueuing. It may provide more insight.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant