jvmti_rs/wrapper/objects/
jclass_definition.rs1use crate::{sys::*, objects::*, JVMTIEnv};
2
3#[derive(Clone)]
4pub struct JClassDefinition<'a> {
5 pub klass: JClass<'a>,
6 pub class_bytes: JMemoryAllocate<'a>,
7}
8
9impl<'a> JClassDefinition<'a> {
10 pub fn new<'b: 'a>(klass: JClass<'a>, code_bytes: jmemory,
11 size: jlong,
12 env: &'b JVMTIEnv<'a>) -> JClassDefinition<'a> {
13 let class_bytes = JMemoryAllocate::new(code_bytes, size, env);
14 JClassDefinition {
15 klass,
16 class_bytes,
17 }
18 }
19}
20
21impl<'a> From<&JClassDefinition<'a>> for jvmtiClassDefinition {
22 fn from(definition: &JClassDefinition<'a>) -> Self {
23 jvmtiClassDefinition {
24 klass: definition.klass.into_inner(),
25 class_byte_count: definition.class_bytes.size as jint,
26 class_bytes: definition.class_bytes.ptr,
27 }
28 }
29}
30
31impl<'a> Drop for JClassDefinition<'a> {
32 fn drop(&mut self) {
33 let bytes = &mut self.class_bytes;
34 bytes.deallocate()
35 }
36}