RFR 8224831 [lworld] TestCallingConventionC1.java fails with -Xcomp

Ioi Lam ioi.lam at oracle.com
Tue Jun 4 04:31:47 UTC 2019


https://bugs.openjdk.java.net/browse/JDK-8224831
http://cr.openjdk.java.net/~iklam/valhalla/8224831-TestCallingConventionC1-fails-xcomp.v01/

The crash happens when a C1-compiled method calls a callee through its
unverified entry [1]. Because C1 doesn't scalarize the outgoing 
parameters, we
must link the call to a new type of "unverified value entry point" (UVEP).

This patch implements UVEP for C1, C2 and C2i adapters:

A C1-compiled virtual method looks like this:

     [(unverified) Entry Point]
         check ic_miss
     [Verified Value Entry Point (RO)]
         pack fields into value objects
         jump VVEP
     [Verified Entry Point]
         pack fields into value objects
         jump VVEP
     [unverified) Value Entry Point]
         check ic_miss
     [Verified Value Entry Point]
         main body of compiled code

A C2-compiled virtual method looks like this:

     [unverified) Entry Point]
         check ic_miss
     [Verified Value Entry Point (RO)]
         unpack fields (except <this>)
         jump VEP
     [unverified) Value Entry Point]
         check ic_miss
     [Verified Value Entry Point]
         unpack fields
         jump VEP
     [Verified Entry Point]
         main body of compiled code

For testing, I added more test cases in TestCallingConventionC1 to test 
all scenarios
where an UEP or UVEP is called.

[1] 
http://hg.openjdk.java.net/valhalla/valhalla/file/2d8d0287bc22/src/hotspot/share/code/compiledIC.cpp#l541


Thanks
- Ioi





More information about the valhalla-dev mailing list