< prev index next >

src/java.base/share/classes/jdk/experimental/value/ValueType.java

Print this page




 166     }
 167 
 168     @SuppressWarnings("unchecked")
 169     public Class<T> boxClass() {
 170         return (Class<T>)boxLookup.lookupClass();
 171     }
 172 
 173     public Class<?> sourceClass() {
 174         return boxClass();
 175     }
 176 
 177     public Class<?> valueClass() {
 178         return valueLookup.lookupClass();
 179     }
 180 
 181     public Class<?> arrayValueClass() {
 182         return arrayValueClass(1);
 183     }
 184 
 185     public Class<?> arrayValueClass(int dims) {
 186         try {
 187             String dimsStr = "[[[[[[[[[[[[[[[[";
 188             if (dims < 1 || dims > 16) {
 189                 throw new IllegalArgumentException("cannot create array class for dimension > 16");
 190             }
 191             return Class.forName(dimsStr.substring(0, dims) + "Q" + valueClass().getName() + ";", false, boxLookup.lookupClass().getClassLoader());
 192         } catch (ClassNotFoundException ex) {
 193             throw new IllegalStateException(ex);
 194         }
 195     }
 196 
 197     public String toString() {
 198         return "ValueType boxClass=" + boxClass() + " valueClass=" + valueClass();
 199     }
 200 
 201     String mhName(String opName) {
 202         return sourceClass().getName() + "_" + opName;
 203     }
 204 
 205     public MethodHandle defaultValueConstant() {
 206         ValueHandleKey key = ValueHandleKind.DEFAULT.key();
 207         MethodHandle result = handleMap.get(key);
 208         if (result == null) {
 209             result = MethodHandleBuilder.loadCode(boxLookup, mhName("default"), MethodType.methodType(valueClass()),
 210                     C -> {
 211                         C.vdefault(valueClass()).vreturn();
 212                     });
 213             handleMap.put(key, result);
 214         }




 166     }
 167 
 168     @SuppressWarnings("unchecked")
 169     public Class<T> boxClass() {
 170         return (Class<T>)boxLookup.lookupClass();
 171     }
 172 
 173     public Class<?> sourceClass() {
 174         return boxClass();
 175     }
 176 
 177     public Class<?> valueClass() {
 178         return valueLookup.lookupClass();
 179     }
 180 
 181     public Class<?> arrayValueClass() {
 182         return arrayValueClass(1);
 183     }
 184 
 185     public Class<?> arrayValueClass(int dims) {

 186         String dimsStr = "[[[[[[[[[[[[[[[[";
 187         if (dims < 1 || dims > 16) {
 188             throw new IllegalArgumentException("cannot create array class for dimension > 16");
 189         }
 190         String cn = dimsStr.substring(0, dims) + "Q" + valueClass().getName() + ";";
 191         return MinimalValueTypes_1_0.loadValueTypeClass(boxLookup.lookupClass(), cn);


 192     }
 193 
 194     public String toString() {
 195         return "ValueType boxClass=" + boxClass() + " valueClass=" + valueClass();
 196     }
 197 
 198     String mhName(String opName) {
 199         return sourceClass().getName() + "_" + opName;
 200     }
 201 
 202     public MethodHandle defaultValueConstant() {
 203         ValueHandleKey key = ValueHandleKind.DEFAULT.key();
 204         MethodHandle result = handleMap.get(key);
 205         if (result == null) {
 206             result = MethodHandleBuilder.loadCode(boxLookup, mhName("default"), MethodType.methodType(valueClass()),
 207                     C -> {
 208                         C.vdefault(valueClass()).vreturn();
 209                     });
 210             handleMap.put(key, result);
 211         }


< prev index next >