119 |
119 |
120 extern "C" { |
120 extern "C" { |
121 void JNICALL JVM_RegisterUnsafeMethods(JNIEnv *env, jclass unsafecls); |
121 void JNICALL JVM_RegisterUnsafeMethods(JNIEnv *env, jclass unsafecls); |
122 void JNICALL JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass unsafecls); |
122 void JNICALL JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass unsafecls); |
123 void JNICALL JVM_RegisterPerfMethods(JNIEnv *env, jclass perfclass); |
123 void JNICALL JVM_RegisterPerfMethods(JNIEnv *env, jclass perfclass); |
|
124 void JNICALL JVM_RegisterWhiteBoxMethods(JNIEnv *env, jclass wbclass); |
124 } |
125 } |
125 |
126 |
126 #define CC (char*) /* cast a literal from (const char*) */ |
127 #define CC (char*) /* cast a literal from (const char*) */ |
127 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) |
128 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) |
128 |
129 |
131 { CC"Java_java_io_ObjectOutputStream_getPrimitiveFieldValues", NULL, FN_PTR(JVM_GetPrimitiveFieldValues) }, // intercept ObjectOutputStream getPrimitiveFieldValues for faster serialization |
132 { CC"Java_java_io_ObjectOutputStream_getPrimitiveFieldValues", NULL, FN_PTR(JVM_GetPrimitiveFieldValues) }, // intercept ObjectOutputStream getPrimitiveFieldValues for faster serialization |
132 { CC"Java_java_io_ObjectInputStream_setPrimitiveFieldValues", NULL, FN_PTR(JVM_SetPrimitiveFieldValues) }, // intercept ObjectInputStream setPrimitiveFieldValues for faster serialization |
133 { CC"Java_java_io_ObjectInputStream_setPrimitiveFieldValues", NULL, FN_PTR(JVM_SetPrimitiveFieldValues) }, // intercept ObjectInputStream setPrimitiveFieldValues for faster serialization |
133 |
134 |
134 { CC"Java_sun_misc_Unsafe_registerNatives", NULL, FN_PTR(JVM_RegisterUnsafeMethods) }, |
135 { CC"Java_sun_misc_Unsafe_registerNatives", NULL, FN_PTR(JVM_RegisterUnsafeMethods) }, |
135 { CC"Java_java_lang_invoke_MethodHandleNatives_registerNatives", NULL, FN_PTR(JVM_RegisterMethodHandleMethods) }, |
136 { CC"Java_java_lang_invoke_MethodHandleNatives_registerNatives", NULL, FN_PTR(JVM_RegisterMethodHandleMethods) }, |
136 { CC"Java_sun_misc_Perf_registerNatives", NULL, FN_PTR(JVM_RegisterPerfMethods) } |
137 { CC"Java_sun_misc_Perf_registerNatives", NULL, FN_PTR(JVM_RegisterPerfMethods) }, |
|
138 { CC"Java_sun_hotspot_WhiteBox_registerNatives", NULL, FN_PTR(JVM_RegisterWhiteBoxMethods) }, |
137 }; |
139 }; |
138 |
140 |
139 static address lookup_special_native(char* jni_name) { |
141 static address lookup_special_native(char* jni_name) { |
140 int i = !JDK_Version::is_gte_jdk14x_version() ? 0 : 2; // see comment in lookup_special_native_methods |
142 int i = !JDK_Version::is_gte_jdk14x_version() ? 0 : 2; // see comment in lookup_special_native_methods |
141 int count = sizeof(lookup_special_native_methods) / sizeof(JNINativeMethod); |
143 int count = sizeof(lookup_special_native_methods) / sizeof(JNINativeMethod); |