comparison src/share/vm/runtime/reflection.cpp @ 10381:4552a7633a07

8015385: Remove RelaxAccessControlCheck for JDK 8 bytecodes Summary: Check bytecode versions along with RelaxAccessControlCheck version Reviewed-by: dholmes, acorn
author hseigel
date Mon, 03 Jun 2013 10:00:10 -0400
parents efe8b7d64424
children c1bd7b5bdc70
comparison
equal deleted inserted replaced
10380:532c55335fb6 10381:4552a7633a07
42 #include "runtime/reflection.hpp" 42 #include "runtime/reflection.hpp"
43 #include "runtime/reflectionUtils.hpp" 43 #include "runtime/reflectionUtils.hpp"
44 #include "runtime/signature.hpp" 44 #include "runtime/signature.hpp"
45 #include "runtime/vframe.hpp" 45 #include "runtime/vframe.hpp"
46 46
47 #define JAVA_1_5_VERSION 49
48
49 static void trace_class_resolution(Klass* to_class) { 47 static void trace_class_resolution(Klass* to_class) {
50 ResourceMark rm; 48 ResourceMark rm;
51 int line_number = -1; 49 int line_number = -1;
52 const char * source_file = NULL; 50 const char * source_file = NULL;
53 Klass* caller = NULL; 51 Klass* caller = NULL;
505 // because one is inside the other. 503 // because one is inside the other.
506 if (under_host_klass(accessor_ik, accessee) || 504 if (under_host_klass(accessor_ik, accessee) ||
507 under_host_klass(accessee_ik, accessor)) 505 under_host_klass(accessee_ik, accessor))
508 return true; 506 return true;
509 507
510 if (RelaxAccessControlCheck || 508 if ((RelaxAccessControlCheck &&
511 (accessor_ik->major_version() < JAVA_1_5_VERSION && 509 accessor_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION &&
512 accessee_ik->major_version() < JAVA_1_5_VERSION)) { 510 accessee_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION) ||
511 (accessor_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION &&
512 accessee_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION)) {
513 return classloader_only && 513 return classloader_only &&
514 Verifier::relax_verify_for(accessor_ik->class_loader()) && 514 Verifier::relax_verify_for(accessor_ik->class_loader()) &&
515 accessor_ik->protection_domain() == accessee_ik->protection_domain() && 515 accessor_ik->protection_domain() == accessee_ik->protection_domain() &&
516 accessor_ik->class_loader() == accessee_ik->class_loader(); 516 accessor_ik->class_loader() == accessee_ik->class_loader();
517 } else { 517 } else {