jvmti_rs/wrapper/jvmtifns/
heap_jni.rs1use std::ffi::c_void;
2
3use crate::{errors::*, JVMTIEnv, objects::*, sys::*, Transform};
4
5impl<'a> JVMTIEnv<'a> {
6 pub fn follow_references<K>(&self, jni: &jni::JNIEnv<'a>, heap_filter: jint, class: K,
7 initial_object: &JObject,
8 callbacks: &Vec<jvmtiHeapCallbacks>,
9 user_data: *const c_void,
10 ) -> Result<()>
11 where
12 K: Transform<'a, JClass<'a>>, {
13 let klass = class.transform(jni)?;
14
15 jvmti_call!(self.jvmti_raw(), FollowReferences,
16 heap_filter,
17 klass.into_inner(),
18 initial_object.into_inner(),
19 callbacks.as_ptr(),
20 user_data
21 )
22 }
23
24 pub fn iterate_through_heap<K>(&self, jni: &jni::JNIEnv<'a>, heap_filter: jint, class: K,
25 callbacks: &Vec<jvmtiHeapCallbacks>,
26 user_data: *const c_void,
27 ) -> Result<()>
28 where
29 K: Transform<'a, JClass<'a>>, {
30 let klass = class.transform(jni)?;
31
32 jvmti_call!(self.jvmti_raw(), IterateThroughHeap,
33 heap_filter,
34 klass.into_inner(),
35 callbacks.as_ptr(),
36 user_data
37 )
38 }
39}