< prev index next >

test/hotspot/jtreg/runtime/valhalla/valuetypes/ValueTypeGenerator.java

Print this page

        

*** 28,41 **** --- 28,47 ---- static class FieldDescriptor { final public String name; final public Type type; + final public String typeName; public FieldDescriptor(String name, Type type) { this.name = name; this.type = type; + String s = type.getTypeName(); + if (s.startsWith("class")) { + s = s.substring(s.lastIndexOf(".")+1); + } + this.typeName = s; } } static Type[] typeArray; static String[] defaultArray;
*** 50,60 **** typeArray[4] = char.class; typeArray[5] = float.class; typeArray[6] = double.class; typeArray[7] = boolean.class; typeArray[8] = Object.class; - } static String defaultValue(Type t) { switch(t.getTypeName()) { case "byte": return "(byte)123"; --- 56,65 ----
*** 63,83 **** case "long": return "922337203685477L"; case "char": return "(char)65456"; case "float": return "2.71828f"; case "double": return "3.14159d"; case "boolean": return "true"; ! case "java.lang.Object": return "null"; default: throw new RuntimeException(); } } static private String generateValueTypeInternal(Random random, String name, int nfields, int typeLimit) { // generate the fields FieldDescriptor[] fieldDescArray = new FieldDescriptor[nfields]; for (int i = 0; i < nfields; i++) { int idx = random.nextInt(typeLimit); ! String fieldName = typeArray[idx].getTypeName()+"Field"+i; fieldDescArray[i] = new FieldDescriptor(fieldName, typeArray[idx]); } String source = generateSource(name, fieldDescArray); return source; --- 68,92 ---- case "long": return "922337203685477L"; case "char": return "(char)65456"; case "float": return "2.71828f"; case "double": return "3.14159d"; case "boolean": return "true"; ! case "java.lang.Object": return "new String(\"foo\")"; default: throw new RuntimeException(); } } static private String generateValueTypeInternal(Random random, String name, int nfields, int typeLimit) { // generate the fields FieldDescriptor[] fieldDescArray = new FieldDescriptor[nfields]; for (int i = 0; i < nfields; i++) { int idx = random.nextInt(typeLimit); ! String s = typeArray[idx].getTypeName(); ! if (s.contains(".")) { ! s = s.substring(s.lastIndexOf(".")+1); ! } ! String fieldName = s+"Field"+i; fieldDescArray[i] = new FieldDescriptor(fieldName, typeArray[idx]); } String source = generateSource(name, fieldDescArray); return source;
*** 92,102 **** } static String fieldsAsArgs(FieldDescriptor[] fields) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < fields.length; i++) { ! sb.append(fields[i].type).append(" ").append(fields[i].name); if (i != fields.length - 1) { sb.append(", "); } } return sb.toString(); --- 101,111 ---- } static String fieldsAsArgs(FieldDescriptor[] fields) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < fields.length; i++) { ! sb.append(fields[i].typeName).append(" ").append(fields[i].name); if (i != fields.length - 1) { sb.append(", "); } } return sb.toString();
*** 111,121 **** // class declaration sb.append("public __ByValue final class ").append(name).append(" {\n"); // field declarations for (FieldDescriptor f : fields) { ! sb.append("\tfinal public ").append(f.type).append(" "); sb.append(f.name).append(";\n"); } sb.append("\n"); // private constructor --- 120,130 ---- // class declaration sb.append("public __ByValue final class ").append(name).append(" {\n"); // field declarations for (FieldDescriptor f : fields) { ! sb.append("\tfinal public ").append(f.typeName).append(" "); sb.append(f.name).append(";\n"); } sb.append("\n"); // private constructor
*** 149,168 **** sb.append("\n"); // verify method sb.append("\tstatic public boolean verify(").append(name).append(" value) {\n"); for (FieldDescriptor f : fields) { sb.append("\t\tif (value.").append(f.name).append(" != ").append(defaultValue(f.type)).append(") return false;\n"); } sb.append("\t\treturn true;\n"); sb.append("\t}\n"); // printLayout method sb.append("\tstatic public void printLayout(PrintStream out) {\n"); sb.append("\t\tout.println(\"").append(name).append(" fields: "); for (int i = 0; i < fields.length; i++) { ! sb.append(fields[i].type); if (i != fields.length - 1) { sb.append(", "); } } sb.append("\");\n"); --- 158,181 ---- sb.append("\n"); // verify method sb.append("\tstatic public boolean verify(").append(name).append(" value) {\n"); for (FieldDescriptor f : fields) { + if (f.type.getTypeName().compareTo("java.lang.Object") == 0) { + sb.append("\t\tif (((String)value.").append(f.name).append(").compareTo(").append(defaultValue(f.type)).append(") != 0) return false;\n"); + } else { sb.append("\t\tif (value.").append(f.name).append(" != ").append(defaultValue(f.type)).append(") return false;\n"); } + } sb.append("\t\treturn true;\n"); sb.append("\t}\n"); // printLayout method sb.append("\tstatic public void printLayout(PrintStream out) {\n"); sb.append("\t\tout.println(\"").append(name).append(" fields: "); for (int i = 0; i < fields.length; i++) { ! sb.append(fields[i].typeName); if (i != fields.length - 1) { sb.append(", "); } } sb.append("\");\n");
< prev index next >