RFR: 8221653 [lworld] Calling convention - C1 to Interpreter
Ioi Lam
ioi.lam at oracle.com
Fri Mar 29 04:27:59 UTC 2019
https://bugs.openjdk.java.net/browse/JDK-8221653
http://cr.openjdk.java.net/~iklam/valhalla/8221653-c1-calls-interp.v01/
This is the first step of making C1/C2 work together. Since C1 doesn't
scalarize outgoing parameters, I changed the method dispatch code to
detect when a call is made by C1 code, and jump to
Method::_from_compiled_value_entry (in contrast, C2 would jump to
Method::_from_compiled_entry or Method::_from_compiled_value_ro_entry).
I am not particularly proud of sprinkling caller_is_c1 all over the
code. Does anyone have a better suggestion?
For testing, I added TestCallingConventionC1.java. I also improved the
@Test annotation in
jtreg/compiler/valhalla/valuetypes/ValueTypeTest.java to specify whether
C1 or C2 should be used.
In addition, I changed the order of how the VM arguments are put
together in ValueTypeTest::execute_vm(). This allows the individual
tests to override arguments specified by ValueTypeTest.java.
With this changeset, to test C1-only, the command-line has changed to
cd test/hotspot/jtreg/compiler/valhalla/valuetypes
jtreg -Dtest.c1=true \
-vmoptions:-XX:+EnableValhallaC1 \
-vmoptions:-XX:TieredStopAtLevel=1 \
-vmoptions:-XX:-ValueTypePassFieldsAsArgs \
-vmoptions:-XX:-ValueTypeReturnedAsFields \
.
Testing:
+ All */valhalla/* tests passed with default configuration (C2 only)
+ All jtreg/compiler/valhalla/* tests passed in C1-only mode
Thanks
- Ioi
More information about the valhalla-dev
mailing list