|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.classgen.BytecodeHelper
public class BytecodeHelper
A helper class for bytecode generation with AsmClassGenerator.
Field Summary | |
---|---|
private org.objectweb.asm.MethodVisitor |
mv
|
Fields inherited from interface org.objectweb.asm.Opcodes |
---|
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6 |
Constructor Summary | |
---|---|
BytecodeHelper(org.objectweb.asm.MethodVisitor mv)
|
Method Summary | |
---|---|
private static void |
addSubTypes(java.lang.StringBuffer ret,
GenericsType[] types,
java.lang.String start,
java.lang.String end)
|
void |
box(java.lang.Class type)
Generates the bytecode to autobox the current value on the stack |
void |
box(ClassNode type)
|
void |
boxBoolean()
convert boolean to Boolean |
static ClassNode |
boxOnPrimitive(ClassNode type)
|
void |
doCast(java.lang.Class type)
|
void |
doCast(ClassNode type)
|
void |
doReturn(ClassNode returnType)
|
void |
dup()
|
static java.lang.String |
formatNameForClassLoading(java.lang.String name)
returns a name that Class.forName() can take. |
static java.lang.String |
getClassInternalName(java.lang.Class t)
|
static java.lang.String |
getClassInternalName(ClassNode t)
|
static java.lang.String |
getClassInternalName(java.lang.String name)
|
static java.lang.String[] |
getClassInternalNames(ClassNode[] names)
|
static java.lang.String |
getClassLoadingTypeDescription(ClassNode c)
array types are special: eg.: String[]: classname: [Ljava.lang.String; Object: classname: java.lang.Object int[] : classname: [I unlike getTypeDescription '.' is not replaced by '/'. |
static java.lang.String |
getGenericsBounds(ClassNode type)
|
static java.lang.String |
getGenericsMethodSignature(MethodNode node)
|
static java.lang.String |
getGenericsSignature(ClassNode node)
|
private static void |
getGenericsTypeSpec(java.lang.StringBuffer ret,
GenericsType[] genericsTypes)
|
static java.lang.String |
getMethodDescriptor(java.lang.Class returnType,
java.lang.Class[] paramTypes)
|
static java.lang.String |
getMethodDescriptor(ClassNode returnType,
Parameter[] parameters)
|
org.objectweb.asm.MethodVisitor |
getMethodVisitor()
|
static java.lang.String |
getTypeDescription(java.lang.Class c)
|
static java.lang.String |
getTypeDescription(ClassNode c)
array types are special: eg.: String[]: classname: [Ljava/lang/String; int[]: [I |
private static java.lang.String |
getTypeDescription(ClassNode c,
boolean end)
array types are special: eg.: String[]: classname: [Ljava/lang/String; int[]: [I |
private static boolean |
hasGenerics(Parameter[] param)
|
void |
load(ClassNode type,
int idx)
|
void |
load(Variable v)
|
(package private) void |
loadConstant(java.lang.Object value)
load the constant on the operand stack. |
void |
loadVar(Variable variable)
load the value of the variable on the operand stack. |
void |
mark(java.lang.String msg)
load a message on the stack and remove it right away. |
void |
negateBoolean()
negate a boolean on stack. |
protected void |
pushConstant(boolean value)
|
void |
pushConstant(int value)
|
void |
putField(FieldNode fld)
|
void |
putField(FieldNode fld,
java.lang.String ownerName)
|
void |
quickBoxIfNecessary(ClassNode type)
box the primitive value on the stack |
void |
quickUnboxIfNecessary(ClassNode type)
|
void |
store(Variable v)
|
void |
store(Variable v,
boolean markStart)
|
void |
storeVar(Variable variable)
|
void |
swapObjectWith(ClassNode type)
|
void |
swapWithObject(ClassNode type)
|
void |
unbox(java.lang.Class type)
Generates the bytecode to unbox the current value on the stack |
void |
unbox(ClassNode type)
|
private static boolean |
usesGenericsInClassSignature(ClassNode node)
|
private static void |
writeGenericsBounds(java.lang.StringBuffer ret,
GenericsType type,
boolean writeInterfaceMarker)
|
private static void |
writeGenericsBoundType(java.lang.StringBuffer ret,
ClassNode printType,
boolean writeInterfaceMarker)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private org.objectweb.asm.MethodVisitor mv
Constructor Detail |
---|
public BytecodeHelper(org.objectweb.asm.MethodVisitor mv)
Method Detail |
---|
public org.objectweb.asm.MethodVisitor getMethodVisitor()
public void quickBoxIfNecessary(ClassNode type)
type
- public void quickUnboxIfNecessary(ClassNode type)
public void box(java.lang.Class type)
public void box(ClassNode type)
public void unbox(java.lang.Class type)
public void unbox(ClassNode type)
public static java.lang.String getClassInternalName(ClassNode t)
public static java.lang.String getClassInternalName(java.lang.Class t)
public static java.lang.String getClassInternalName(java.lang.String name)
public static java.lang.String getMethodDescriptor(ClassNode returnType, Parameter[] parameters)
public static java.lang.String getMethodDescriptor(java.lang.Class returnType, java.lang.Class[] paramTypes)
public static java.lang.String getTypeDescription(java.lang.Class c)
public static java.lang.String getClassLoadingTypeDescription(ClassNode c)
public static java.lang.String getTypeDescription(ClassNode c)
private static java.lang.String getTypeDescription(ClassNode c, boolean end)
public static java.lang.String[] getClassInternalNames(ClassNode[] names)
protected void pushConstant(boolean value)
public void pushConstant(int value)
public void doCast(java.lang.Class type)
public void doCast(ClassNode type)
public void load(ClassNode type, int idx)
public void load(Variable v)
public void store(Variable v, boolean markStart)
public void store(Variable v)
void loadConstant(java.lang.Object value)
public void loadVar(Variable variable)
variable
- public void storeVar(Variable variable)
public void putField(FieldNode fld)
public void putField(FieldNode fld, java.lang.String ownerName)
public void swapObjectWith(ClassNode type)
public void swapWithObject(ClassNode type)
public static ClassNode boxOnPrimitive(ClassNode type)
public void boxBoolean()
public void negateBoolean()
public void mark(java.lang.String msg)
msg
- public static java.lang.String formatNameForClassLoading(java.lang.String name)
name
- public void dup()
public void doReturn(ClassNode returnType)
private static boolean hasGenerics(Parameter[] param)
public static java.lang.String getGenericsMethodSignature(MethodNode node)
private static boolean usesGenericsInClassSignature(ClassNode node)
public static java.lang.String getGenericsSignature(ClassNode node)
private static void getGenericsTypeSpec(java.lang.StringBuffer ret, GenericsType[] genericsTypes)
public static java.lang.String getGenericsBounds(ClassNode type)
private static void writeGenericsBoundType(java.lang.StringBuffer ret, ClassNode printType, boolean writeInterfaceMarker)
private static void writeGenericsBounds(java.lang.StringBuffer ret, GenericsType type, boolean writeInterfaceMarker)
private static void addSubTypes(java.lang.StringBuffer ret, GenericsType[] types, java.lang.String start, java.lang.String end)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |