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