resolveMethod() should check for incorrect interface method overloads with non-public methods.
diff --git a/src/share/vm/jvmci/jvmciCompilerToVM.cpp b/src/share/vm/jvmci/jvmciCompilerToVM.cpp
--- a/src/share/vm/jvmci/jvmciCompilerToVM.cpp
+++ b/src/share/vm/jvmci/jvmciCompilerToVM.cpp
@@ -645,6 +645,9 @@
assert(recv_klass->is_subtype_of(holder_klass), "");
// do actual lookup
methodHandle sel_method = LinkResolver::lookup_instance_method_in_klasses(recv_klass, resolved_method->name(), resolved_method->signature(), CHECK_AND_CLEAR_0);
+ if (sel_method.not_null() && !sel_method->is_public()) {
+ return NULL;
+ }
oop result = CompilerToVM::get_jvmci_method(sel_method, CHECK_NULL);
return JNIHandles::make_local(THREAD, result);
} else {
diff --git a/src/share/vm/jvmci/jvmciCompilerToVM.cpp b/src/share/vm/jvmci/jvmciCompilerToVM.cpp
--- a/src/share/vm/jvmci/jvmciCompilerToVM.cpp
+++ b/src/share/vm/jvmci/jvmciCompilerToVM.cpp
@@ -645,6 +645,9 @@
assert(recv_klass->is_subtype_of(holder_klass), "");
// do actual lookup
methodHandle sel_method = LinkResolver::lookup_instance_method_in_klasses(recv_klass, resolved_method->name(), resolved_method->signature(), CHECK_AND_CLEAR_0);
+ if (sel_method.not_null() && !sel_method->is_public()) {
+ return NULL;
+ }
oop result = CompilerToVM::get_jvmci_method(sel_method, CHECK_NULL);
return JNIHandles::make_local(THREAD, result);
} else {
- relates to
-
JDK-8154904 vm.defmeth tests should be structured to avoid unresolved classes
-
- Closed
-