Skip to content

Commit c227312

Browse files
wksmmtkgc-bot
authored andcommitted
Require ObjectReference to point inside object (mmtk#173)
This makes changes for upstream API changes. Upstream PR: mmtk/mmtk-core#1195 --------- Co-authored-by: mmtkgc-bot <mmtkgc.bot@gmail.com>
1 parent 0a4e92b commit c227312

8 files changed

+157
-148
lines changed

mmtk/Cargo.lock

+142-128
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mmtk/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ lazy_static = "1.1"
3131
# - change branch
3232
# - change repo name
3333
# But other changes including adding/removing whitespaces in commented lines may break the CI
34-
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "5edfd858c2539db5698fbc2e8cc1c5b74d951e99" }
34+
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "45cdf31055b1b6a629bdb8032adaa6dd5a8e32b9" }
3535
# Uncomment the following to build locally
3636
# mmtk = { path = "../../mmtk-core" }
3737
log = {version = "0.4", features = ["max_level_trace", "release_max_level_off"] }

mmtk/src/api.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ pub extern "C" fn mmtk_post_alloc(
231231

232232
#[no_mangle]
233233
pub extern "C" fn mmtk_will_never_move(object: ObjectReference) -> bool {
234-
!object.is_movable::<JuliaVM>()
234+
!object.is_movable()
235235
}
236236

237237
#[no_mangle]
@@ -262,7 +262,7 @@ pub extern "C" fn mmtk_total_bytes() -> usize {
262262

263263
#[no_mangle]
264264
pub extern "C" fn mmtk_is_live_object(object: ObjectReference) -> bool {
265-
object.is_live::<JuliaVM>()
265+
object.is_live()
266266
}
267267

268268
#[no_mangle]
@@ -497,7 +497,7 @@ pub extern "C" fn mmtk_pin_object(object: ObjectReference) -> bool {
497497
crate::early_return_for_non_moving!(false);
498498

499499
if mmtk_object_is_managed_by_mmtk(object.to_raw_address().as_usize()) {
500-
memory_manager::pin_object::<JuliaVM>(object)
500+
memory_manager::pin_object(object)
501501
} else {
502502
warn!("Object is not managed by mmtk - (un)pinning it via this function isn't supported.");
503503
false
@@ -509,7 +509,7 @@ pub extern "C" fn mmtk_unpin_object(object: ObjectReference) -> bool {
509509
crate::early_return_for_non_moving!(false);
510510

511511
if mmtk_object_is_managed_by_mmtk(object.to_raw_address().as_usize()) {
512-
memory_manager::unpin_object::<JuliaVM>(object)
512+
memory_manager::unpin_object(object)
513513
} else {
514514
warn!("Object is not managed by mmtk - (un)pinning it via this function isn't supported.");
515515
false
@@ -521,7 +521,7 @@ pub extern "C" fn mmtk_is_pinned(object: ObjectReference) -> bool {
521521
crate::early_return_for_non_moving!(false);
522522

523523
if mmtk_object_is_managed_by_mmtk(object.to_raw_address().as_usize()) {
524-
memory_manager::is_pinned::<JuliaVM>(object)
524+
memory_manager::is_pinned(object)
525525
} else {
526526
warn!("Object is not managed by mmtk - checking via this function isn't supported.");
527527
false

mmtk/src/conservative.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::julia_types::*;
2-
use crate::JuliaVM;
32
use crate::UPCALLS;
43

54
use mmtk::memory_manager;
@@ -17,7 +16,7 @@ pub fn pin_conservative_roots() {
1716

1817
let mut roots = CONSERVATIVE_ROOTS.lock().unwrap();
1918
let n_roots = roots.len();
20-
roots.retain(|obj| mmtk::memory_manager::pin_object::<JuliaVM>(*obj));
19+
roots.retain(|obj| mmtk::memory_manager::pin_object(*obj));
2120
let n_pinned = roots.len();
2221
log::debug!("Conservative roots: {}, pinned: {}", n_roots, n_pinned);
2322
}
@@ -29,9 +28,9 @@ pub fn unpin_conservative_roots() {
2928
let n_pinned = roots.len();
3029
let mut n_live = 0;
3130
roots.drain().for_each(|obj| {
32-
if mmtk::memory_manager::is_live_object::<JuliaVM>(obj) {
31+
if mmtk::memory_manager::is_live_object(obj) {
3332
n_live += 1;
34-
mmtk::memory_manager::unpin_object::<JuliaVM>(obj);
33+
mmtk::memory_manager::unpin_object(obj);
3534
}
3635
});
3736
log::debug!(
@@ -114,7 +113,7 @@ fn conservative_scan_range(lo: Address, hi: Address) {
114113
fn is_potential_mmtk_object(addr: Address) -> Option<ObjectReference> {
115114
if crate::object_model::is_addr_in_immixspace(addr) {
116115
// We only care about immix space. If the object is in other spaces, we won't move them, and we don't need to pin them.
117-
memory_manager::find_object_from_internal_pointer::<JuliaVM>(addr, usize::MAX)
116+
memory_manager::find_object_from_internal_pointer(addr, usize::MAX)
118117
} else {
119118
None
120119
}

mmtk/src/julia_finalizer.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,12 @@ fn sweep_finalizer_list(
149149
let (isfreed, isold) = if gc_ptr_tag(v0, 2) {
150150
(true, false)
151151
} else {
152-
let isfreed = !memory_manager::is_live_object::<JuliaVM>(v);
152+
let isfreed = !memory_manager::is_live_object(v);
153153
debug_assert!(!fin.is_zero());
154154
let isold = finalizer_list_marked.is_some()
155155
&& !isfreed
156156
&& (mmtk_object_is_managed_by_mmtk(fin.as_usize())
157-
&& memory_manager::is_live_object::<JuliaVM>(unsafe {
157+
&& memory_manager::is_live_object(unsafe {
158158
ObjectReference::from_raw_address_unchecked(fin)
159159
})
160160
|| !(mmtk_object_is_managed_by_mmtk(fin.as_usize())));

mmtk/src/julia_scanning.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use crate::julia_types::*;
44
use crate::object_model::mmtk_jl_array_ndims;
55
use crate::slots::JuliaVMSlot;
66
use crate::slots::OffsetSlot;
7-
use crate::JuliaVM;
87
use crate::JULIA_BUFF_TAG;
98
use crate::UPCALLS;
109
use memoffset::offset_of;
@@ -560,7 +559,7 @@ pub fn process_slot<EV: SlotVisitor<JuliaVMSlot>>(closure: &mut EV, slot: Addres
560559

561560
if let Some(objref) = simple_slot.load() {
562561
debug_assert!(
563-
mmtk::memory_manager::is_in_mmtk_spaces::<JuliaVM>(objref),
562+
mmtk::memory_manager::is_in_mmtk_spaces(objref),
564563
"Object {:?} in slot {:?} is not mapped address",
565564
objref,
566565
simple_slot
@@ -631,7 +630,7 @@ pub fn process_offset_slot<EV: SlotVisitor<JuliaVMSlot>>(
631630

632631
if let Some(objref) = offset_slot.load() {
633632
debug_assert!(
634-
mmtk::memory_manager::is_in_mmtk_spaces::<JuliaVM>(objref),
633+
mmtk::memory_manager::is_in_mmtk_spaces(objref),
635634
"Object {:?} in slot {:?} is not mapped address",
636635
objref,
637636
offset_slot

mmtk/src/object_model.rs

-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ impl ObjectModel<JuliaVM> for VMObjectModel {
168168
object.to_raw_address()
169169
}
170170

171-
const IN_OBJECT_ADDRESS_OFFSET: isize = 0;
172-
173171
fn dump_object(_object: ObjectReference) {
174172
unimplemented!()
175173
}

mmtk/src/util.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::api::MMTK_SIDE_VO_BIT_BASE_ADDRESS;
2-
use crate::JuliaVM;
32
use core::sync::atomic::Ordering;
43
use enum_map::Enum;
54
use mmtk::util::Address;
@@ -151,7 +150,7 @@ pub extern "C" fn mmtk_julia_copy_stack_check(c_flag_is_defined: bool) {
151150

152151
#[no_mangle]
153152
pub extern "C" fn mmtk_get_possibly_forwared(object: ObjectReference) -> ObjectReference {
154-
match object.get_forwarded_object::<JuliaVM>() {
153+
match object.get_forwarded_object() {
155154
Some(forwarded) => forwarded,
156155
None => object,
157156
}

0 commit comments

Comments
 (0)