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.
|