Skip to content

Commit 9e7d2d4

Browse files
committed
Require ObjectReference to point inside object
This makes changes for upstream API changes. Upstream PR: mmtk/mmtk-core#1195
1 parent 16682fd commit 9e7d2d4

File tree

7 files changed

+21
-23
lines changed

7 files changed

+21
-23
lines changed

mmtk/Cargo.lock

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

mmtk/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ probe = "0.5"
3636
features = ["is_mmtk_object", "object_pinning", "sticky_immix_non_moving_nursery"]
3737

3838
# Uncomment the following lines to use mmtk-core from the official repository.
39-
git = "https://github.com/mmtk/mmtk-core.git"
40-
rev = "fa5327544e2546654a6d89ed5db4509966e89182"
39+
git = "https://github.com/wks/mmtk-core.git"
40+
rev = "57a98749ff37093b355d7b2f496b8a67315e158b"
4141

4242
# Uncomment the following line to use mmtk-core from a local repository.
43-
# path = "../../mmtk-core"
43+
#path = "../../mmtk-core"
4444

4545
[features]
4646
default = []

mmtk/src/api.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ pub extern "C" fn mmtk_post_alloc(
173173

174174
#[no_mangle]
175175
pub extern "C" fn mmtk_will_never_move(object: ObjectReference) -> bool {
176-
!object.is_movable::<Ruby>()
176+
!object.is_movable()
177177
}
178178

179179
#[no_mangle]
@@ -224,17 +224,17 @@ pub extern "C" fn mmtk_total_bytes() -> usize {
224224

225225
#[no_mangle]
226226
pub extern "C" fn mmtk_is_reachable(object: ObjectReference) -> bool {
227-
object.is_reachable::<Ruby>()
227+
object.is_reachable()
228228
}
229229

230230
#[no_mangle]
231231
pub extern "C" fn mmtk_is_live_object(object: ObjectReference) -> bool {
232-
memory_manager::is_live_object::<Ruby>(object)
232+
memory_manager::is_live_object(object)
233233
}
234234

235235
#[no_mangle]
236236
pub extern "C" fn mmtk_get_forwarded_object(object: ObjectReference) -> NullableObjectReference {
237-
object.get_forwarded_object::<Ruby>().into()
237+
object.get_forwarded_object().into()
238238
}
239239

240240
#[no_mangle]
@@ -337,17 +337,17 @@ pub extern "C" fn mmtk_get_immix_bump_ptr_offset() -> usize {
337337

338338
#[no_mangle]
339339
pub extern "C" fn mmtk_pin_object(object: ObjectReference) -> bool {
340-
mmtk::memory_manager::pin_object::<Ruby>(object)
340+
mmtk::memory_manager::pin_object(object)
341341
}
342342

343343
#[no_mangle]
344344
pub extern "C" fn mmtk_unpin_object(object: ObjectReference) -> bool {
345-
mmtk::memory_manager::unpin_object::<Ruby>(object)
345+
mmtk::memory_manager::unpin_object(object)
346346
}
347347

348348
#[no_mangle]
349349
pub extern "C" fn mmtk_is_pinned(object: ObjectReference) -> bool {
350-
mmtk::memory_manager::is_pinned::<Ruby>(object)
350+
mmtk::memory_manager::is_pinned(object)
351351
}
352352

353353
#[no_mangle]

mmtk/src/object_model.rs

-2
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ impl ObjectModel<Ruby> for VMObjectModel {
120120
RubyObjectAccess::from_objref(object).payload_addr()
121121
}
122122

123-
const IN_OBJECT_ADDRESS_OFFSET: isize = 0;
124-
125123
fn get_size_when_copied(object: ObjectReference) -> usize {
126124
Self::get_current_size(object)
127125
}

mmtk/src/ppp.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ impl PPPRegistry {
7575

7676
probe!(mmtk_ruby, remove_dead_ppps_start, ppps.len());
7777
ppps.retain_mut(|obj| {
78-
if obj.is_live::<Ruby>() {
79-
*obj = obj.get_forwarded_object::<Ruby>().unwrap_or(*obj);
78+
if obj.is_live() {
79+
*obj = obj.get_forwarded_object().unwrap_or(*obj);
8080
true
8181
} else {
8282
log::trace!(" PPP removed: {}", *obj);
@@ -97,7 +97,7 @@ impl PPPRegistry {
9797
.expect("PPPRegistry::pinned_ppp_children should not have races during GC.");
9898
probe!(mmtk_ruby, unpin_ppp_children_start, pinned_ppps.len());
9999
for obj in pinned_ppps.drain(..) {
100-
let unpinned = memory_manager::unpin_object::<Ruby>(obj);
100+
let unpinned = memory_manager::unpin_object(obj);
101101
debug_assert!(unpinned);
102102
}
103103
probe!(mmtk_ruby, unpin_ppp_children_end);
@@ -147,7 +147,7 @@ impl GCWork<Ruby> for PinPPPChildren {
147147
});
148148

149149
for target_object in ppp_children {
150-
if memory_manager::pin_object::<Ruby>(target_object) {
150+
if memory_manager::pin_object(target_object) {
151151
newly_pinned_ppp_children.push(target_object);
152152
}
153153
}

mmtk/src/scanning.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ impl<F: RootsWorkFactory<RubySlot>> GCWork<Ruby> for ScanWbUnprotectedRoots<F> {
280280
let gc_tls = unsafe { GCThreadTLS::from_vwt_check(worker.tls) };
281281
VMScanning::collect_object_roots_in("wb_unprot_roots", gc_tls, &mut self.factory, || {
282282
for object in self.objects.iter().copied() {
283-
if object.is_reachable::<Ruby>() {
283+
if object.is_reachable() {
284284
debug!(
285285
"[wb_unprot_roots] Visiting WB-unprotected object (parent): {}",
286286
object

mmtk/src/weak_proc.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ impl GCWork<Ruby> for ProcessObjFreeCandidates {
202202
let mut new_candidates = Vec::new();
203203

204204
for object in obj_free_candidates.iter().copied() {
205-
if object.is_reachable::<Ruby>() {
205+
if object.is_reachable() {
206206
// Forward and add back to the candidate list.
207207
let new_object = object.forward();
208208
trace!(
@@ -230,7 +230,7 @@ trait GlobalTableProcessingWork {
230230
// of `trace_object` due to the way it is used in `UPDATE_IF_MOVED`.
231231
let forward_object = |_worker, object: ObjectReference, _pin| {
232232
debug_assert!(
233-
mmtk::memory_manager::is_mmtk_object(object.to_address::<Ruby>()).is_some(),
233+
mmtk::memory_manager::is_mmtk_object(object.to_raw_address()).is_some(),
234234
"{} is not an MMTk object",
235235
object
236236
);
@@ -352,7 +352,7 @@ impl GCWork<Ruby> for UpdateWbUnprotectedObjectsList {
352352
debug!("Updating {} WB-unprotected objects", old_objects.len());
353353

354354
for object in old_objects {
355-
if object.is_reachable::<Ruby>() {
355+
if object.is_reachable() {
356356
// Forward and add back to the candidate list.
357357
let new_object = object.forward();
358358
trace!(
@@ -377,6 +377,6 @@ trait Forwardable {
377377

378378
impl Forwardable for ObjectReference {
379379
fn forward(&self) -> Self {
380-
self.get_forwarded_object::<Ruby>().unwrap_or(*self)
380+
self.get_forwarded_object().unwrap_or(*self)
381381
}
382382
}

0 commit comments

Comments
 (0)