< prev index next >

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

Print this page

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



 268         FIELD_ACCESS("fieldAccess"),
 269         FIELD_ACCESS_INIT("fieldAccessInit"),
 270         VOLATILE_FIELD_ACCESS("volatileFieldAccess"),
 271         VOLATILE_FIELD_ACCESS_INIT("volatileFieldAccessInit"),

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

 288         FIELD_ACCESS_CAST("fieldAccessCast"),
 289         FIELD_ACCESS_INIT_CAST("fieldAccessInitCast"),
 290         VOLATILE_FIELD_ACCESS_CAST("volatileFieldAccessCast"),
 291         VOLATILE_FIELD_ACCESS_INIT_CAST("volatileFieldAccessInitCast"),



















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

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