On Mon, 15 Apr 2024 18:25:02 GMT, Sonia Zaldana Calles <szald...@openjdk.org> 
wrote:

> Hi folks, 
> 
> This PR aims to fix 
> [JDK-8329581](https://bugs.openjdk.org/browse/JDK-8329581). 
> 
> I think the regression got introduced in 
> [JDK-8315458](https://bugs.openjdk.org/browse/JDK-8315458). 
> 
> In the issue linked above, 
> [LauncherHelper#getMainType](https://github.com/openjdk/jdk/pull/16461/files#diff-108a3a3e3c2d108c8c7f19ea498f641413b7c9239ecd2975a6c27d904c2ba226)
>  got removed to simplify launcher code.
> 
> Previously, we used ```getMainType``` to do the appropriate main method 
> invocation in ```JavaMain```. However, we currently attempt to do all types 
> of main method invocations at the same time 
> [here](https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/libjli/java.c#L623).
>  
> 
> Note how all of these invocations clear the exception reported with 
> [CHECK_EXCEPTION_FAIL](https://github.com/openjdk/jdk/blob/140f56718bbbfc31bb0c39255c68568fad285a1f/src/java.base/share/native/libjli/java.c#L390).
>  
> 
> Therefore, if a legitimate exception comes up during one of these 
> invocations, it does not get reported. 
> 
> I propose reintroducing ```LauncherHelper#getMainType``` but I'm looking 
> forward to your suggestions. 
> 
> Cheers, 
> Sonia

src/java.base/share/classes/sun/launcher/LauncherHelper.java line 954:

> 952: 
> 953:         int mods = mainMethod.getModifiers();
> 954:         boolean isStatic = Modifier.isStatic(mods);

Can get the value for `isStatic` and `noArgs` from the main type.

src/java.base/share/native/libjli/java.c line 645:

> 643:         res = invokeInstanceMainWithoutArgs(env, mainClass);
> 644:         break;
> 645:     }

Only one of invokeXXXMainYYYArgs is called.   Looks like `CHECK_EXCEPTION_FAIL` 
and `CHECK_EXCEPTION_NULL_FAIL` are not needed and can use 
`CHECK_EXCEPTION_LEAVE` and `CHECK_EXCEPTION_NULL_LEAVE` instead?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18786#discussion_r1566502390
PR Review Comment: https://git.openjdk.org/jdk/pull/18786#discussion_r1566545886

Reply via email to