|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.aspectwerkz.transform.inlining.AsmHelper
public class AsmHelper
Helper class with utility methods for the ASM library.
Field Summary | |
---|---|
static ClassInfo |
BOOLEAN
|
static ClassInfo |
BYTE
|
static ClassInfo |
CHARACTER
|
static ClassInfo |
DOUBLE
|
static ClassInfo |
FLOAT
|
static ClassInfo |
INTEGER
|
static boolean |
IS_JAVA_5
A boolean to check if we have a J2SE 5 support |
static int |
JAVA_VERSION
|
static ClassInfo |
LONG
|
static ClassInfo |
SHORT
|
static ClassInfo |
VOID
|
Fields inherited from interface org.objectweb.asm.Constants |
---|
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 |
Constructor Summary | |
---|---|
AsmHelper()
|
Method Summary | |
---|---|
static void |
addDefaultValue(org.objectweb.asm.CodeVisitor cv,
org.objectweb.asm.Type type)
Adds the default value for a type. |
static void |
addNullableString(org.objectweb.asm.CodeVisitor cv,
String value)
Adds a string and inserts null if the string is null. |
static void |
addReturnStatement(org.objectweb.asm.CodeVisitor mv,
org.objectweb.asm.Type type)
Adds the correct return statement. |
static int |
calculateClassHash(String declaringType)
Calculates the class hash. |
static int |
calculateConstructorHash(String desc)
Calculates the constructor hash. |
static int |
calculateFieldHash(String name,
String desc)
Calculates the field hash. |
static int |
calculateMethodHash(String name,
String desc)
Calculates the method hash. |
static String |
convertArrayTypeName(String typeName)
Converts an internal Java array type name ([Lblabla) to the a the format used by the expression matcher (blabla[]) |
static String |
convertReflectDescToTypeDesc(String desc)
Converts a java reflect type desc to ASM type desc. |
static String |
convertTypeDescToReflectDesc(String typeDesc)
Converts an ASM type descriptor" (I, [I, [Ljava/lang/String;, Ljava/lang/String;) to a Java.reflect one (int, [I, [Ljava.lang.String;, java.lang.String) |
static Class |
defineClass(ClassLoader loader,
byte[] bytes,
String name)
Adds a class to a class loader and loads it. |
static void |
dumpClass(String dumpDir,
String className,
byte[] bytes)
Dumps an ASM class to disk. |
static void |
dumpClass(String dumpDir,
String className,
org.objectweb.asm.ClassWriter cw)
Dumps an ASM class to disk. |
static Class |
forName(ClassLoader loader,
String name)
Tries to load a class if unsuccessful returns null. |
static org.objectweb.asm.Type[] |
getArgumentTypes(Constructor constructor)
Gets the argument types for a constructor. |
static org.objectweb.asm.Type[] |
getArgumentTypes(MethodInfo method)
Returns the Java types corresponding to the argument types of the given method. |
static String |
getClassDescriptor(ClassInfo c)
Returns the descriptor corresponding to the given Java type. |
static String |
getConstructorDescriptor(ConstructorInfo constructor)
Returns the descriptor corresponding to the given constructor info. |
static String |
getFieldDescriptor(FieldInfo field)
Returns the descriptor corresponding to the given field info. |
static String |
getMethodDescriptor(MethodInfo method)
Returns the descriptor corresponding to the given method info. |
static int |
getRegisterDepth(org.objectweb.asm.Type[] typesOnStack)
Compute the register depth, based on an array of types (long, double = 2 bytes address) |
static int |
getRegisterIndexOf(org.objectweb.asm.Type[] typesOnStack,
int typeIndex)
Compute the index on the stack of a given argument based on its index in the signature |
static org.objectweb.asm.Type |
getType(ClassInfo c)
Returns the Java type corresponding to the given class. |
static int |
getTypeIndexOf(org.objectweb.asm.Type[] typesOnStack,
int registerIndex)
Compute the index on the signature of a given argument based on its index as if it was on the stack where the stack would start at the first argument |
static int |
incrementIndex(int index,
org.objectweb.asm.Type type)
Increments the index (takes doubles and longs in to account). |
static boolean |
isPrimitive(org.objectweb.asm.Type returnType)
Checks if the Type is a primitive. |
static void |
loadArgumentTypes(org.objectweb.asm.CodeVisitor mv,
org.objectweb.asm.Type[] argumentTypes,
boolean staticMethod)
Loads argument types. |
static void |
loadIntegerConstant(org.objectweb.asm.CodeVisitor cv,
int index)
Creates and adds the correct parameter index for integer types. |
static int |
loadType(org.objectweb.asm.CodeVisitor cv,
int index,
org.objectweb.asm.Type type)
Loads a type. |
static org.objectweb.asm.ClassWriter |
newClassWriter(boolean computeMax)
Factory method for ASM ClassWriter and J2SE 5 support See http://www.objectweb.org/wws/arc/asm/2004-08/msg00005.html |
static void |
prepareWrappingOfPrimitiveType(org.objectweb.asm.CodeVisitor cv,
org.objectweb.asm.Type type)
Prepares the wrapping or a primitive type. |
static int |
storeType(org.objectweb.asm.CodeVisitor cv,
int index,
org.objectweb.asm.Type type)
Stores a type. |
static void |
unwrapType(org.objectweb.asm.CodeVisitor cv,
org.objectweb.asm.Type type)
Handles the unwrapping of a type, unboxing of primitives and casting to the correct object type. |
static void |
wrapPrimitiveType(org.objectweb.asm.CodeVisitor cv,
org.objectweb.asm.Type type)
Handles the wrapping of a primitive type. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final ClassInfo INTEGER
public static final ClassInfo VOID
public static final ClassInfo BOOLEAN
public static final ClassInfo BYTE
public static final ClassInfo CHARACTER
public static final ClassInfo SHORT
public static final ClassInfo DOUBLE
public static final ClassInfo FLOAT
public static final ClassInfo LONG
public static final boolean IS_JAVA_5
public static int JAVA_VERSION
Constructor Detail |
---|
public AsmHelper()
Method Detail |
---|
public static org.objectweb.asm.ClassWriter newClassWriter(boolean computeMax)
computeMax
-
public static org.objectweb.asm.Type[] getArgumentTypes(Constructor constructor)
constructor
-
public static void dumpClass(String dumpDir, String className, byte[] bytes) throws IOException
dumpDir
- className
- bytes
-
IOException
public static void dumpClass(String dumpDir, String className, org.objectweb.asm.ClassWriter cw) throws IOException
dumpDir
- className
- cw
-
IOException
public static Class defineClass(ClassLoader loader, byte[] bytes, String name)
loader
- the class loader (if null the context class loader will be used)bytes
- the bytes for the classname
- the name of the class
public static Class forName(ClassLoader loader, String name)
loader
- the class loadername
- the name of the class
public static int calculateMethodHash(String name, String desc)
name
- desc
-
public static int calculateConstructorHash(String desc)
desc
-
public static int calculateFieldHash(String name, String desc)
name
- desc
-
public static int calculateClassHash(String declaringType)
declaringType
-
public static String convertArrayTypeName(String typeName)
typeName
- is type name
public static String convertTypeDescToReflectDesc(String typeDesc)
typeDesc
-
public static String convertReflectDescToTypeDesc(String desc)
desc
-
public static void addReturnStatement(org.objectweb.asm.CodeVisitor mv, org.objectweb.asm.Type type)
mv
- type
- public static void loadArgumentTypes(org.objectweb.asm.CodeVisitor mv, org.objectweb.asm.Type[] argumentTypes, boolean staticMethod)
mv
- argumentTypes
- public static int loadType(org.objectweb.asm.CodeVisitor cv, int index, org.objectweb.asm.Type type)
cv
- index
- type
-
public static int storeType(org.objectweb.asm.CodeVisitor cv, int index, org.objectweb.asm.Type type)
cv
- index
- type
-
public static void loadIntegerConstant(org.objectweb.asm.CodeVisitor cv, int index)
cv
- index
- public static void prepareWrappingOfPrimitiveType(org.objectweb.asm.CodeVisitor cv, org.objectweb.asm.Type type)
cv
- type
- public static void wrapPrimitiveType(org.objectweb.asm.CodeVisitor cv, org.objectweb.asm.Type type)
cv
- type
- public static void unwrapType(org.objectweb.asm.CodeVisitor cv, org.objectweb.asm.Type type)
(obj==null)?0L:((Long)obj).longValue();
cv
- type
- public static void addDefaultValue(org.objectweb.asm.CodeVisitor cv, org.objectweb.asm.Type type)
cv
- type
- public static void addNullableString(org.objectweb.asm.CodeVisitor cv, String value)
cv
- value
- public static int getRegisterDepth(org.objectweb.asm.Type[] typesOnStack)
typesOnStack
-
public static int getRegisterIndexOf(org.objectweb.asm.Type[] typesOnStack, int typeIndex)
typesOnStack
- typeIndex
-
public static int getTypeIndexOf(org.objectweb.asm.Type[] typesOnStack, int registerIndex)
typesOnStack
- registerIndex
-
public static boolean isPrimitive(org.objectweb.asm.Type returnType)
returnType
-
public static int incrementIndex(int index, org.objectweb.asm.Type type)
index
- type
-
public static String getMethodDescriptor(MethodInfo method)
method
-
public static String getConstructorDescriptor(ConstructorInfo constructor)
constructor
-
public static String getFieldDescriptor(FieldInfo field)
field
-
public static String getClassDescriptor(ClassInfo c)
c
- an object class, a primitive class or an array class.
public static org.objectweb.asm.Type[] getArgumentTypes(MethodInfo method)
method
- a method.
public static org.objectweb.asm.Type getType(ClassInfo c)
c
- a class.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |