Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8152903

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

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 9
    • 9
    • 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 {

            never Tom Rodriguez
            iveresov Igor Veresov
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: