< prev index next >

src/hotspot/share/classfile/verifier.cpp

Print this page




 291     // guarded by Universe::is_gte_jdk14x_version().
 292     // Also for lambda generated code, gte jdk8
 293     (!is_reflect));
 294 }
 295 
 296 Symbol* Verifier::inference_verify(
 297     InstanceKlass* klass, char* message, size_t message_len, TRAPS) {
 298   JavaThread* thread = (JavaThread*)THREAD;
 299   JNIEnv *env = thread->jni_environment();
 300 
 301   verify_byte_codes_fn_t verify_func = verify_byte_codes_fn();
 302 
 303   if (verify_func == NULL) {
 304     jio_snprintf(message, message_len, "Could not link verifier");
 305     return vmSymbols::java_lang_VerifyError();
 306   }
 307 
 308   ResourceMark rm(THREAD);
 309   log_info(verification)("Verifying class %s with old format", klass->external_name());
 310 
 311   jclass cls = (jclass) JNIHandles::make_local(env, klass->java_mirror());
 312   jint result;
 313 
 314   {
 315     HandleMark hm(thread);
 316     ThreadToNativeFromVM ttn(thread);
 317     // ThreadToNativeFromVM takes care of changing thread_state, so safepoint
 318     // code knows that we have left the VM
 319 
 320     result = (*verify_func)(env, cls, message, (int)message_len, klass->major_version());
 321   }
 322 
 323   JNIHandles::destroy_local(cls);
 324 
 325   // These numbers are chosen so that VerifyClassCodes interface doesn't need
 326   // to be changed (still return jboolean (unsigned char)), and result is
 327   // 1 when verification is passed.
 328   if (result == 0) {
 329     return vmSymbols::java_lang_VerifyError();
 330   } else if (result == 1) {
 331     return NULL; // verified.




 291     // guarded by Universe::is_gte_jdk14x_version().
 292     // Also for lambda generated code, gte jdk8
 293     (!is_reflect));
 294 }
 295 
 296 Symbol* Verifier::inference_verify(
 297     InstanceKlass* klass, char* message, size_t message_len, TRAPS) {
 298   JavaThread* thread = (JavaThread*)THREAD;
 299   JNIEnv *env = thread->jni_environment();
 300 
 301   verify_byte_codes_fn_t verify_func = verify_byte_codes_fn();
 302 
 303   if (verify_func == NULL) {
 304     jio_snprintf(message, message_len, "Could not link verifier");
 305     return vmSymbols::java_lang_VerifyError();
 306   }
 307 
 308   ResourceMark rm(THREAD);
 309   log_info(verification)("Verifying class %s with old format", klass->external_name());
 310 
 311   jclass cls = (jclass) JNIHandles::make_local(thread, klass->java_mirror());
 312   jint result;
 313 
 314   {
 315     HandleMark hm(thread);
 316     ThreadToNativeFromVM ttn(thread);
 317     // ThreadToNativeFromVM takes care of changing thread_state, so safepoint
 318     // code knows that we have left the VM
 319 
 320     result = (*verify_func)(env, cls, message, (int)message_len, klass->major_version());
 321   }
 322 
 323   JNIHandles::destroy_local(cls);
 324 
 325   // These numbers are chosen so that VerifyClassCodes interface doesn't need
 326   // to be changed (still return jboolean (unsigned char)), and result is
 327   // 1 when verification is passed.
 328   if (result == 0) {
 329     return vmSymbols::java_lang_VerifyError();
 330   } else if (result == 1) {
 331     return NULL; // verified.


< prev index next >