On 10/22/2019 7:13 AM, Claes Redestad wrote:


On 2019-10-22 13:05, Andrew Dinn wrote:
On 22/10/2019 12:05, Claes Redestad wrote:
On 2019-10-22 12:44, Andrew Dinn wrote:
Why not leave it void?

I guess:

http://cr.openjdk.java.net/~redestad/8232613/open.02/
Ship it ;-)

No wait, I missed the use in jni.cpp where the bool return is actually
used. I ignored it in systemDict since when I got an exception there
(by misspelling a name or using the wrong signature) the exception
bubbles up and crashes the VM.

Perhaps this could be reworked to remove the bool cleanly, but let's go back to open.01 and move that cleanup to a follow-up.

/Claes

Hi Claes,

I do have a concern that this will be a behavioral change for method resolution if Object::registerNatives is removed.  For example,

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();
  }

Currently class A finds registerNatives in its superclass Object and the test receives the following:

   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)

With your change interface I's registerNatives default method is invoked successfully.  I don't think this is a major backward compatibilty issue but we should have someone from core-libs okay the removal of the method from Object before committing.  In addition, can you add this test as part of your change?  I think it would be okay to put it in open/test/hotspot/jtreg/runtime/8024804 which contains an existing registerNatives test.

Otherwise I think .01 from the Hotspot side looks good.  Only one minor comment:
method.cpp
- line #426 and 427:  Since you are in this code can your change to resourceMark(THREAD)?

Thanks,
Lois




Reply via email to