java.lang.Object
com.blazebit.persistence.view.impl.metamodel.analysis.Executor
All Implemented Interfaces:
javassist.bytecode.Opcode

public class Executor
extends Object
implements javassist.bytecode.Opcode
Executor is responsible for modeling the effects of a JVM instruction on a frame. Christian Beikov: Adapted to track the local index a stack value belongs to.
Author:
Jason T. Greene
  • Field Summary

    Fields inherited from interface javassist.bytecode.Opcode

    AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, 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, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, 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, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE
  • Constructor Summary

    Constructors 
    Constructor Description
    Executor​(javassist.ClassPool classPool, javassist.bytecode.ConstPool constPool)  
  • Method Summary

    Modifier and Type Method Description
    void execute​(javassist.bytecode.MethodInfo method, int pos, javassist.bytecode.CodeIterator iter, Frame frame, javassist.bytecode.analysis.Subroutine subroutine)
    Execute the instruction, modeling the effects on the specified frame and subroutine.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Executor

      public Executor​(javassist.ClassPool classPool, javassist.bytecode.ConstPool constPool)
  • Method Details

    • execute

      public void execute​(javassist.bytecode.MethodInfo method, int pos, javassist.bytecode.CodeIterator iter, Frame frame, javassist.bytecode.analysis.Subroutine subroutine) throws javassist.bytecode.BadBytecode
      Execute the instruction, modeling the effects on the specified frame and subroutine. If a subroutine is passed, the access flags will be modified if this instruction accesses the local variable table.
      Parameters:
      method - the method containing the instruction
      pos - the position of the instruction in the method
      iter - the code iterator used to find the instruction
      frame - the frame to modify to represent the result of the instruction
      subroutine - the optional subroutine this instruction belongs to.
      Throws:
      javassist.bytecode.BadBytecode - if the bytecode violates the jvm spec