On Fri, 19 Apr 2024 17:04:30 GMT, Mandy Chung <mch...@openjdk.org> wrote:

>> @lahodaj 
>> 
>>> I would suggest to take the test from 18753 though - doing a change like 
>>> this without a test may lead to hard-to-find regressions in the future. 
>>> (Note the current test should guard against both JDK-8329420 and 
>>> JDK-8329581.)
>> 
>> Agreed. I’ll add the test case if this PR proceeds (see my comment above). 
>> 
>>> as Mandy points out, `LaucherHelper` already reads/has variables for 
>>> "is-static" and "no-arguments" in `validateMainMethod`, so it should be 
>>> possible to just use that values; 
>> 
>> Just to clarify, this would still mean converting “isStatic” and “noArgs” 
>> from local variables to fields so I am able to read them on the C side of 
>> things. Did I understand this correctly?
>> 
>>> also as Mandy points out, we can probably get rid of `CHECK_EXCEPTION_FAIL` 
>>> and `CHECK_EXCEPTION_NULL_FAIL`, and use the `..._LEAVE` variants, no? (The 
>>> `..._FAIL` variants where needed so that the launcher could continue with 
>>> the next variant, but since we now only call the correct variant, we can 
>>> just stop if something goes wrong?)
>> 
>> Agreed, I’ve updated that on my side of things.
>
>> Just to clarify, this would still mean converting “isStatic” and “noArgs” 
>> from local variables to fields so I am able to read them on the C side of 
>> things. Did I understand this correctly?
> 
> I'm okay with adding static boolean fields and read by the native code and 
> the name can be explicit like `isStaticMain` and `mainWithNoArg`.

Hi @mlchung, thanks for the feedback! I’ve pushed the updates.

Just a question about ```NULL_CHECK0```. 

```NULL_CHECK0``` reports the error message and then the exception is described 
in ```CHECK_EXCEPTION_LEAVE```. This results in a stack trace that looks like 
this: 


Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: 
DemoSonia$SomeDependency
        at DemoSonia.<clinit>(DemoSonia.java:3)
Caused by: java.lang.ClassNotFoundException: DemoSonia$SomeDependency
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
        ... 1 more



The JNI error message didn’t previously get reported before the regression was 
introduced, so I just wanted to make sure we were okay with this. 

Looking forward to your comments!

-------------

PR Comment: https://git.openjdk.org/jdk/pull/18786#issuecomment-2073092870

Reply via email to