< prev index next >

test/hotspot/jtreg/compiler/valhalla/valuetypes/ValueTypeTest.java

Print this page




  93     private static final boolean PRINT_TIMES = Boolean.parseBoolean(System.getProperty("PrintTimes", "false"));
  94     private static       boolean VERIFY_IR = Boolean.parseBoolean(System.getProperty("VerifyIR", "true"));
  95     private static final boolean VERIFY_VM = Boolean.parseBoolean(System.getProperty("VerifyVM", "false"));
  96     private static final String SCENARIOS = System.getProperty("Scenarios", "");
  97     private static final String TESTLIST = System.getProperty("Testlist", "");
  98     private static final String EXCLUDELIST = System.getProperty("Exclude", "");
  99     private static final int WARMUP = Integer.parseInt(System.getProperty("Warmup", "251"));
 100     private static final boolean DUMP_REPLAY = Boolean.parseBoolean(System.getProperty("DumpReplay", "false"));
 101 
 102     // Pre-defined settings
 103     private static final List<String> defaultFlags = Arrays.asList(
 104         "-XX:-BackgroundCompilation", "-XX:CICompilerCount=1",
 105         "-XX:+PrintCompilation", "-XX:+PrintIdeal", "-XX:+PrintOptoAssembly",
 106         "-XX:CompileCommand=quiet",
 107         "-XX:CompileCommand=compileonly,java.lang.invoke.*::*",
 108         "-XX:CompileCommand=compileonly,java.lang.Long::sum",
 109         "-XX:CompileCommand=compileonly,java.lang.Object::<init>",
 110         "-XX:CompileCommand=compileonly,compiler.valhalla.valuetypes.*::*");
 111     private static final List<String> verifyFlags = Arrays.asList(
 112         "-XX:+VerifyOops", "-XX:+VerifyStack", "-XX:+VerifyLastFrame", "-XX:+VerifyBeforeGC", "-XX:+VerifyAfterGC",
 113         "-XX:+VerifyDuringGC", "-XX:+VerifyAdapterSharing", "-XX:+StressValueTypeReturnedAsFields");
 114 
 115     protected static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
 116     protected static final int ValueTypePassFieldsAsArgsOn = 0x1;
 117     protected static final int ValueTypePassFieldsAsArgsOff = 0x2;
 118     protected static final int ValueTypeArrayFlattenOn = 0x4;
 119     protected static final int ValueTypeArrayFlattenOff = 0x8;
 120     protected static final int ValueTypeReturnedAsFieldsOn = 0x10;
 121     protected static final int ValueTypeReturnedAsFieldsOff = 0x20;
 122     static final int AllFlags = ValueTypePassFieldsAsArgsOn | ValueTypePassFieldsAsArgsOff | ValueTypeArrayFlattenOn | ValueTypeArrayFlattenOff | ValueTypeReturnedAsFieldsOn;
 123     protected static final boolean ValueTypePassFieldsAsArgs = (Boolean)WHITE_BOX.getVMFlag("ValueTypePassFieldsAsArgs");
 124     protected static final boolean ValueTypeArrayFlatten = (Boolean)WHITE_BOX.getVMFlag("ValueArrayFlatten");
 125     protected static final boolean ValueTypeReturnedAsFields = (Boolean)WHITE_BOX.getVMFlag("ValueTypeReturnedAsFields");
 126     protected static final boolean NullableValueTypes = (Boolean)WHITE_BOX.getVMFlag("NullableValueTypes");
 127     protected static final int COMP_LEVEL_ANY = -2;
 128     protected static final int COMP_LEVEL_FULL_OPTIMIZATION = 4;
 129     protected static final Hashtable<String, Method> tests = new Hashtable<String, Method>();
 130     protected static final boolean USE_COMPILER = WHITE_BOX.getBooleanVMFlag("UseCompiler");
 131     protected static final boolean PRINT_IDEAL  = WHITE_BOX.getBooleanVMFlag("PrintIdeal");
 132     protected static final boolean XCOMP = Platform.isComp();
 133 
 134     // Regular expressions used to match nodes in the PrintIdeal output
 135     protected static final String START = "(\\d+\\t(.*";
 136     protected static final String MID = ".*)+\\t===.*";
 137     protected static final String END = ")|";
 138     protected static final String ALLOC  = "(.*precise klass compiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_instance_Java" + END;
 139     protected static final String ALLOCA = "(.*precise klass \\[Lcompiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_array_Java" + END;
 140     protected static final String LOAD   = START + "Load(B|S|I|L|F|D|P|N)" + MID + "@compiler/valhalla/valuetypes/MyValue.*" + END;
 141     protected static final String LOADK  = START + "LoadK" + MID + END;
 142     protected static final String STORE  = START + "Store(B|S|I|L|F|D|P|N)" + MID + "@compiler/valhalla/valuetypes/MyValue.*" + END;
 143     protected static final String LOOP   = START + "Loop" + MID + "" + END;
 144     protected static final String TRAP   = START + "CallStaticJava" + MID + "uncommon_trap.*(unstable_if|predicate)" + END;
 145     protected static final String RETURN = START + "Return" + MID + "returns" + END;
 146     protected static final String LINKTOSTATIC = START + "CallStaticJava" + MID + "linkToStatic" + END;
 147     protected static final String NPE = START + "CallStaticJava" + MID + "null_check" + END;
 148     protected static final String CALL = START + "CallStaticJava" + MID + END;
 149     protected static final String STOREVALUETYPEFIELDS = START + "CallStaticJava" + MID + "store_value_type_fields" + END;
 150     protected static final String SCOBJ = "(.*# ScObj.*" + END;
 151 
 152     public static String[] concat(String prefix[], String... extra) {
 153         ArrayList<String> list = new ArrayList<String>();
 154         if (prefix != null) {
 155             for (String s : prefix) {
 156                 list.add(s);
 157             }
 158         }
 159         if (extra != null) {
 160             for (String s : extra) {
 161                 list.add(s);
 162             }


 186                 "-XX:+ValueArrayFlatten",
 187                 "-XX:ValueFieldMaxFlatSize=-1",
 188                 "-XX:+ValueTypePassFieldsAsArgs",
 189                 "-XX:+ValueTypeReturnedAsFields"};
 190         case 1: return new String[] {
 191                 "-XX:-UseCompressedOops",
 192                 "-XX:ValueArrayElemMaxFlatOops=-1",
 193                 "-XX:ValueArrayElemMaxFlatSize=-1",
 194                 "-XX:+ValueArrayFlatten",
 195                 "-XX:ValueFieldMaxFlatSize=-1",
 196                 "-XX:-ValueTypePassFieldsAsArgs",
 197                 "-XX:-ValueTypeReturnedAsFields"};
 198         case 2: return new String[] {
 199                 "-DVerifyIR=false",
 200                 "-XX:-UseCompressedOops",
 201                 "-XX:ValueArrayElemMaxFlatOops=0",
 202                 "-XX:ValueArrayElemMaxFlatSize=0",
 203                 "-XX:-ValueArrayFlatten",
 204                 "-XX:ValueFieldMaxFlatSize=0",
 205                 "-XX:+ValueTypePassFieldsAsArgs",
 206                 "-XX:+ValueTypeReturnedAsFields"};


 207         case 3: return new String[] {
 208                 "-DVerifyIR=false",
 209                 "-XX:+AlwaysIncrementalInline",
 210                 "-XX:ValueArrayElemMaxFlatOops=0",
 211                 "-XX:ValueArrayElemMaxFlatSize=0",
 212                 "-XX:ValueFieldMaxFlatSize=0",
 213                 "-XX:-ValueTypePassFieldsAsArgs",
 214                 "-XX:-ValueTypeReturnedAsFields"};
 215         case 4: return new String[] {
 216                 "-DVerifyIR=false",
 217                 "-XX:ValueArrayElemMaxFlatOops=-1",
 218                 "-XX:ValueArrayElemMaxFlatSize=-1",
 219                 "-XX:+ValueArrayFlatten",
 220                 "-XX:ValueFieldMaxFlatSize=0",
 221                 "-XX:+ValueTypePassFieldsAsArgs",
 222                 "-XX:-ValueTypeReturnedAsFields"};

 223         }
 224 
 225         return null;
 226     }
 227 
 228     /**
 229      * Override this method to provide extra parameters for selected scenarios
 230      */
 231     public String[] getExtraVMParameters(int scenario) {
 232         return null;
 233     }
 234 
 235     public static void main(String[] args) throws Throwable {
 236         if (args.length != 1) {
 237             throw new RuntimeException("Usage: @run main/othervm/timeout=120 -Xbootclasspath/a:. -ea" +
 238                                        " -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions" +
 239                                        " -XX:+UnlockExperimentalVMOptions -XX:+WhiteBoxAPI -XX:+EnableValhalla" +
 240                                        " compiler.valhalla.valuetypes.ValueTypeTest <YourTestMainClass>");
 241         }
 242         String testMainClassName = args[0];




  93     private static final boolean PRINT_TIMES = Boolean.parseBoolean(System.getProperty("PrintTimes", "false"));
  94     private static       boolean VERIFY_IR = Boolean.parseBoolean(System.getProperty("VerifyIR", "true"));
  95     private static final boolean VERIFY_VM = Boolean.parseBoolean(System.getProperty("VerifyVM", "false"));
  96     private static final String SCENARIOS = System.getProperty("Scenarios", "");
  97     private static final String TESTLIST = System.getProperty("Testlist", "");
  98     private static final String EXCLUDELIST = System.getProperty("Exclude", "");
  99     private static final int WARMUP = Integer.parseInt(System.getProperty("Warmup", "251"));
 100     private static final boolean DUMP_REPLAY = Boolean.parseBoolean(System.getProperty("DumpReplay", "false"));
 101 
 102     // Pre-defined settings
 103     private static final List<String> defaultFlags = Arrays.asList(
 104         "-XX:-BackgroundCompilation", "-XX:CICompilerCount=1",
 105         "-XX:+PrintCompilation", "-XX:+PrintIdeal", "-XX:+PrintOptoAssembly",
 106         "-XX:CompileCommand=quiet",
 107         "-XX:CompileCommand=compileonly,java.lang.invoke.*::*",
 108         "-XX:CompileCommand=compileonly,java.lang.Long::sum",
 109         "-XX:CompileCommand=compileonly,java.lang.Object::<init>",
 110         "-XX:CompileCommand=compileonly,compiler.valhalla.valuetypes.*::*");
 111     private static final List<String> verifyFlags = Arrays.asList(
 112         "-XX:+VerifyOops", "-XX:+VerifyStack", "-XX:+VerifyLastFrame", "-XX:+VerifyBeforeGC", "-XX:+VerifyAfterGC",
 113         "-XX:+VerifyDuringGC", "-XX:+VerifyAdapterSharing");
 114 
 115     protected static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
 116     protected static final int ValueTypePassFieldsAsArgsOn = 0x1;
 117     protected static final int ValueTypePassFieldsAsArgsOff = 0x2;
 118     protected static final int ValueTypeArrayFlattenOn = 0x4;
 119     protected static final int ValueTypeArrayFlattenOff = 0x8;
 120     protected static final int ValueTypeReturnedAsFieldsOn = 0x10;
 121     protected static final int ValueTypeReturnedAsFieldsOff = 0x20;
 122     static final int AllFlags = ValueTypePassFieldsAsArgsOn | ValueTypePassFieldsAsArgsOff | ValueTypeArrayFlattenOn | ValueTypeArrayFlattenOff | ValueTypeReturnedAsFieldsOn;
 123     protected static final boolean ValueTypePassFieldsAsArgs = (Boolean)WHITE_BOX.getVMFlag("ValueTypePassFieldsAsArgs");
 124     protected static final boolean ValueTypeArrayFlatten = (Boolean)WHITE_BOX.getVMFlag("ValueArrayFlatten");
 125     protected static final boolean ValueTypeReturnedAsFields = (Boolean)WHITE_BOX.getVMFlag("ValueTypeReturnedAsFields");
 126     protected static final boolean NullableValueTypes = (Boolean)WHITE_BOX.getVMFlag("NullableValueTypes");
 127     protected static final int COMP_LEVEL_ANY = -2;
 128     protected static final int COMP_LEVEL_FULL_OPTIMIZATION = 4;
 129     protected static final Hashtable<String, Method> tests = new Hashtable<String, Method>();
 130     protected static final boolean USE_COMPILER = WHITE_BOX.getBooleanVMFlag("UseCompiler");
 131     protected static final boolean PRINT_IDEAL  = WHITE_BOX.getBooleanVMFlag("PrintIdeal");
 132     protected static final boolean XCOMP = Platform.isComp();
 133 
 134     // Regular expressions used to match nodes in the PrintIdeal output
 135     protected static final String START = "(\\d+\\t(.*";
 136     protected static final String MID = ".*)+\\t===.*";
 137     protected static final String END = ")|";
 138     protected static final String ALLOC  = "(.*precise klass compiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_instance_Java" + END;
 139     protected static final String ALLOCA = "(.*precise klass \\[Lcompiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_array_Java" + END;
 140     protected static final String LOAD   = START + "Load(B|S|I|L|F|D|P|N)" + MID + "@compiler/valhalla/valuetypes/MyValue.*" + END;
 141     protected static final String LOADK  = START + "LoadK" + MID + END;
 142     protected static final String STORE  = START + "Store(B|C|S|I|L|F|D|P|N)" + MID + "@compiler/valhalla/valuetypes/MyValue.*" + END;
 143     protected static final String LOOP   = START + "Loop" + MID + "" + END;
 144     protected static final String TRAP   = START + "CallStaticJava" + MID + "uncommon_trap.*(unstable_if|predicate)" + END;
 145     protected static final String RETURN = START + "Return" + MID + "returns" + END;
 146     protected static final String LINKTOSTATIC = START + "CallStaticJava" + MID + "linkToStatic" + END;
 147     protected static final String NPE = START + "CallStaticJava" + MID + "null_check" + END;
 148     protected static final String CALL = START + "CallStaticJava" + MID + END;
 149     protected static final String STOREVALUETYPEFIELDS = START + "CallStaticJava" + MID + "store_value_type_fields" + END;
 150     protected static final String SCOBJ = "(.*# ScObj.*" + END;
 151 
 152     public static String[] concat(String prefix[], String... extra) {
 153         ArrayList<String> list = new ArrayList<String>();
 154         if (prefix != null) {
 155             for (String s : prefix) {
 156                 list.add(s);
 157             }
 158         }
 159         if (extra != null) {
 160             for (String s : extra) {
 161                 list.add(s);
 162             }


 186                 "-XX:+ValueArrayFlatten",
 187                 "-XX:ValueFieldMaxFlatSize=-1",
 188                 "-XX:+ValueTypePassFieldsAsArgs",
 189                 "-XX:+ValueTypeReturnedAsFields"};
 190         case 1: return new String[] {
 191                 "-XX:-UseCompressedOops",
 192                 "-XX:ValueArrayElemMaxFlatOops=-1",
 193                 "-XX:ValueArrayElemMaxFlatSize=-1",
 194                 "-XX:+ValueArrayFlatten",
 195                 "-XX:ValueFieldMaxFlatSize=-1",
 196                 "-XX:-ValueTypePassFieldsAsArgs",
 197                 "-XX:-ValueTypeReturnedAsFields"};
 198         case 2: return new String[] {
 199                 "-DVerifyIR=false",
 200                 "-XX:-UseCompressedOops",
 201                 "-XX:ValueArrayElemMaxFlatOops=0",
 202                 "-XX:ValueArrayElemMaxFlatSize=0",
 203                 "-XX:-ValueArrayFlatten",
 204                 "-XX:ValueFieldMaxFlatSize=0",
 205                 "-XX:+ValueTypePassFieldsAsArgs",
 206                 "-XX:+ValueTypeReturnedAsFields",
 207                 "-XX:+StressValueTypePassFieldsAsArgs",
 208                 "-XX:+StressValueTypeReturnedAsFields"};
 209         case 3: return new String[] {
 210                 "-DVerifyIR=false",
 211                 "-XX:+AlwaysIncrementalInline",
 212                 "-XX:ValueArrayElemMaxFlatOops=0",
 213                 "-XX:ValueArrayElemMaxFlatSize=0",
 214                 "-XX:ValueFieldMaxFlatSize=0",
 215                 "-XX:-ValueTypePassFieldsAsArgs",
 216                 "-XX:-ValueTypeReturnedAsFields"};
 217         case 4: return new String[] {
 218                 "-DVerifyIR=false",
 219                 "-XX:ValueArrayElemMaxFlatOops=-1",
 220                 "-XX:ValueArrayElemMaxFlatSize=-1",
 221                 "-XX:+ValueArrayFlatten",
 222                 "-XX:ValueFieldMaxFlatSize=0",
 223                 "-XX:+ValueTypePassFieldsAsArgs",
 224                 "-XX:-ValueTypeReturnedAsFields",
 225                 "-XX:+StressValueTypePassFieldsAsArgs"};
 226         }
 227 
 228         return null;
 229     }
 230 
 231     /**
 232      * Override this method to provide extra parameters for selected scenarios
 233      */
 234     public String[] getExtraVMParameters(int scenario) {
 235         return null;
 236     }
 237 
 238     public static void main(String[] args) throws Throwable {
 239         if (args.length != 1) {
 240             throw new RuntimeException("Usage: @run main/othervm/timeout=120 -Xbootclasspath/a:. -ea" +
 241                                        " -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions" +
 242                                        " -XX:+UnlockExperimentalVMOptions -XX:+WhiteBoxAPI -XX:+EnableValhalla" +
 243                                        " compiler.valhalla.valuetypes.ValueTypeTest <YourTestMainClass>");
 244         }
 245         String testMainClassName = args[0];


< prev index next >