< prev index next >

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

Print this page

 246     enum Kind {
 247         GENERIC("invoke"),
 248         IDENTITY("identity"),
 249         CONSTANT("constant"),
 250         BOUND_REINVOKER("BMH.reinvoke", "reinvoke"),
 251         REINVOKER("MH.reinvoke", "reinvoke"),
 252         DELEGATE("MH.delegate", "delegate"),
 253         EXACT_LINKER("MH.invokeExact_MT", "invokeExact_MT"),
 254         EXACT_INVOKER("MH.exactInvoker", "exactInvoker"),
 255         GENERIC_LINKER("MH.invoke_MT", "invoke_MT"),
 256         GENERIC_INVOKER("MH.invoker", "invoker"),
 257         LINK_TO_TARGET_METHOD("linkToTargetMethod"),
 258         LINK_TO_CALL_SITE("linkToCallSite"),
 259         DIRECT_INVOKE_VIRTUAL("DMH.invokeVirtual", "invokeVirtual"),
 260         DIRECT_INVOKE_SPECIAL("DMH.invokeSpecial", "invokeSpecial"),
 261         DIRECT_INVOKE_SPECIAL_IFC("DMH.invokeSpecialIFC", "invokeSpecialIFC"),
 262         DIRECT_INVOKE_STATIC("DMH.invokeStatic", "invokeStatic"),
 263         DIRECT_NEW_INVOKE_SPECIAL("DMH.newInvokeSpecial", "newInvokeSpecial"),
 264         DIRECT_INVOKE_INTERFACE("DMH.invokeInterface", "invokeInterface"),
 265         DIRECT_INVOKE_STATIC_INIT("DMH.invokeStaticInit", "invokeStaticInit"),



 266         FIELD_ACCESS("fieldAccess"),
 267         FIELD_ACCESS_INIT("fieldAccessInit"),
 268         VOLATILE_FIELD_ACCESS("volatileFieldAccess"),
 269         VOLATILE_FIELD_ACCESS_INIT("volatileFieldAccessInit"),

 270         FIELD_ACCESS_B("fieldAccessB"),
 271         FIELD_ACCESS_INIT_B("fieldAccessInitB"),
 272         VOLATILE_FIELD_ACCESS_B("volatileFieldAccessB"),
 273         VOLATILE_FIELD_ACCESS_INIT_B("volatileFieldAccessInitB"),
 274         FIELD_ACCESS_C("fieldAccessC"),
 275         FIELD_ACCESS_INIT_C("fieldAccessInitC"),
 276         VOLATILE_FIELD_ACCESS_C("volatileFieldAccessC"),
 277         VOLATILE_FIELD_ACCESS_INIT_C("volatileFieldAccessInitC"),
 278         FIELD_ACCESS_S("fieldAccessS"),
 279         FIELD_ACCESS_INIT_S("fieldAccessInitS"),
 280         VOLATILE_FIELD_ACCESS_S("volatileFieldAccessS"),
 281         VOLATILE_FIELD_ACCESS_INIT_S("volatileFieldAccessInitS"),
 282         FIELD_ACCESS_Z("fieldAccessZ"),
 283         FIELD_ACCESS_INIT_Z("fieldAccessInitZ"),
 284         VOLATILE_FIELD_ACCESS_Z("volatileFieldAccessZ"),
 285         VOLATILE_FIELD_ACCESS_INIT_Z("volatileFieldAccessInitZ"),

 286         FIELD_ACCESS_CAST("fieldAccessCast"),
 287         FIELD_ACCESS_INIT_CAST("fieldAccessInitCast"),
 288         VOLATILE_FIELD_ACCESS_CAST("volatileFieldAccessCast"),
 289         VOLATILE_FIELD_ACCESS_INIT_CAST("volatileFieldAccessInitCast"),



















 290         TRY_FINALLY("tryFinally"),
 291         TABLE_SWITCH("tableSwitch"),
 292         COLLECTOR("collector"),
 293         LOOP("loop"),
 294         GUARD("guard"),
 295         GUARD_WITH_CATCH("guardWithCatch"),
 296         VARHANDLE_EXACT_INVOKER("VH.exactInvoker"),
 297         VARHANDLE_INVOKER("VH.invoker", "invoker"),
 298         VARHANDLE_LINKER("VH.invoke_MT", "invoke_MT");
 299 
 300         final String defaultLambdaName;
 301         final String methodName;
 302 
 303         private Kind(String defaultLambdaName) {
 304             this(defaultLambdaName, defaultLambdaName);
 305         }
 306 
 307         private Kind(String defaultLambdaName, String methodName) {
 308             this.defaultLambdaName = defaultLambdaName;
 309             this.methodName = methodName;

 246     enum Kind {
 247         GENERIC("invoke"),
 248         IDENTITY("identity"),
 249         CONSTANT("constant"),
 250         BOUND_REINVOKER("BMH.reinvoke", "reinvoke"),
 251         REINVOKER("MH.reinvoke", "reinvoke"),
 252         DELEGATE("MH.delegate", "delegate"),
 253         EXACT_LINKER("MH.invokeExact_MT", "invokeExact_MT"),
 254         EXACT_INVOKER("MH.exactInvoker", "exactInvoker"),
 255         GENERIC_LINKER("MH.invoke_MT", "invoke_MT"),
 256         GENERIC_INVOKER("MH.invoker", "invoker"),
 257         LINK_TO_TARGET_METHOD("linkToTargetMethod"),
 258         LINK_TO_CALL_SITE("linkToCallSite"),
 259         DIRECT_INVOKE_VIRTUAL("DMH.invokeVirtual", "invokeVirtual"),
 260         DIRECT_INVOKE_SPECIAL("DMH.invokeSpecial", "invokeSpecial"),
 261         DIRECT_INVOKE_SPECIAL_IFC("DMH.invokeSpecialIFC", "invokeSpecialIFC"),
 262         DIRECT_INVOKE_STATIC("DMH.invokeStatic", "invokeStatic"),
 263         DIRECT_NEW_INVOKE_SPECIAL("DMH.newInvokeSpecial", "newInvokeSpecial"),
 264         DIRECT_INVOKE_INTERFACE("DMH.invokeInterface", "invokeInterface"),
 265         DIRECT_INVOKE_STATIC_INIT("DMH.invokeStaticInit", "invokeStaticInit"),
 266         // Start field forms
 267         // IJFDL, instance/static differ in method type, can share form
 268         // init form only applicable to static
 269         FIELD_ACCESS("fieldAccess"),
 270         FIELD_ACCESS_INIT("fieldAccessInit"),
 271         VOLATILE_FIELD_ACCESS("volatileFieldAccess"),
 272         VOLATILE_FIELD_ACCESS_INIT("volatileFieldAccessInit"),
 273         // BCSZ need own forms to avoid clashing with basic type I, +-init/volatile
 274         FIELD_ACCESS_B("fieldAccessB"),
 275         FIELD_ACCESS_INIT_B("fieldAccessInitB"),
 276         VOLATILE_FIELD_ACCESS_B("volatileFieldAccessB"),
 277         VOLATILE_FIELD_ACCESS_INIT_B("volatileFieldAccessInitB"),
 278         FIELD_ACCESS_C("fieldAccessC"),
 279         FIELD_ACCESS_INIT_C("fieldAccessInitC"),
 280         VOLATILE_FIELD_ACCESS_C("volatileFieldAccessC"),
 281         VOLATILE_FIELD_ACCESS_INIT_C("volatileFieldAccessInitC"),
 282         FIELD_ACCESS_S("fieldAccessS"),
 283         FIELD_ACCESS_INIT_S("fieldAccessInitS"),
 284         VOLATILE_FIELD_ACCESS_S("volatileFieldAccessS"),
 285         VOLATILE_FIELD_ACCESS_INIT_S("volatileFieldAccessInitS"),
 286         FIELD_ACCESS_Z("fieldAccessZ"),
 287         FIELD_ACCESS_INIT_Z("fieldAccessInitZ"),
 288         VOLATILE_FIELD_ACCESS_Z("volatileFieldAccessZ"),
 289         VOLATILE_FIELD_ACCESS_INIT_Z("volatileFieldAccessInitZ"),
 290         // cast, nr, flat need their own forms to avoid clashing with L
 291         FIELD_ACCESS_CAST("fieldAccessCast"),
 292         FIELD_ACCESS_INIT_CAST("fieldAccessInitCast"),
 293         VOLATILE_FIELD_ACCESS_CAST("volatileFieldAccessCast"),
 294         VOLATILE_FIELD_ACCESS_INIT_CAST("volatileFieldAccessInitCast"),
 295         // null-check and put reference, +-cast, +-init/volatile
 296         // non-cast forms serve bytecode emulation purpose, which always enforces null checks
 297         PUT_NULL_RESTRICTED_REFERENCE("putNullRestrictedReference"),
 298         PUT_NULL_RESTRICTED_REFERENCE_INIT("putNullRestrictedReferenceInit"),
 299         VOLATILE_PUT_NULL_RESTRICTED_REFERENCE("volatilePutNullRestrictedReference"),
 300         VOLATILE_PUT_NULL_RESTRICTED_REFERENCE_INIT("volatilePutNullRestrictedReferenceInit"),
 301         PUT_NULL_RESTRICTED_REFERENCE_CAST("putNullRestrictedReferenceCast"),
 302         PUT_NULL_RESTRICTED_REFERENCE_CAST_INIT("putNullRestrictedReferenceInitCast"),
 303         VOLATILE_PUT_NULL_RESTRICTED_REFERENCE_CAST("volatilePutNullRestrictedReferenceCast"),
 304         VOLATILE_PUT_NULL_RESTRICTED_REFERENCE_CAST_INIT("volatilePutNullRestrictedReferenceCastInit"),
 305         // flat implies cast, +-init/volatile
 306         FIELD_ACCESS_FLAT("fieldAccessFlat"),
 307         FIELD_ACCESS_INIT_FLAT("fieldAccessInitFlat"),
 308         VOLATILE_FIELD_ACCESS_FLAT("volatileFieldAccessFlat"),
 309         VOLATILE_FIELD_ACCESS_INIT_FLAT("volatileFieldAccessInitFlat"),
 310         // write guard NR flat, implies cast; +-volatile; no init forms - no flat in static fields yet
 311         PUT_NULL_RESTRICTED_FLAT_VALUE("putNullRestrictedFlatValue"),
 312         VOLATILE_PUT_NULL_RESTRICTED_FLAT_VALUE("volatilePutNullRestrictedFlatValue"),
 313         // End fields
 314         TRY_FINALLY("tryFinally"),
 315         TABLE_SWITCH("tableSwitch"),
 316         COLLECTOR("collector"),
 317         LOOP("loop"),
 318         GUARD("guard"),
 319         GUARD_WITH_CATCH("guardWithCatch"),
 320         VARHANDLE_EXACT_INVOKER("VH.exactInvoker"),
 321         VARHANDLE_INVOKER("VH.invoker", "invoker"),
 322         VARHANDLE_LINKER("VH.invoke_MT", "invoke_MT");
 323 
 324         final String defaultLambdaName;
 325         final String methodName;
 326 
 327         private Kind(String defaultLambdaName) {
 328             this(defaultLambdaName, defaultLambdaName);
 329         }
 330 
 331         private Kind(String defaultLambdaName, String methodName) {
 332             this.defaultLambdaName = defaultLambdaName;
 333             this.methodName = methodName;
< prev index next >