< prev index next >
test/hotspot/jtreg/compiler/valhalla/valuetypes/TestCallingConvention.java
Print this page
@@ -42,10 +42,12 @@
public class TestCallingConvention extends ValueTypeTest {
// Extra VM parameters for some test scenarios. See ValueTypeTest.getVMParameters()
@Override
public String[] getExtraVMParameters(int scenario) {
switch (scenario) {
+ case 0: return new String[] {"-Dsun.reflect.inflationThreshold=10000"}; // Don't generate bytecodes but call through runtime for reflective calls
+ case 1: return new String[] {"-Dsun.reflect.inflationThreshold=10000"};
case 3: return new String[] {"-XX:ValueArrayElemMaxFlatSize=0"};
}
return null;
}
@@ -567,6 +569,52 @@
@DontCompile
public void test28_verifier(boolean warmup) {
String result = test28();
}
+
+ // Test calling a method returning a value type as fields via reflection
+ MyValue3 test29_vt = MyValue3.create();
+
+ @Test
+ public MyValue3 test29() {
+ return test29_vt;
+ }
+
+ @DontCompile
+ public void test29_verifier(boolean warmup) throws Exception {
+ MyValue3 vt = (MyValue3)TestCallingConvention.class.getDeclaredMethod("test29").invoke(this);
+ test29_vt.verify(vt);
+ }
+
+// TODO enable once JDK-8224110 is fixed
+/*
+ @Test
+ public MyValue3 test30(MyValue3[] array) {
+ MyValue3 result = MyValue3.create();
+ array[0] = result;
+ return result;
+ }
+
+ @DontCompile
+ public void test30_verifier(boolean warmup) throws Exception {
+ MyValue3[] array = new MyValue3[1];
+ MyValue3 vt = (MyValue3)TestCallingConvention.class.getDeclaredMethod("test30", MyValue3[].class).invoke(this, array);
+ array[0].verify(vt);
+ }
+*/
+
+ MyValue3 test31_vt;
+
+ @Test
+ public MyValue3 test31() {
+ MyValue3 result = MyValue3.create();
+ test31_vt = result;
+ return result;
+ }
+
+ @DontCompile
+ public void test31_verifier(boolean warmup) throws Exception {
+ MyValue3 vt = (MyValue3)TestCallingConvention.class.getDeclaredMethod("test31").invoke(this);
+ test31_vt.verify(vt);
+ }
}
< prev index next >