Skip to content

Commit

Permalink
Return if a GC ran or not for handle_user_collection_request
Browse files Browse the repository at this point in the history
  • Loading branch information
k-sareen committed Sep 20, 2024
1 parent 73be50d commit 0ab414a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/memory_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -566,13 +566,13 @@ pub fn total_bytes<VM: VMBinding>(mmtk: &MMTK<VM>) -> usize {
mmtk.get_plan().get_total_pages() << LOG_BYTES_IN_PAGE
}

/// Trigger a garbage collection as requested by the user.
/// Trigger a garbage collection as requested by the user. Returns whether a GC was ran or not.
///
/// Arguments:
/// * `mmtk`: A reference to an MMTk instance.
/// * `tls`: The thread that triggers this collection request.
pub fn handle_user_collection_request<VM: VMBinding>(mmtk: &MMTK<VM>, tls: VMMutatorThread) {
mmtk.handle_user_collection_request(tls, false, false);
pub fn handle_user_collection_request<VM: VMBinding>(mmtk: &MMTK<VM>, tls: VMMutatorThread) -> bool {
mmtk.handle_user_collection_request(tls, false, false)
}

/// Is the object alive?
Expand Down
9 changes: 6 additions & 3 deletions src/mmtk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ impl<VM: VMBinding> MMTK<VM> {
}

/// The application code has requested a collection. This is just a GC hint, and
/// we may ignore it.
/// we may ignore it. Returns whether a GC was ran or not.
///
/// # Arguments
/// * `tls`: The mutator thread that requests the GC
Expand All @@ -412,11 +412,11 @@ impl<VM: VMBinding> MMTK<VM> {
tls: VMMutatorThread,
force: bool,
exhaustive: bool,
) {
) -> bool {
use crate::vm::Collection;
if !self.get_plan().constraints().collects_garbage {
warn!("User attempted a collection request, but the plan can not do GC. The request is ignored.");
return;
return false;
}

if force || !*self.options.ignore_system_gc && VM::VMCollection::is_collection_enabled() {
Expand All @@ -432,7 +432,10 @@ impl<VM: VMBinding> MMTK<VM> {
.store(true, Ordering::Relaxed);
self.gc_requester.request();
VM::VMCollection::block_for_gc(tls);
return true;
}

false
}

/// MMTK has requested stop-the-world activity (e.g., stw within a concurrent gc).
Expand Down

0 comments on commit 0ab414a

Please sign in to comment.