RFR 8223229 [lworld] C1 crashes when calling final virtual methods with value arguments

Tobias Hartmann tobias.hartmann at oracle.com
Thu May 2 08:00:23 UTC 2019


Hi Ioi,

On 02.05.19 08:06, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8223229
> http://cr.openjdk.java.net/~iklam/valhalla/8223229-c1-opt-virtual-call-scalarized-args.v01/

In sharedRuntime.cpp:1147, could you use caller->code()->is_compiled_by_c1() instead of doing a code
cache lookup?

Otherwise it looks good to me!

> BTW, I am not quite sure what to do with the unverified entry point. It seems to me that we would
> need something like this:
> 
> void CompiledIC::compute_monomorphic_entry(...) {
>  ...
>  if (is_optimized) {
>     entry = caller_is_c1 ?
>               method_code->verified_value_entry_point() :
>               method_code->verified_entry_point();
>   } else {
>     entry = caller_is_c1 ?
>               method_code->unverified_value_entry_point() :
>               method_code->entry_point();
>     }
>   }
> 
> Tobias, what do you think?

Yes, it seems that we need an unverified value entry point that falls through to the VVEP:

UEP
VVEP (RO)
UVEP     <- new
VVEP
VEP

I can implement this for C2, just file a bug when you have the C1 part ready.

If everything is implemented, we should think about a better naming scheme for these entry points
(John had some suggestions).

Thanks,
Tobias


More information about the valhalla-dev mailing list