Skip to content

Commit 54b0523

Browse files
authored
expose mmtk_get_base_pointer in the binding (#251)
We'll need this for the pinning profiler. We want to track which object was pinned when we called `ptr_pin` on a possibly internal pointer.
1 parent 000e78c commit 54b0523

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

mmtk/api/mmtk.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ extern void mmtk_unreachable(void);
5252
extern unsigned char mmtk_pin_object(void* obj);
5353
extern unsigned char mmtk_unpin_object(void* obj);
5454
extern bool mmtk_is_object_pinned(void* obj);
55+
extern void* mmtk_get_base_pointer(void* ptr);
5556
extern unsigned char mmtk_pin_pointer(void* ptr);
5657
extern bool mmtk_is_pointer_pinned(void* ptr);
5758
extern const char* get_mmtk_version(void);

mmtk/src/api.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,14 @@ macro_rules! handle_potential_internal_pointer {
582582
}};
583583
}
584584

585+
#[no_mangle]
586+
pub extern "C" fn mmtk_get_base_pointer(addr: Address) -> Address {
587+
if let Some(obj) = memory_manager::find_object_from_internal_pointer(addr, usize::MAX) {
588+
return obj.to_raw_address();
589+
}
590+
Address::ZERO
591+
}
592+
585593
#[no_mangle]
586594
pub extern "C" fn mmtk_pin_pointer(addr: Address) -> bool {
587595
crate::early_return_for_non_moving_build!(false);

0 commit comments

Comments
 (0)