(jvmti_env: *mut jvmtiEnv,
jni_env: *mut JNIEnv,
class_being_redefined: jclass,
name: *const c_char,
| 102 | } |
| 103 | |
| 104 | unsafe fn transform_class_file(jvmti_env: *mut jvmtiEnv, |
| 105 | jni_env: *mut JNIEnv, |
| 106 | class_being_redefined: jclass, |
| 107 | name: *const c_char, |
| 108 | class_data_len: jint, |
| 109 | class_data: *const c_uchar, |
| 110 | new_class_data_len: *mut jint, |
| 111 | new_class_data: *mut *mut c_uchar) |
| 112 | -> Result<(), String> { |
| 113 | // Must have name and must be being first class definition |
| 114 | if name.is_null() || !class_being_redefined.is_null() { |
| 115 | return Result::Ok(()); |
| 116 | } |
| 117 | return match CStr::from_ptr(name).to_str() { |
| 118 | Ok("java/lang/Throwable") => |
| 119 | manip::manip_throwable_class(jvmti_env, jni_env, class_data_len, class_data, new_class_data_len, new_class_data), |
| 120 | Ok("java/lang/StackTraceElement") => |
| 121 | manip::manip_element_class(jvmti_env, jni_env, class_data_len, class_data, new_class_data_len, new_class_data), |
| 122 | _ => |
| 123 | Result::Ok(()) |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | unsafe extern "C" fn class_file_load_hook(jvmti_env: *mut jvmtiEnv, |
| 128 | jni_env: *mut JNIEnv, |
no test coverage detected