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

Move Object.registerNatives into HotSpot

    XMLWordPrintable

    Details

    • Subcomponent:
    • Compatibility Kind:
      behavioral
    • Compatibility Risk:
      minimal
    • Interface Kind:
      Java API
    • Scope:
      Implementation

      Description

      Summary

      IllegalAccessError will not be thrown when resolving a default method named registerNatives() method. Previously IAE was thrown because private native Object::registerNatives method was selected in method resolution.

      Problem

      Consider this Java program:

      public class RegisterNatives {
          interface I {
              default public void registerNatives() { 
                  System.out.println("I");
              }
          }
          static class A implements I { }
          public static void main(String... args) {
            A varA = new A();
            varA.registerNatives();
          }
      }

      Previously, this would throw an IllegalAccessError due the resolution logic giving priority to a private registerNatives method declared in Object rather than the default method in interface I:

      Exception in thread "main" java.lang.IllegalAccessError: class RegisterNatives tried to access private method 'void java.lang.Object.registerNatives()'
       (RegisterNatives is in unnamed module of loader 'app'; java.lang.Object is in module java.base of loader 'bootstrap')
              at RegisterNatives.main(RegisterNatives.java:6)

      When the private Object::registerNatives method is removed, the method resolution A::registerNatives will resolve successfully to the default method I::registerNatives.

      Solution

      The behavioral change does not have any compatibility risk since the previous behavior results in an error.

      Specification

      No spec change.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              redestad Claes Redestad
              Reporter:
              redestad Claes Redestad
              Reviewed By:
              David Holmes, Mandy Chung
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: