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,
|