jvmti_rs/wrapper/jvmtifns/
heap_jni.rs

1use 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}