Skip to content

Commit 4858019

Browse files
committed
refactor: move disable bytecode verify to native
1 parent 18c0f94 commit 4858019

File tree

8 files changed

+392
-63
lines changed

8 files changed

+392
-63
lines changed

native/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ add_library(
7070
jni/jvmplant_bridge.cc
7171
openjdkvm/openjdkvm_hook_impl.cc
7272
openjdkvm/jvmti_error_strings.cc
73+
platform/debug_utils.cc
7374
)
7475

7576
target_include_directories(

native/jni/jvmplant_bridge.cc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,12 +297,11 @@ JNIEXPORT jbyteArray JNICALL Java_dev_tmpfs_jvmplant_impl_JvmPlantNativeBridge_n
297297

298298
/*
299299
* Class: dev_tmpfs_jvmplant_impl_JvmPlantNativeBridge
300-
* Method: nativeRedefineClass
301-
* Signature: (Ljava/lang/Class;[B)V
300+
* Method: nativeRedefineClassV2
301+
* Signature: (Ljava/lang/Class;[BZ)V
302302
*/
303-
JNIEXPORT void JNICALL Java_dev_tmpfs_jvmplant_impl_JvmPlantNativeBridge_nativeRedefineClass(JNIEnv* env, jclass,
304-
jclass klass,
305-
jbyteArray bytecode) {
303+
JNIEXPORT void JNICALL Java_dev_tmpfs_jvmplant_impl_JvmPlantNativeBridge_nativeRedefineClassV2(
304+
JNIEnv* env, jclass, jclass klass, jbyteArray bytecode, jboolean skipVerification) {
306305
using namespace jvmplant::util;
307306
auto it = sJvmPlant;
308307
if (it == nullptr) {
@@ -330,7 +329,7 @@ JNIEXPORT void JNICALL Java_dev_tmpfs_jvmplant_impl_JvmPlantNativeBridge_nativeR
330329
return;
331330
}
332331
std::string errMsg;
333-
if (!it->RedefineClass(env, klass, bytecodeVector, errMsg)) {
332+
if (!it->RedefineClassV2(env, klass, bytecodeVector, static_cast<bool>(skipVerification), errMsg)) {
334333
ThrowIfNoPendingException(env, jvmplant::util::ExceptionNames::kRuntimeException, errMsg);
335334
return;
336335
}

native/jni/jvmplant_bridge.h

Lines changed: 9 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)