diff options
author | Manoj Palat | 2018-04-27 15:22:41 +0000 |
---|---|---|
committer | Manoj Palat | 2018-04-27 15:22:41 +0000 |
commit | 4d16d4a7e5285c1dac76d445078c7eb29bbcc500 (patch) | |
tree | 2647391a4a18c47674ed2b8ff5b2916c48c0610d | |
parent | e5ce8d62839d03b3a8affb5e4bcaa2f5e2ab6db9 (diff) | |
download | eclipse.jdt.core-manoj/const_dyn.531710.tar.gz eclipse.jdt.core-manoj/const_dyn.531710.tar.xz eclipse.jdt.core-manoj/const_dyn.531710.zip |
Constants
11 files changed, 150 insertions, 20 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java index ab750ce47c..c56dc89336 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -39,7 +43,9 @@ public interface IConstantPool { * * <p>The return value can be an instance of {@link IConstantPoolEntry2} if the value returned * by {@link #getEntryKind(int)} is either {@link IConstantPoolConstant#CONSTANT_MethodHandle}, - * {@link IConstantPoolConstant#CONSTANT_MethodType} or {@link IConstantPoolConstant#CONSTANT_InvokeDynamic}.</p> + * {@link IConstantPoolConstant#CONSTANT_MethodType}, + * {@link IConstantPoolConstant#CONSTANT_InvokeDynamic}, + * {@link IConstantPoolConstant#CONSTANT_Dynamic}.</p> * * <p>The return value can be an instance of {@link IConstantPoolEntry3} if the value returned * by {@link #getEntryKind(int)} is either {@link IConstantPoolConstant#CONSTANT_Module} diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java index c5f0401474..28dbe1fe0e 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -41,7 +45,12 @@ public interface IConstantPoolConstant { * @since 3.8 */ int CONSTANT_InvokeDynamic = 18; - + /** + * proposed new name in JVMLS11 + * @since 3.14 BETA_JAVA11 + */ + int CONSTANT_DynamicCallSite = CONSTANT_InvokeDynamic; + /** * @since 3.14 */ @@ -50,6 +59,11 @@ public interface IConstantPoolConstant { * @since 3.14 */ int CONSTANT_Package = 20; + /** + * For the proposed section of JVMLS11 4.4.13 The CONSTANT_Dynamic_info Structure + * @since 3.14 BETA_JAVA11 + */ + int CONSTANT_Dynamic = 17; int CONSTANT_Methodref_SIZE = 5; int CONSTANT_Class_SIZE = 3; @@ -76,6 +90,10 @@ public interface IConstantPoolConstant { int CONSTANT_InvokeDynamic_SIZE = 5; /** + * @since 3.14 BETA_JAVA11 + */ + int CONSTANT_Dynamic_SIZE = 5; + /** * @since 3.14 */ int CONSTANT_Module_SIZE = 3; diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java index 4ed570a0d7..9833b5f5e0 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -65,6 +69,7 @@ public interface IConstantPoolEntry { * @see IConstantPoolConstant#CONSTANT_Methodref * @see IConstantPoolConstant#CONSTANT_InterfaceMethodref * @see IConstantPoolConstant#CONSTANT_InvokeDynamic + * @see IConstantPoolConstant#CONSTANT_Dynamic */ int getNameAndTypeIndex(); @@ -181,6 +186,7 @@ public interface IConstantPoolEntry { * @see IConstantPoolConstant#CONSTANT_Methodref * @see IConstantPoolConstant#CONSTANT_InterfaceMethodref * @see IConstantPoolConstant#CONSTANT_InvokeDynamic + * @see IConstantPoolConstant#CONSTANT_Dynamic */ char[] getMethodName(); @@ -212,6 +218,7 @@ public interface IConstantPoolEntry { * @see IConstantPoolConstant#CONSTANT_InterfaceMethodref * @see IConstantPoolConstant#CONSTANT_MethodType * @see IConstantPoolConstant#CONSTANT_InvokeDynamic + * @see IConstantPoolConstant#CONSTANT_Dynamic */ char[] getMethodDescriptor(); diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry2.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry2.java index c7c8674676..5569e4bfe9 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry2.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry2.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2011 IBM Corporation and others. + * Copyright (c) 2011, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -54,6 +58,7 @@ public interface IConstantPoolEntry2 extends IConstantPoolEntry { * * @return the reference kind. This value is set only when decoding a MethodHandle entry. * @see IConstantPoolConstant#CONSTANT_InvokeDynamic + * @see IConstantPoolConstant#CONSTANT_Dynamic */ int getBootstrapMethodAttributeIndex(); } diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java index 30b235e85c..1c4f8e7a44 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2011, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation * Andy Clement - Contributions for @@ -154,6 +158,10 @@ public class ClassFileReader extends ClassFileStruct implements IClassFileReader constantPoolOffsets[i] = readOffset; readOffset += IConstantPoolConstant.CONSTANT_InvokeDynamic_SIZE; break; + case IConstantPoolConstant.CONSTANT_Dynamic : + constantPoolOffsets[i] = readOffset; + readOffset += IConstantPoolConstant.CONSTANT_Dynamic_SIZE; + break; case IConstantPoolConstant.CONSTANT_Module: constantPoolOffsets[i] = readOffset; readOffset += IConstantPoolConstant.CONSTANT_Module_SIZE; diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CodeAttribute.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CodeAttribute.java index 033e9e70ac..ffa873e88c 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CodeAttribute.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CodeAttribute.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2016 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation * Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for @@ -267,10 +271,9 @@ public class CodeAttribute extends ClassFileAttribute implements ICodeAttribute case IOpcodeMnemonics.LDC : index = u1At(this.classFileBytes, 1, pc); constantPoolEntry = this.constantPool.decodeEntry(index); - if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Float - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Integer - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_String - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) { + int kind = constantPoolEntry.getKind(); + if (kind == IConstantPoolConstant.CONSTANT_Long || + kind == IConstantPoolConstant.CONSTANT_Double) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } visitor._ldc(pc - this.codeOffset, index, constantPoolEntry); @@ -279,10 +282,9 @@ public class CodeAttribute extends ClassFileAttribute implements ICodeAttribute case IOpcodeMnemonics.LDC_W : index = u2At(this.classFileBytes, 1, pc); constantPoolEntry = this.constantPool.decodeEntry(index); - if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Float - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Integer - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_String - && constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) { + int kind1 = constantPoolEntry.getKind(); + if (kind1 == IConstantPoolConstant.CONSTANT_Long || + kind1 == IConstantPoolConstant.CONSTANT_Double) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } visitor._ldc_w(pc - this.codeOffset, index, constantPoolEntry); diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java index aeff4afd36..4477c59cf1 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -140,6 +144,7 @@ public class ConstantPool extends ClassFileStruct implements IConstantPool { constantPoolEntry = constantPoolEntry2; break; case IConstantPoolConstant.CONSTANT_InvokeDynamic : + case IConstantPoolConstant.CONSTANT_Dynamic : constantPoolEntry2 = new ConstantPoolEntry2(); constantPoolEntry2.reset(); constantPoolEntry2.setKind(kind); diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java index 9c56677ec5..dc00e7bc1d 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java @@ -2040,6 +2040,19 @@ public class DefaultBytecodeVisitor implements IBytecodeVisitor { Integer.toString(index), returnConstantClassName(constantPoolEntry) })); + break; + case IConstantPoolConstant.CONSTANT_MethodType : + appendConstantMethodType(this.buffer, Messages.classformat_ldc_w_methodhandle, + IOpcodeMnemonics.LDC_W, index, constantPoolEntry); + break; + case IConstantPoolConstant.CONSTANT_MethodHandle : + appendConstantMethodHandle(this.buffer, Messages.classformat_ldc_w_methodhandle, + IOpcodeMnemonics.LDC_W, index, constantPoolEntry); + break; + case IConstantPoolConstant.CONSTANT_Dynamic : + appendConstantDynamic(this.buffer, Messages.classformat_ldc_w_dynamic, + IOpcodeMnemonics.LDC_W, index, constantPoolEntry); + break; } writeNewLine(); } @@ -2078,10 +2091,52 @@ public class DefaultBytecodeVisitor implements IBytecodeVisitor { Integer.toString(index), returnConstantClassName(constantPoolEntry) })); + break; + case IConstantPoolConstant.CONSTANT_MethodType : + appendConstantMethodType(this.buffer, Messages.classformat_ldc_w_methodhandle, + IOpcodeMnemonics.LDC, index, constantPoolEntry); + break; + case IConstantPoolConstant.CONSTANT_MethodHandle : + appendConstantMethodHandle(this.buffer, Messages.classformat_ldc_w_methodhandle, + IOpcodeMnemonics.LDC, index, constantPoolEntry); + break; + case IConstantPoolConstant.CONSTANT_Dynamic : + appendConstantDynamic(this.buffer, Messages.classformat_ldc_w_dynamic, + IOpcodeMnemonics.LDC, index, constantPoolEntry); + break; } writeNewLine(); } + private StringBuffer appendConstantDynamic(StringBuffer s, String messageKind, int opcode, + int index, IConstantPoolEntry constantPoolEntry) { + return s.append(Messages.bind(messageKind, new String[] { + OpcodeStringValues.BYTECODE_NAMES[opcode], + Integer.toString(index), + Integer.toString(((IConstantPoolEntry2) constantPoolEntry).getBootstrapMethodAttributeIndex()), + new String(constantPoolEntry.getMethodName()), + new String(constantPoolEntry.getMethodDescriptor()) + })); + } + + private StringBuffer appendConstantMethodType(StringBuffer s, String messageKind, int opcode, + int index, IConstantPoolEntry constantPoolEntry) { + return s.append(Messages.bind(messageKind, new String[] { + OpcodeStringValues.BYTECODE_NAMES[opcode], + Integer.toString(index), + new String(constantPoolEntry.getMethodDescriptor()) + })); + } + + private StringBuffer appendConstantMethodHandle(StringBuffer s, String messageKind, int opcode, + int index, IConstantPoolEntry constantPoolEntry) { + return s.append(Messages.bind(messageKind, new String[] { + OpcodeStringValues.BYTECODE_NAMES[opcode], + Integer.toString(index), + Integer.toString(((IConstantPoolEntry2) constantPoolEntry).getReferenceKind()), + Integer.toString(((IConstantPoolEntry2) constantPoolEntry).getReferenceIndex()) + })); + } /** * @see IBytecodeVisitor#_ldc2_w(int, int, IConstantPoolEntry) */ diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java index a2e3492c71..1713cf6d44 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java @@ -1,10 +1,14 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation * Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for @@ -1793,7 +1797,8 @@ public class Disassembler extends ClassFileBytesDisassembler { } IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(i); String[] methodDescription; - switch (constantPool.getEntryKind(i)) { + int kind = constantPool.getEntryKind(i); + switch (kind) { case IConstantPoolConstant.CONSTANT_Class : buffer.append( Messages.bind(Messages.disassembler_constantpool_class, @@ -1914,9 +1919,12 @@ public class Disassembler extends ClassFileBytesDisassembler { })); break; case IConstantPoolConstant.CONSTANT_InvokeDynamic : + case IConstantPoolConstant.CONSTANT_Dynamic : entry2 = (IConstantPoolEntry2) constantPoolEntry; buffer.append( - Messages.bind(Messages.disassembler_constantpool_invokedynamic, + Messages.bind(kind == IConstantPoolConstant.CONSTANT_InvokeDynamic ? + Messages.disassembler_constantpool_invokedynamic : + Messages.disassembler_constantpool_dynamic, new String[] { Integer.toString(i), Integer.toString(entry2.getBootstrapMethodAttributeIndex()), diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Messages.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Messages.java index e5a6198f7b..316e14f9ad 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Messages.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Messages.java @@ -5,6 +5,10 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * + * This is an implementation of an early-draft specification developed under the Java + * Community Process (JCP) and is made available for testing and evaluation purposes + * only. The code is not compatible with any specification of the JCP. + * * Contributors: * IBM Corporation - initial API and implementation * Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for @@ -301,6 +305,7 @@ public final class Messages extends NLS { public static String disassembler_constantpool_methodhandle; public static String disassembler_constantpool_methodtype; public static String disassembler_constantpool_invokedynamic; + public static String disassembler_constantpool_dynamic; public static String disassembler_annotationdefaultheader; public static String disassembler_annotationdefaultvalue; public static String disassembler_annotationenumvalue; @@ -360,6 +365,9 @@ public final class Messages extends NLS { public static String classformat_checkcast; public static String classformat_instanceof; public static String classformat_ldc_w_class; + public static String classformat_ldc_w_methodtype; + public static String classformat_ldc_w_methodhandle; + public static String classformat_ldc_w_dynamic; public static String classformat_ldc_w_float; public static String classformat_ldc_w_integer; public static String classformat_ldc_w_string; diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties index 7cf3f28922..43d61c21f8 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties @@ -5,6 +5,10 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # +# This is an implementation of an early-draft specification developed under the Java +# Community Process (JCP) and is made available for testing and evaluation purposes +# only. The code is not compatible with any specification of the JCP. +# # Contributors: # IBM Corporation - initial API and implementation # Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for @@ -328,6 +332,7 @@ disassembler_constantpool_utf8 = constant #{0} utf8: "{1}" disassembler_constantpool_methodhandle = constant #{0} method handle: {1} #{2} disassembler_constantpool_methodtype = constant #{0} method type: #{1} {2} disassembler_constantpool_invokedynamic = constant #{0} invoke dynamic: #{1} #{2} {3} {4} +disassembler_constantpool_dynamic = constant #{0} invoke dynamic: #{1} #{2} {3} {4} disassembler_annotationdefaultheader = Annotation Default:\ disassembler_annotationdefaultvalue= {0} (constant type) disassembler_annotationenumvalue = {2}.{3}(enum type #{0}.#{1}) @@ -409,6 +414,9 @@ classfileformat_versionUnknown = unknown classformat_anewarray = {0} {2} [{1}] classformat_checkcast = {0} {2} [{1}] classformat_instanceof = {0} {2} [{1}] +classformat_ldc_w_methodtype = {0} <MethodType {2}> [{1}] +classformat_ldc_w_methodhandle = {0} <MethodHandle {2} {3}> [{1}] +classformat_ldc_w_dynamic = {0} <Dynamic {2} {3} {4}> [{1}] classformat_ldc_w_class = {0} <Class {2}> [{1}] classformat_ldc_w_float = {0} <Float {2}> [{1}] classformat_ldc_w_integer = {0} <Integer {2}> [{1}] |