Skip to content

Conversation

wks
Copy link
Collaborator

@wks wks commented Sep 29, 2025

Since we introduced concurrent GC, one stop-the-world pause no longer corresponds to one GC, and the distinction between a "GC" and a "pause" becomes important.

We changed GcStatus to PauseState, and its members NotInPause, PauseTriggered and MutatorsStopped are now used to describe pauses with respect to mutators, instead of GC phases. We also renamed set_gc_status to pause_state_transition to emphasize that it is not merely setting the state, but also triggering events.

We changed the statistics output "GC" to "pauses".

TODO:

  • The statistics module should still record the number of GCs in addition to pauses.
  • Methods, such as GCWorkScheduler::on_gc_finished and Plan::end_of_gc, should be either renamed to xxx_pause_xxx, or refactored to ensure that they are called at actual ends of GCs instead of end of pauses.
  • Change VM bindings if any public APIs are changed.

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