[JVMCI] CompilerToVM::resolveMethod should correctly handle private methods in interfaces

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P2
    • 9
    • Affects Version/s: 9
    • Component/s: hotspot
    • b120
    • Verified

      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 {

            Assignee:
            Tom Rodriguez
            Reporter:
            Igor Veresov
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: