Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions mmtk_support.c
Original file line number Diff line number Diff line change
Expand Up @@ -1525,17 +1525,6 @@ rb_mmtk_block_for_gc(MMTk_VMMutatorThread tls)
#endif
}

static size_t
rb_mmtk_number_of_mutators(void)
{
rb_mmtk_assert_mmtk_worker();
rb_mmtk_panic_if_multiple_ractor(__FUNCTION__);

rb_ractor_t *main_ractor = GET_VM()->ractor.main_ractor;
size_t num_threads = main_ractor->threads.cnt;
return num_threads;
}

static void
rb_mmtk_get_mutators(void (*visit_mutator)(MMTk_Mutator *mutator, void *data), void *data)
{
Expand All @@ -1557,6 +1546,24 @@ rb_mmtk_get_mutators(void (*visit_mutator)(MMTk_Mutator *mutator, void *data), v
}
}

static void
increment_mutator_counter(MMTk_Mutator *mutator, void *data)
{
size_t *counter = (size_t*)data;
(*counter)++;
}

static size_t
rb_mmtk_number_of_mutators(void)
{
rb_mmtk_assert_mmtk_worker();
rb_mmtk_panic_if_multiple_ractor(__FUNCTION__);

size_t counter = 0;
rb_mmtk_get_mutators(increment_mutator_counter, (void*)&counter);
return counter;
}

static void
rb_mmtk_scan_roots_in_mutator_thread(MMTk_VMMutatorThread mutator, MMTk_VMWorkerThread worker)
{
Expand Down