< prev index next >
test/hotspot/jtreg/compiler/valhalla/valuetypes/TestCallingConventionC1.java
Print this page
@@ -42,25 +42,37 @@
public static final int C1 = COMP_LEVEL_SIMPLE;
public static final int C2 = COMP_LEVEL_FULL_OPTIMIZATION;
@Override
public int getNumScenarios() {
- return 2;
+ return 4;
}
@Override
public String[] getVMParameters(int scenario) {
switch (scenario) {
-
+ case 0: return new String[] {
// Default: both C1 and C2 are enabled, tierd compilation enabled
- case 0: return new String[] {"-XX:+EnableValhallaC1", "-XX:CICompilerCount=2"
- // , "-XX:-CheckCompressedOops", "-XX:CompileCommand=print,*::test78*"
- //, "-XX:CompileCommand=print,*::func_c1"
+ "-XX:+EnableValhallaC1",
+ "-XX:CICompilerCount=2"
+ };
+ case 1: return new String[] {
+ // Same as above, but flip all the compLevel=C1 and compLevel=C2, so we test
+ // the compliment of the above scenario.
+ "-XX:+EnableValhallaC1",
+ "-XX:CICompilerCount=2",
+ "-DFlipC1C2=true"
};
+ case 2: return new String[] {
// Only C1. Tierd compilation disabled.
- case 1: return new String[] {"-XX:+EnableValhallaC1", "-XX:TieredStopAtLevel=1"
- // , "-XX:-CheckCompressedOops", "-XX:CompileCommand=print,*::test76*"
+ "-XX:+EnableValhallaC1",
+ "-XX:TieredStopAtLevel=1",
+ };
+ case 3: return new String[] {
+ // Only C2.
+ "-XX:-EnableValhallaC1",
+ "-XX:TieredStopAtLevel=4",
};
}
return null;
}
@@ -1890,6 +1902,72 @@
Asserts.assertEQ(rp1.x, x);
Asserts.assertEQ(rp1.y, y);
Asserts.assertEQ(rp1.y.n, i);
}
}
+
+ // C1->C1 - caller is compiled first. It invokes callee(test97) a few times while the
+ // callee is executed by the interpreter. Then, callee is compiled
+ // and SharedRuntime::fixup_callers_callsite is called to fix up the
+ // callsite from test97_verifier->test97.
+ @Test(compLevel = C1)
+ public int test97(Point p1, Point p2) {
+ return test97_helper(p1, p2);
+ }
+
+ @DontInline @DontCompile
+ public int test97_helper(Point p1, Point p2) {
+ return p1.x + p1.y + p2.x + p2.y;
+ }
+
+ @ForceCompile(compLevel = C1)
+ public void test97_verifier(boolean warmup) {
+ int count = warmup ? 1 : 20;
+ for (int i=0; i<count; i++) {
+ int result = test97(pointField1, pointField2);
+ int n = test97_helper(pointField1, pointField2);
+ Asserts.assertEQ(result, n);
+ }
+ }
+
+ // C1->C2 - same as test97, except the callee is compiled by c2.
+ @Test(compLevel = C2)
+ public int test98(Point p1, Point p2) {
+ return test98_helper(p1, p2);
+ }
+
+ @DontInline @DontCompile
+ public int test98_helper(Point p1, Point p2) {
+ return p1.x + p1.y + p2.x + p2.y;
+ }
+
+ @ForceCompile(compLevel = C1)
+ public void test98_verifier(boolean warmup) {
+ int count = warmup ? 1 : 20;
+ for (int i=0; i<count; i++) {
+ int result = test98(pointField1, pointField2);
+ int n = test98_helper(pointField1, pointField2);
+ Asserts.assertEQ(result, n);
+ }
+ }
+
+ // C1->C2 - same as test97, except the callee is a static method.
+ @Test(compLevel = C1)
+ public static int test99(Point p1, Point p2) {
+ return test99_helper(p1, p2);
+ }
+
+ @DontInline @DontCompile
+ public static int test99_helper(Point p1, Point p2) {
+ return p1.x + p1.y + p2.x + p2.y;
+ }
+
+ @ForceCompile(compLevel = C1)
+ public void test99_verifier(boolean warmup) {
+ int count = warmup ? 1 : 20;
+ for (int i=0; i<count; i++) {
+ int result = test99(pointField1, pointField2);
+ int n = test99_helper(pointField1, pointField2);
+ Asserts.assertEQ(result, n);
+ }
+ }
}
< prev index next >