diff --git a/mmtk/Cargo.lock b/mmtk/Cargo.lock index 55da681..70769ec 100644 --- a/mmtk/Cargo.lock +++ b/mmtk/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "mmtk" version = "0.25.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=dccce9063b57dde96d2e97670297aed4dc32e6e1#dccce9063b57dde96d2e97670297aed4dc32e6e1" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=56b2521d2b99848ee0613a0a5288fe6d81b754ba#56b2521d2b99848ee0613a0a5288fe6d81b754ba" dependencies = [ "atomic", "atomic-traits", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "mmtk-macros" version = "0.25.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=dccce9063b57dde96d2e97670297aed4dc32e6e1#dccce9063b57dde96d2e97670297aed4dc32e6e1" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=56b2521d2b99848ee0613a0a5288fe6d81b754ba#56b2521d2b99848ee0613a0a5288fe6d81b754ba" dependencies = [ "proc-macro-error", "proc-macro2", diff --git a/mmtk/Cargo.toml b/mmtk/Cargo.toml index ad51fff..ee4cc4e 100644 --- a/mmtk/Cargo.toml +++ b/mmtk/Cargo.toml @@ -37,7 +37,7 @@ features = ["is_mmtk_object", "object_pinning"] # Uncomment the following lines to use mmtk-core from the official repository. git = "https://github.com/mmtk/mmtk-core.git" -rev = "dccce9063b57dde96d2e97670297aed4dc32e6e1" +rev = "56b2521d2b99848ee0613a0a5288fe6d81b754ba" # Uncomment the following line to use mmtk-core from a local repository. # path = "../../mmtk-core" diff --git a/mmtk/src/lib.rs b/mmtk/src/lib.rs index af95bb3..05cfa35 100644 --- a/mmtk/src/lib.rs +++ b/mmtk/src/lib.rs @@ -12,7 +12,7 @@ use std::thread::ThreadId; use abi::RubyUpcalls; use binding::{RubyBinding, RubyBindingFast, RubyBindingFastMut}; -use mmtk::vm::edge_shape::{SimpleEdge, UnimplementedMemorySlice}; +use mmtk::vm::slot::{SimpleSlot, UnimplementedMemorySlice}; use mmtk::vm::VMBinding; use mmtk::MMTK; use once_cell::sync::OnceCell; @@ -31,15 +31,15 @@ pub mod weak_proc; #[derive(Default)] pub struct Ruby; -/// Ruby edge type, i.e. a slot that holds a VALUE. -/// Currently we use SimpleEdge. -/// It doesn't matter, becaues we have not started using edge-enqueuing, yet. -pub type RubyEdge = SimpleEdge; +/// Ruby slot type, i.e. a slot that holds a VALUE. +/// Currently we use SimpleSlot. +/// It doesn't matter, becaues we have not started using slot-enqueuing, yet. +pub type RubySlot = SimpleSlot; /// Ruby memory slice, i.e. an array of VALUEs. /// It is used by array-copy barriers which is supposed to perform bettern than copying array /// elements one by one. At this moment, we just leave it unimplemented. -pub type RubyMemorySlice = UnimplementedMemorySlice; +pub type RubyMemorySlice = UnimplementedMemorySlice; impl VMBinding for Ruby { type VMObjectModel = object_model::VMObjectModel; @@ -48,7 +48,7 @@ impl VMBinding for Ruby { type VMActivePlan = active_plan::VMActivePlan; type VMReferenceGlue = reference_glue::VMReferenceGlue; - type VMEdge = RubyEdge; + type VMSlot = RubySlot; type VMMemorySlice = RubyMemorySlice; } diff --git a/mmtk/src/scanning.rs b/mmtk/src/scanning.rs index f7fa1cb..48c8ed8 100644 --- a/mmtk/src/scanning.rs +++ b/mmtk/src/scanning.rs @@ -1,24 +1,24 @@ use crate::abi::GCThreadTLS; -use crate::{upcalls, Ruby, RubyEdge}; +use crate::{upcalls, Ruby, RubySlot}; use mmtk::scheduler::GCWorker; use mmtk::util::{ObjectReference, VMWorkerThread}; -use mmtk::vm::{EdgeVisitor, ObjectTracer, RootsWorkFactory, Scanning}; +use mmtk::vm::{ObjectTracer, RootsWorkFactory, Scanning, SlotVisitor}; use mmtk::{Mutator, MutatorContext}; pub struct VMScanning {} impl Scanning for VMScanning { - fn support_edge_enqueuing(_tls: VMWorkerThread, _object: ObjectReference) -> bool { + fn support_slot_enqueuing(_tls: VMWorkerThread, _object: ObjectReference) -> bool { false } - fn scan_object>( + fn scan_object>( _tls: VMWorkerThread, _object: ObjectReference, - _edge_visitor: &mut EV, + _slot_visitor: &mut EV, ) { - unreachable!("We have not enabled edge enqueuing for any types, yet."); + unreachable!("We have not enabled slot enqueuing for any types, yet."); } fn scan_object_and_trace_edges( @@ -66,7 +66,7 @@ impl Scanning for VMScanning { fn scan_roots_in_mutator_thread( tls: VMWorkerThread, mutator: &'static mut Mutator, - mut factory: impl RootsWorkFactory, + mut factory: impl RootsWorkFactory, ) { let gc_tls = unsafe { GCThreadTLS::from_vwt_check(tls) }; Self::collect_object_roots_in("scan_thread_root", gc_tls, &mut factory, || { @@ -74,7 +74,7 @@ impl Scanning for VMScanning { }); } - fn scan_vm_specific_roots(tls: VMWorkerThread, mut factory: impl RootsWorkFactory) { + fn scan_vm_specific_roots(tls: VMWorkerThread, mut factory: impl RootsWorkFactory) { let gc_tls = unsafe { GCThreadTLS::from_vwt_check(tls) }; Self::collect_object_roots_in("scan_vm_specific_roots", gc_tls, &mut factory, || { (upcalls().scan_vm_specific_roots)(); @@ -114,7 +114,7 @@ impl VMScanning { fn collect_object_roots_in( root_scan_kind: &str, gc_tls: &mut GCThreadTLS, - factory: &mut impl RootsWorkFactory, + factory: &mut impl RootsWorkFactory, callback: F, ) { let mut buffer: Vec = Vec::new();