org.objectweb.fractal.jmx.julia.stat
Class StatCodeGenerator

java.lang.Object
  extended byorg.objectweb.fractal.julia.asm.AbstractCodeGenerator
      extended byorg.objectweb.fractal.julia.asm.SimpleCodeGenerator
          extended byorg.objectweb.fractal.jmx.julia.stat.StatCodeGenerator
All Implemented Interfaces:
CodeGenerator, Constants, Initializable

public class StatCodeGenerator
extends SimpleCodeGenerator

This code generator generates interception code. It uses the following form for all methods:

 method-signature {
   return-type result;
   delegate.statPreMethod(method-name);
   // original method code, where returns are replaced with gotos
   delegate.statPostMethod(method-name);
   return result;
 }
 
where delegate is initialized with the following code:

 delegate = (...)ic.getInterface("stat-controller");
 


Field Summary
 
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
 
Fields inherited from interface org.objectweb.fractal.julia.asm.CodeGenerator
IN, IN_OUT, OUT
 
Constructor Summary
StatCodeGenerator()
           
 
Method Summary
protected  Class getContextType()
           
protected  String getControllerInterfaceName()
           
protected  String getMethodName(Method m)
           
protected  String getPostMethodName()
           
protected  String getPreMethodName()
           
 
Methods inherited from class org.objectweb.fractal.julia.asm.SimpleCodeGenerator
generateCloneCode, generateInitCode, generateInterceptionCodeBlock, getInterceptionCodeFormals, init, initialize, needsInterfaceName, needsTargetObject
 
Methods inherited from class org.objectweb.fractal.julia.asm.AbstractCodeGenerator
close, generateInterceptionCode, getInterceptionType, intercept
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatCodeGenerator

public StatCodeGenerator()
Method Detail

getControllerInterfaceName

protected String getControllerInterfaceName()

getPreMethodName

protected String getPreMethodName()

getPostMethodName

protected String getPostMethodName()

getContextType

protected Class getContextType()

getMethodName

protected String getMethodName(Method m)