org.objectweb.proactive.core.mop
Class ASMBytecodeStubBuilder

java.lang.Object
  |
  +--org.objectweb.proactive.core.mop.ASMBytecodeStubBuilder
All Implemented Interfaces:
org.objectweb.asm.Constants

public class ASMBytecodeStubBuilder
extends java.lang.Object
implements org.objectweb.asm.Constants


Field Summary
protected  java.lang.Class cl
           
protected  org.objectweb.asm.ClassWriter classGenerator
           
protected  java.lang.String className
           
protected static org.apache.log4j.Logger logger
           
protected static java.lang.String METHOD_ARRAY_TYPE
           
protected static java.lang.String METHOD_TYPE
           
protected static java.lang.String METHODCALL_TYPE
           
protected  java.lang.reflect.Method[] methods
           
protected static java.lang.String OBJECT_ARRAY_TYPE
           
protected static java.lang.String OBJECT_TYPE
           
protected  java.lang.String packageName
           
protected static java.lang.String PROXY_FIELD_NAME
           
protected static java.lang.String PROXY_TYPE
           
protected static java.lang.String STUB_INTERFACE_NAME
           
protected  java.lang.String stubClassFullName
           
protected  java.lang.String stubClassSimpleName
           
 
Fields inherited from interface org.objectweb.asm.Constants
AALOAD, AASTORE, ACC_ABSTRACT, 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
 
Constructor Summary
ASMBytecodeStubBuilder(java.lang.String classname)
           
 
Method Summary
protected static int convertJavaModifierToASM(int javaModifier)
           
 byte[] create()
           
protected  org.objectweb.asm.ClassWriter createClassGenerator()
           
protected  void createConstructor()
           
protected  void createFields()
           
protected  void createGetAndSetProxyMethods()
           
protected  org.objectweb.asm.CodeVisitor createMethod(int methodIndex, java.lang.reflect.Method m)
           
protected  org.objectweb.asm.CodeVisitor createMethodGenerator(java.lang.reflect.Method m)
           
protected  void createReturnCode(org.objectweb.asm.CodeVisitor cv, java.lang.Class c)
           
protected  void createStaticInitializer()
           
protected  void createStaticVariables()
           
protected  void createUnwrappingCode(org.objectweb.asm.CodeVisitor cv, java.lang.Class c)
           
protected  int getOpcodeOffset(java.lang.Class type)
          Returns the offset which must be added to some opcodes to get an opcode of the given type.
protected  int getSize(java.lang.Class type)
          Return the size of the given type.
 java.lang.String getStubClassFullName()
           
protected static int lengthOfType(java.lang.Class cl)
           
protected static int removeNativeAndAbstractModifiers(int modifiers)
           
protected  void setInfos()
          This method is called by the constructor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static org.apache.log4j.Logger logger

cl

protected java.lang.Class cl

className

protected java.lang.String className

packageName

protected java.lang.String packageName

methods

protected java.lang.reflect.Method[] methods

stubClassSimpleName

protected java.lang.String stubClassSimpleName

stubClassFullName

protected java.lang.String stubClassFullName

classGenerator

protected org.objectweb.asm.ClassWriter classGenerator

METHODCALL_TYPE

protected static final java.lang.String METHODCALL_TYPE
See Also:
Constant Field Values

OBJECT_TYPE

protected static final java.lang.String OBJECT_TYPE
See Also:
Constant Field Values

OBJECT_ARRAY_TYPE

protected static final java.lang.String OBJECT_ARRAY_TYPE
See Also:
Constant Field Values

METHOD_TYPE

protected static final java.lang.String METHOD_TYPE
See Also:
Constant Field Values

METHOD_ARRAY_TYPE

protected static final java.lang.String METHOD_ARRAY_TYPE
See Also:
Constant Field Values

PROXY_TYPE

protected static final java.lang.String PROXY_TYPE
See Also:
Constant Field Values

STUB_INTERFACE_NAME

protected static final java.lang.String STUB_INTERFACE_NAME
See Also:
Constant Field Values

PROXY_FIELD_NAME

protected static final java.lang.String PROXY_FIELD_NAME
See Also:
Constant Field Values
Constructor Detail

ASMBytecodeStubBuilder

public ASMBytecodeStubBuilder(java.lang.String classname)
                       throws java.lang.ClassNotFoundException
Method Detail

createClassGenerator

protected org.objectweb.asm.ClassWriter createClassGenerator()

create

public byte[] create()

createMethodGenerator

protected org.objectweb.asm.CodeVisitor createMethodGenerator(java.lang.reflect.Method m)

removeNativeAndAbstractModifiers

protected static int removeNativeAndAbstractModifiers(int modifiers)

convertJavaModifierToASM

protected static int convertJavaModifierToASM(int javaModifier)

createMethod

protected org.objectweb.asm.CodeVisitor createMethod(int methodIndex,
                                                     java.lang.reflect.Method m)

createUnwrappingCode

protected void createUnwrappingCode(org.objectweb.asm.CodeVisitor cv,
                                    java.lang.Class c)

createReturnCode

protected void createReturnCode(org.objectweb.asm.CodeVisitor cv,
                                java.lang.Class c)

createFields

protected void createFields()

createConstructor

protected void createConstructor()

createStaticVariables

protected void createStaticVariables()

createStaticInitializer

protected void createStaticInitializer()

createGetAndSetProxyMethods

protected void createGetAndSetProxyMethods()

lengthOfType

protected static int lengthOfType(java.lang.Class cl)

setInfos

protected void setInfos()
This method is called by the constructor


getStubClassFullName

public java.lang.String getStubClassFullName()

getOpcodeOffset

protected int getOpcodeOffset(java.lang.Class type)
Returns the offset which must be added to some opcodes to get an opcode of the given type. More precisely, returns the offset which must be added to an opc_iXXXX opcode to get the opc_YXXXX opcode corresponding to the given type. For example, if the given type is double the result is 3, which means that opc_dload, opc_dstore, opc_dreturn... opcodes are equal to opc_iload+3, opc_istore+3, opc_ireturn+3...

Parameters:
type - a Java class representing a Java type (primitive or not).
Returns:
the opcode offset of the corresponding to the given type.

getSize

protected int getSize(java.lang.Class type)
Return the size of the given type. This size is 2 for the double and long types, and 1 for the other types.

Parameters:
type - a Java class representing a Java type (primitive or not).
Returns:
the size of the given type.


Copyright © April 2004 INRIA All Rights Reserved.