jvmti_rs/wrapper/enums/
heap_root_kind.rs

1use crate::sys;
2
3#[derive(Debug)]
4pub enum JvmtiHeapRootKind {
5    JniGlobal,
6    SystemClass,
7    Monitor,
8    StackLocal,
9    JniLocal,
10    Thread,
11    Other,
12    Unsupported(sys::jvmtiHeapRootKind),
13}
14
15
16impl From<sys::jvmtiHeapRootKind> for JvmtiHeapRootKind {
17    fn from(value: sys::jvmtiHeapRootKind) -> Self {
18        match value {
19            sys::JVMTI_HEAP_ROOT_JNI_GLOBAL => JvmtiHeapRootKind::JniGlobal,
20            sys::JVMTI_HEAP_ROOT_SYSTEM_CLASS => JvmtiHeapRootKind::SystemClass,
21            sys::JVMTI_HEAP_ROOT_MONITOR => JvmtiHeapRootKind::Monitor,
22            sys::JVMTI_HEAP_ROOT_STACK_LOCAL => JvmtiHeapRootKind::StackLocal,
23            sys::JVMTI_HEAP_ROOT_JNI_LOCAL => JvmtiHeapRootKind::JniLocal,
24            sys::JVMTI_HEAP_ROOT_THREAD => JvmtiHeapRootKind::Thread,
25            sys::JVMTI_HEAP_ROOT_OTHER => JvmtiHeapRootKind::Other,
26            _ => JvmtiHeapRootKind::Unsupported(value)
27        }
28    }
29}
30
31impl From<JvmtiHeapRootKind> for sys::jvmtiHeapRootKind {
32    fn from(value: JvmtiHeapRootKind) -> Self {
33        match value {
34            JvmtiHeapRootKind::JniGlobal => sys::JVMTI_HEAP_ROOT_JNI_GLOBAL,
35            JvmtiHeapRootKind::SystemClass => sys::JVMTI_HEAP_ROOT_SYSTEM_CLASS,
36            JvmtiHeapRootKind::Monitor => sys::JVMTI_HEAP_ROOT_MONITOR,
37            JvmtiHeapRootKind::StackLocal => sys::JVMTI_HEAP_ROOT_STACK_LOCAL,
38            JvmtiHeapRootKind::JniLocal => sys::JVMTI_HEAP_ROOT_JNI_LOCAL,
39            JvmtiHeapRootKind::Thread => sys::JVMTI_HEAP_ROOT_THREAD,
40            JvmtiHeapRootKind::Other => sys::JVMTI_HEAP_ROOT_OTHER,
41            _ => sys::JVMTI_CONSTANT_UNSUPPORTED,
42        }
43    }
44}