< prev index next >

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

Print this page

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



 271         FIELD_ACCESS("fieldAccess"),
 272         FIELD_ACCESS_INIT("fieldAccessInit"),
 273         VOLATILE_FIELD_ACCESS("volatileFieldAccess"),
 274         VOLATILE_FIELD_ACCESS_INIT("volatileFieldAccessInit"),

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

 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         TRY_FINALLY("tryFinally"),
 296         TABLE_SWITCH("tableSwitch"),
 297         COLLECTOR("collector"),
 298         LOOP("loop"),
 299         GUARD("guard"),
 300         GUARD_WITH_CATCH("guardWithCatch"),
 301         VARHANDLE_EXACT_INVOKER("VH.exactInvoker"),
 302         VARHANDLE_INVOKER("VH.invoker", "invoker"),
 303         VARHANDLE_LINKER("VH.invoke_MT", "invoke_MT");
 304 
 305         final String defaultLambdaName;
 306         final String methodName;
 307 
 308         private Kind(String defaultLambdaName) {
 309             this(defaultLambdaName, defaultLambdaName);
 310         }
 311 
 312         private Kind(String defaultLambdaName, String methodName) {
 313             this.defaultLambdaName = defaultLambdaName;
 314             this.methodName = methodName;

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