< prev index next >

src/java.base/share/classes/java/lang/invoke/LambdaForm.java

Print this page
rev 15427 : 8164483: Generate field lambda forms at link time
Reviewed-by: TBD


 263                 assert ALL_TYPES[i].ordinal() == i;
 264             }
 265             assert ALL_TYPES[TYPE_LIMIT - 1] == V_TYPE;
 266             assert !Arrays.asList(ARG_TYPES).contains(V_TYPE);
 267             return true;
 268         }
 269     }
 270 
 271     enum Kind {
 272         GENERIC(""),
 273         ZERO("zero"),
 274         IDENTITY("identity"),
 275         BOUND_REINVOKER("BMH.reinvoke"),
 276         REINVOKER("MH.reinvoke"),
 277         DELEGATE("MH.delegate"),
 278         DIRECT_INVOKE_VIRTUAL("DMH.invokeVirtual"),
 279         DIRECT_INVOKE_SPECIAL("DMH.invokeSpecial"),
 280         DIRECT_INVOKE_STATIC("DMH.invokeStatic"),
 281         DIRECT_NEW_INVOKE_SPECIAL("DMH.newInvokeSpecial"),
 282         DIRECT_INVOKE_INTERFACE("DMH.invokeInterface"),
 283         DIRECT_INVOKE_STATIC_INIT("DMH.invokeStaticInit");




































 284 
 285         final String defaultLambdaName;
 286         final String methodName;
 287 
 288         private Kind(String defaultLambdaName) {
 289             this.defaultLambdaName = defaultLambdaName;
 290             int p = defaultLambdaName.indexOf('.');
 291             if (p > -1) {
 292                 this.methodName = defaultLambdaName.substring(p + 1);
 293             } else {
 294                 this.methodName = defaultLambdaName;
 295             }
 296         }
 297     }
 298 
 299     LambdaForm(String debugName,
 300                int arity, Name[] names, int result) {
 301         this(debugName, arity, names, result, /*forceInline=*/true, /*customized=*/null, Kind.GENERIC);
 302     }
 303     LambdaForm(String debugName,




 263                 assert ALL_TYPES[i].ordinal() == i;
 264             }
 265             assert ALL_TYPES[TYPE_LIMIT - 1] == V_TYPE;
 266             assert !Arrays.asList(ARG_TYPES).contains(V_TYPE);
 267             return true;
 268         }
 269     }
 270 
 271     enum Kind {
 272         GENERIC(""),
 273         ZERO("zero"),
 274         IDENTITY("identity"),
 275         BOUND_REINVOKER("BMH.reinvoke"),
 276         REINVOKER("MH.reinvoke"),
 277         DELEGATE("MH.delegate"),
 278         DIRECT_INVOKE_VIRTUAL("DMH.invokeVirtual"),
 279         DIRECT_INVOKE_SPECIAL("DMH.invokeSpecial"),
 280         DIRECT_INVOKE_STATIC("DMH.invokeStatic"),
 281         DIRECT_NEW_INVOKE_SPECIAL("DMH.newInvokeSpecial"),
 282         DIRECT_INVOKE_INTERFACE("DMH.invokeInterface"),
 283         DIRECT_INVOKE_STATIC_INIT("DMH.invokeStaticInit"),
 284         GET_OBJECT("getObject"),
 285         PUT_OBJECT("putObject"),
 286         GET_OBJECT_VOLATILE("getObjectVolatile"),
 287         PUT_OBJECT_VOLATILE("putObjectVolatile"),
 288         GET_INT("getInt"),
 289         PUT_INT("putInt"),
 290         GET_INT_VOLATILE("getIntVolatile"),
 291         PUT_INT_VOLATILE("putIntVolatile"),
 292         GET_BOOLEAN("getBoolean"),
 293         PUT_BOOLEAN("putBoolean"),
 294         GET_BOOLEAN_VOLATILE("getBooleanVolatile"),
 295         PUT_BOOLEAN_VOLATILE("putBooleanVolatile"),
 296         GET_BYTE("getByte"),
 297         PUT_BYTE("putByte"),
 298         GET_BYTE_VOLATILE("getByteVolatile"),
 299         PUT_BYTE_VOLATILE("putByteVolatile"),
 300         GET_CHAR("getChar"),
 301         PUT_CHAR("putChar"),
 302         GET_CHAR_VOLATILE("getCharVolatile"),
 303         PUT_CHAR_VOLATILE("putCharVolatile"),
 304         GET_SHORT("getShort"),
 305         PUT_SHORT("putShort"),
 306         GET_SHORT_VOLATILE("getShortVolatile"),
 307         PUT_SHORT_VOLATILE("putShortVolatile"),
 308         GET_LONG("getLong"),
 309         PUT_LONG("putLong"),
 310         GET_LONG_VOLATILE("getLongVolatile"),
 311         PUT_LONG_VOLATILE("putLongVolatile"),
 312         GET_FLOAT("getFloat"),
 313         PUT_FLOAT("putFloat"),
 314         GET_FLOAT_VOLATILE("getFloatVolatile"),
 315         PUT_FLOAT_VOLATILE("putFloatVolatile"),
 316         GET_DOUBLE("getDouble"),
 317         PUT_DOUBLE("putDouble"),
 318         GET_DOUBLE_VOLATILE("getDoubleVolatile"),
 319         PUT_DOUBLE_VOLATILE("putDoubleVolatile");
 320 
 321         final String defaultLambdaName;
 322         final String methodName;
 323 
 324         private Kind(String defaultLambdaName) {
 325             this.defaultLambdaName = defaultLambdaName;
 326             int p = defaultLambdaName.indexOf('.');
 327             if (p > -1) {
 328                 this.methodName = defaultLambdaName.substring(p + 1);
 329             } else {
 330                 this.methodName = defaultLambdaName;
 331             }
 332         }
 333     }
 334 
 335     LambdaForm(String debugName,
 336                int arity, Name[] names, int result) {
 337         this(debugName, arity, names, result, /*forceInline=*/true, /*customized=*/null, Kind.GENERIC);
 338     }
 339     LambdaForm(String debugName,


< prev index next >