[jdk18] RFR: 8277964: ClassCastException with no stack trace is thrown with -Xcomp in method handle invocation

Vladimir Kozlov kvn at openjdk.java.net
Wed Dec 15 17:19:02 UTC 2021


On Wed, 15 Dec 2021 07:00:17 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> A proper fix for this is to use the catchException combination. However, that introduces significant cold startup performance regression. JDK-8278447 tracks the work to address the performance regression using catchException and asSpreader combinator. It may require significant work and refactoring which is risky for JDK 18. 
>> 
>> It is proposed to implement a workaround in C2 to white list the relevant methods (all methods in sun.invoke.util.ValueConversions class) not to omit stack trace when exception is thrown in them.
>> 
>> Added new regression test. Tested tier1-3.
>
> src/hotspot/share/oops/method.cpp line 827:
> 
>> 825:  */
>> 826: bool Method::can_omit_stack_trace() {
>> 827:   if (method_holder()->class_loader_data()->is_boot_class_loader_data()) {
> 
> Do you actually need to check this?

@dholmes-ora, thank you for looking on it.
I discussed it with Mandy and agreed that we need to narrow down this workaround as much as possible. That is why it is done only for system class loaded by null loader.

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

PR: https://git.openjdk.java.net/jdk18/pull/27


More information about the core-libs-dev mailing list