From 85a0895ca5ab79bfaf1c37cc85657f490aa28e7c Mon Sep 17 00:00:00 2001 From: Yi Lin Date: Tue, 2 May 2023 03:24:18 +0000 Subject: [PATCH 1/5] Expose object write --- mmtk/Cargo.toml | 4 ++-- mmtk/api/mmtk.h | 2 +- mmtk/src/api.rs | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mmtk/Cargo.toml b/mmtk/Cargo.toml index fb35c7e1..6941892e 100644 --- a/mmtk/Cargo.toml +++ b/mmtk/Cargo.toml @@ -9,8 +9,8 @@ edition = "2018" # Metadata for the Julia repository [package.metadata.julia] # Our CI matches the following line and extract mmtk/julia. If this line is updated, please check ci yaml files and make sure it works. -julia_repo = "https://github.com/mmtk/julia.git" -julia_version = "72a275233012a80dfd5c5ac1c83afdf9aff0a87a" +julia_repo = "https://github.com/qinsoon/julia.git" +julia_version = "7e60d460c2cca6aff53917f1ffe8d94107cbed2d" [lib] crate-type = ["staticlib", "rlib", "dylib"] diff --git a/mmtk/api/mmtk.h b/mmtk/api/mmtk.h index 12aa8f5d..85d5601d 100644 --- a/mmtk/api/mmtk.h +++ b/mmtk/api/mmtk.h @@ -57,7 +57,7 @@ extern void modify_check(void* ref); extern int object_is_managed_by_mmtk(void* addr); extern void runtime_panic(void); - +extern void mmtk_object_reference_write_post(MMTk_Mutator mutator, const void* src, const void* target); /** * Tracing diff --git a/mmtk/src/api.rs b/mmtk/src/api.rs index 2e0df1a1..ad7baa2b 100644 --- a/mmtk/src/api.rs +++ b/mmtk/src/api.rs @@ -447,3 +447,9 @@ pub extern "C" fn mmtk_gc_poll(tls: VMMutatorThread) { pub extern "C" fn runtime_panic() { panic!("Panicking at runtime!") } + +#[no_mangle] +pub extern "C" fn mmtk_object_reference_write_post(mutator: *mut Mutator, src: ObjectReference, target: ObjectReference) { + let mutator = unsafe { &mut *mutator }; + memory_manager::object_reference_write_post(mutator, src, crate::edges::JuliaVMEdge::Simple(mmtk::vm::edge_shape::SimpleEdge::from_address(Address::ZERO)), target) +} From f11d8b763d2c5eb4388bcc41ec3a784d5e2525c4 Mon Sep 17 00:00:00 2001 From: Yi Lin Date: Wed, 3 May 2023 02:53:29 +0000 Subject: [PATCH 2/5] Fix style check --- mmtk/src/api.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mmtk/src/api.rs b/mmtk/src/api.rs index ad7baa2b..e0c0faa3 100644 --- a/mmtk/src/api.rs +++ b/mmtk/src/api.rs @@ -449,7 +449,18 @@ pub extern "C" fn runtime_panic() { } #[no_mangle] -pub extern "C" fn mmtk_object_reference_write_post(mutator: *mut Mutator, src: ObjectReference, target: ObjectReference) { +pub extern "C" fn mmtk_object_reference_write_post( + mutator: *mut Mutator, + src: ObjectReference, + target: ObjectReference, +) { let mutator = unsafe { &mut *mutator }; - memory_manager::object_reference_write_post(mutator, src, crate::edges::JuliaVMEdge::Simple(mmtk::vm::edge_shape::SimpleEdge::from_address(Address::ZERO)), target) + memory_manager::object_reference_write_post( + mutator, + src, + crate::edges::JuliaVMEdge::Simple(mmtk::vm::edge_shape::SimpleEdge::from_address( + Address::ZERO, + )), + target, + ) } From a1dc0013d620323219d8ece5cd4f6349ac023c62 Mon Sep 17 00:00:00 2001 From: Yi Lin Date: Thu, 4 May 2023 00:39:52 +0000 Subject: [PATCH 3/5] Expose a call to check which barrier to use --- mmtk/api/mmtk.h | 1 + mmtk/src/api.rs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/mmtk/api/mmtk.h b/mmtk/api/mmtk.h index 9781af24..2841f0a2 100644 --- a/mmtk/api/mmtk.h +++ b/mmtk/api/mmtk.h @@ -58,6 +58,7 @@ extern int object_is_managed_by_mmtk(void* addr); extern void runtime_panic(void); extern void mmtk_object_reference_write_post(MMTk_Mutator mutator, const void* src, const void* target); +extern uint8_t mmtk_needs_write_barrier(void); /** * Tracing diff --git a/mmtk/src/api.rs b/mmtk/src/api.rs index e0c0faa3..e54339b2 100644 --- a/mmtk/src/api.rs +++ b/mmtk/src/api.rs @@ -464,3 +464,12 @@ pub extern "C" fn mmtk_object_reference_write_post( target, ) } + +#[no_mangle] +pub extern "C" fn mmtk_needs_write_barrier() -> u8 { + use mmtk::plan::BarrierSelector; + match SINGLETON.get_plan().constraints().barrier { + BarrierSelector::NoBarrier => 0, + BarrierSelector::ObjectBarrier => 1, + } +} From d5600f4116d1508c741d2d0be34c4596a9866bc7 Mon Sep 17 00:00:00 2001 From: Yi Lin Date: Thu, 4 May 2023 00:41:42 +0000 Subject: [PATCH 4/5] Update Julia and mmtk-core --- mmtk/Cargo.lock | 4 ++-- mmtk/Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mmtk/Cargo.lock b/mmtk/Cargo.lock index 6f0573af..893d36a0 100644 --- a/mmtk/Cargo.lock +++ b/mmtk/Cargo.lock @@ -534,7 +534,7 @@ dependencies = [ [[package]] name = "mmtk" version = "0.18.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=638d3287023c77fb4b6906a8bab35a77a5fb6a1f#638d3287023c77fb4b6906a8bab35a77a5fb6a1f" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=2cc34abe2b3ce4ee213b9ac4b9295160dac754cc#2cc34abe2b3ce4ee213b9ac4b9295160dac754cc" dependencies = [ "atomic 0.5.1", "atomic-traits", @@ -578,7 +578,7 @@ dependencies = [ [[package]] name = "mmtk-macros" version = "0.18.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=638d3287023c77fb4b6906a8bab35a77a5fb6a1f#638d3287023c77fb4b6906a8bab35a77a5fb6a1f" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=2cc34abe2b3ce4ee213b9ac4b9295160dac754cc#2cc34abe2b3ce4ee213b9ac4b9295160dac754cc" dependencies = [ "proc-macro-error", "proc-macro2", diff --git a/mmtk/Cargo.toml b/mmtk/Cargo.toml index 61a44b30..461b67db 100644 --- a/mmtk/Cargo.toml +++ b/mmtk/Cargo.toml @@ -10,7 +10,7 @@ edition = "2018" [package.metadata.julia] # Our CI matches the following line and extract mmtk/julia. If this line is updated, please check ci yaml files and make sure it works. julia_repo = "https://github.com/qinsoon/julia.git" -julia_version = "0147ddb67febf5ed0f623b3249c83f24f724b0a0" +julia_version = "9b0c32245da1e02262cabd71b4bb548e3c30695a" [lib] crate-type = ["staticlib", "rlib", "dylib"] @@ -29,7 +29,7 @@ lazy_static = "1.1" # - change branch # - change repo name # But other changes including adding/removing whitespaces in commented lines may break the CI. -mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "638d3287023c77fb4b6906a8bab35a77a5fb6a1f" } +mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "2cc34abe2b3ce4ee213b9ac4b9295160dac754cc" } # Uncomment the following to build locally # mmtk = { path = "../repos/mmtk-core" } log = {version = "0.4", features = ["max_level_trace", "release_max_level_off"] } From 6e87661bc12e8d09d533481d7a46b87bbe095508 Mon Sep 17 00:00:00 2001 From: Yi Lin Date: Thu, 4 May 2023 17:34:51 +1200 Subject: [PATCH 5/5] Update Cargo.toml --- mmtk/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mmtk/Cargo.toml b/mmtk/Cargo.toml index 461b67db..e3d3705c 100644 --- a/mmtk/Cargo.toml +++ b/mmtk/Cargo.toml @@ -9,8 +9,8 @@ edition = "2018" # Metadata for the Julia repository [package.metadata.julia] # Our CI matches the following line and extract mmtk/julia. If this line is updated, please check ci yaml files and make sure it works. -julia_repo = "https://github.com/qinsoon/julia.git" -julia_version = "9b0c32245da1e02262cabd71b4bb548e3c30695a" +julia_repo = "https://github.com/mmtk/julia.git" +julia_version = "a760a7ee28150261669cb0b31a8284214b3635c7" [lib] crate-type = ["staticlib", "rlib", "dylib"]