69 import static jdk.internal.org.objectweb.asm.Opcodes.LCONST_0;
70 import static jdk.internal.org.objectweb.asm.Opcodes.LRETURN;
71 import static jdk.internal.org.objectweb.asm.Opcodes.NEW;
72 import static jdk.internal.org.objectweb.asm.Opcodes.POP;
73 import static jdk.internal.org.objectweb.asm.Opcodes.PUTFIELD;
74 import static jdk.internal.org.objectweb.asm.Opcodes.PUTSTATIC;
75 import static jdk.internal.org.objectweb.asm.Opcodes.RETURN;
76 import static jdk.internal.org.objectweb.asm.Opcodes.SALOAD;
77 import static jdk.internal.org.objectweb.asm.Opcodes.SASTORE;
78 import static jdk.internal.org.objectweb.asm.Opcodes.SIPUSH;
79 import static jdk.internal.org.objectweb.asm.Opcodes.SWAP;
80 import static jdk.nashorn.internal.tools.nasgen.StringConstants.INIT;
81 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_INIT2;
82 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_INIT3;
83 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_TYPE;
84 import static jdk.nashorn.internal.tools.nasgen.StringConstants.TYPE_SPECIALIZATION;
85 import java.util.List;
86 import jdk.internal.org.objectweb.asm.Handle;
87 import jdk.internal.org.objectweb.asm.MethodVisitor;
88 import jdk.internal.org.objectweb.asm.Type;
89
90 /**
91 * Base class for all method generating classes.
92 *
93 */
94 public class MethodGenerator extends MethodVisitor {
95 private final int access;
96 private final String name;
97 private final String descriptor;
98 private final Type returnType;
99 private final Type[] argumentTypes;
100
101 static final Type EMPTY_LINK_LOGIC_TYPE = Type.getType("Ljdk/nashorn/internal/objects/annotations/SpecializedFunction$LinkLogic$Empty;");
102
103 MethodGenerator(final MethodVisitor mv, final int access, final String name, final String descriptor) {
104 super(ASM4, mv);
105 this.access = access;
106 this.name = name;
107 this.descriptor = descriptor;
108 this.returnType = Type.getReturnType(descriptor);
109 this.argumentTypes = Type.getArgumentTypes(descriptor);
110 }
111
112 int getAccess() {
113 return access;
114 }
115
116 final String getName() {
117 return name;
118 }
119
120 final String getDescriptor() {
121 return descriptor;
|
69 import static jdk.internal.org.objectweb.asm.Opcodes.LCONST_0;
70 import static jdk.internal.org.objectweb.asm.Opcodes.LRETURN;
71 import static jdk.internal.org.objectweb.asm.Opcodes.NEW;
72 import static jdk.internal.org.objectweb.asm.Opcodes.POP;
73 import static jdk.internal.org.objectweb.asm.Opcodes.PUTFIELD;
74 import static jdk.internal.org.objectweb.asm.Opcodes.PUTSTATIC;
75 import static jdk.internal.org.objectweb.asm.Opcodes.RETURN;
76 import static jdk.internal.org.objectweb.asm.Opcodes.SALOAD;
77 import static jdk.internal.org.objectweb.asm.Opcodes.SASTORE;
78 import static jdk.internal.org.objectweb.asm.Opcodes.SIPUSH;
79 import static jdk.internal.org.objectweb.asm.Opcodes.SWAP;
80 import static jdk.nashorn.internal.tools.nasgen.StringConstants.INIT;
81 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_INIT2;
82 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_INIT3;
83 import static jdk.nashorn.internal.tools.nasgen.StringConstants.SPECIALIZATION_TYPE;
84 import static jdk.nashorn.internal.tools.nasgen.StringConstants.TYPE_SPECIALIZATION;
85 import java.util.List;
86 import jdk.internal.org.objectweb.asm.Handle;
87 import jdk.internal.org.objectweb.asm.MethodVisitor;
88 import jdk.internal.org.objectweb.asm.Type;
89 import jdk.nashorn.internal.objects.annotations.SpecializedFunction.LinkLogic;
90
91 /**
92 * Base class for all method generating classes.
93 *
94 */
95 public class MethodGenerator extends MethodVisitor {
96 private final int access;
97 private final String name;
98 private final String descriptor;
99 private final Type returnType;
100 private final Type[] argumentTypes;
101
102 static final Type EMPTY_LINK_LOGIC_TYPE = Type.getType(LinkLogic.getEmptyLinkLogicClass());
103
104 MethodGenerator(final MethodVisitor mv, final int access, final String name, final String descriptor) {
105 super(ASM4, mv);
106 this.access = access;
107 this.name = name;
108 this.descriptor = descriptor;
109 this.returnType = Type.getReturnType(descriptor);
110 this.argumentTypes = Type.getArgumentTypes(descriptor);
111 }
112
113 int getAccess() {
114 return access;
115 }
116
117 final String getName() {
118 return name;
119 }
120
121 final String getDescriptor() {
122 return descriptor;
|