Skip to content

Commit a66526a

Browse files
authored
Expose object reference write (mmtk#55)
Merge with mmtk/julia#11.
1 parent e36546f commit a66526a

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

mmtk/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mmtk/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ edition = "2018"
1010
[package.metadata.julia]
1111
# 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.
1212
julia_repo = "https://github.com/mmtk/julia.git"
13-
julia_version = "9dbc8fc65e1e273cefbbe87b20e35e4c43a7ebaf"
13+
julia_version = "a760a7ee28150261669cb0b31a8284214b3635c7"
1414

1515
[lib]
1616
crate-type = ["staticlib", "rlib", "dylib"]
@@ -29,7 +29,7 @@ lazy_static = "1.1"
2929
# - change branch
3030
# - change repo name
3131
# But other changes including adding/removing whitespaces in commented lines may break the CI.
32-
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "638d3287023c77fb4b6906a8bab35a77a5fb6a1f" }
32+
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "2cc34abe2b3ce4ee213b9ac4b9295160dac754cc" }
3333
# Uncomment the following to build locally
3434
# mmtk = { path = "../repos/mmtk-core" }
3535
log = {version = "0.4", features = ["max_level_trace", "release_max_level_off"] }

mmtk/api/mmtk.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ extern void modify_check(void* ref);
5757
extern int object_is_managed_by_mmtk(void* addr);
5858
extern void runtime_panic(void);
5959

60-
60+
extern void mmtk_object_reference_write_post(MMTk_Mutator mutator, const void* src, const void* target);
61+
extern uint8_t mmtk_needs_write_barrier(void);
6162

6263
/**
6364
* Tracing

mmtk/src/api.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,3 +447,29 @@ pub extern "C" fn mmtk_gc_poll(tls: VMMutatorThread) {
447447
pub extern "C" fn runtime_panic() {
448448
panic!("Panicking at runtime!")
449449
}
450+
451+
#[no_mangle]
452+
pub extern "C" fn mmtk_object_reference_write_post(
453+
mutator: *mut Mutator<JuliaVM>,
454+
src: ObjectReference,
455+
target: ObjectReference,
456+
) {
457+
let mutator = unsafe { &mut *mutator };
458+
memory_manager::object_reference_write_post(
459+
mutator,
460+
src,
461+
crate::edges::JuliaVMEdge::Simple(mmtk::vm::edge_shape::SimpleEdge::from_address(
462+
Address::ZERO,
463+
)),
464+
target,
465+
)
466+
}
467+
468+
#[no_mangle]
469+
pub extern "C" fn mmtk_needs_write_barrier() -> u8 {
470+
use mmtk::plan::BarrierSelector;
471+
match SINGLETON.get_plan().constraints().barrier {
472+
BarrierSelector::NoBarrier => 0,
473+
BarrierSelector::ObjectBarrier => 1,
474+
}
475+
}

0 commit comments

Comments
 (0)