org.apache.jdo.impl.enhancer.classfile
Class Insn

java.lang.Object
  extended by org.apache.jdo.impl.enhancer.classfile.Insn
All Implemented Interfaces:
VMConstants
Direct Known Subclasses:
InsnConstOp, InsnIInc, InsnIntOp, InsnLookupSwitch, InsnMultiDimArrayNew, InsnSingle, InsnTableSwitch, InsnTarget, InsnTargetOp

public abstract class Insn
extends java.lang.Object
implements VMConstants

Insn is an abstract class which represents a java VM instruction in a sequence of instructions.


Field Summary
static int opc_target
           
 
Fields inherited from interface org.apache.jdo.impl.enhancer.classfile.VMConstants
ACCAbstract, ACCFinal, ACCInterface, ACCNative, ACCPrivate, ACCProtected, ACCPublic, ACCStatic, ACCSuper, ACCSynchronized, ACCTransient, ACCVolatile, CONSTANTClass, CONSTANTDouble, CONSTANTFieldRef, CONSTANTFloat, CONSTANTInteger, CONSTANTInterfaceMethodRef, CONSTANTLong, CONSTANTMethodRef, CONSTANTNameAndType, CONSTANTString, CONSTANTUnicode, CONSTANTUtf8, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, T_TWOWORD, T_UNKNOWN, T_WORD, TC_INTERFACE, TC_OBJECT, TC_STRING
 
Method Summary
 Insn append(Insn i)
          Append an instruction sequence at the end of this instruction sequence.
abstract  java.lang.String argTypes()
          What are the types of the stack operands ?
abstract  boolean branches()
          Does this instruction branch?
static Insn create(int theOpCode)
          Create an instruction which requires no immediate operands
static Insn create(int theOpCode, ConstBasic constValue)
          Create an instruction which requires a single constant from the constant pool as an immediate operand.
static Insn create(int theOpCode, InsnTarget target)
          Create an instruction which requires a single branch offset as an immediate operand.
static Insn create(int theOpCode, int intValue)
          Create an instruction which requires a single integral constant as an immediate operand.
 Insn insert(Insn i)
          Insert an instruction sequence in the code sequence after this instruction.
 boolean isEqual(java.util.Stack msg, java.lang.Object obj)
          Compares this instance with another for structural equality.
static int loadStoreDataType(int opcode)
          Return the type of value manipulated by the load/store instruction
 void markTargets()
          Mark possible branch targets
 Insn next()
          Returns the next instruction in the code sequence
abstract  int nStackArgs()
          How many words of stack operands does this instruction take?
abstract  int nStackResults()
          How many words of stack results does this instruction deposit?
 int offset()
          Return the offset of this instruction in the containing code sequence
 int opcode()
          Return the opcode for this instruction
static java.lang.String opName(int opcode)
          Return the name of the operation for a given opcode
 Insn prev()
          Returns the previous instruction in the code sequence
 void printInsn(java.io.PrintStream out)
          Print this instruction to the output stream
 void printList(java.io.PrintStream out)
          Print the sequence of instructions to the output stream
 void remove()
          Removes the current instruction from it's embedding sequence.
abstract  java.lang.String resultTypes()
          What are the types of the stack results?
 Insn setNext(Insn i)
          Insert the single instruction in the code sequence after this instruction.
 java.lang.String toString()
          A printable representation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

opc_target

public static final int opc_target
See Also:
Constant Field Values
Method Detail

next

public Insn next()
Returns the next instruction in the code sequence


prev

public Insn prev()
Returns the previous instruction in the code sequence


remove

public void remove()
Removes the current instruction from it's embedding sequence.


setNext

public Insn setNext(Insn i)
Insert the single instruction in the code sequence after this instruction. Returns the inserted instruction.


insert

public Insn insert(Insn i)
Insert an instruction sequence in the code sequence after this instruction. Returns the final instruction.


append

public Insn append(Insn i)
Append an instruction sequence at the end of this instruction sequence. Returns the final instruction.


opcode

public int opcode()
Return the opcode for this instruction


offset

public int offset()
Return the offset of this instruction in the containing code sequence


nStackArgs

public abstract int nStackArgs()
How many words of stack operands does this instruction take?


nStackResults

public abstract int nStackResults()
How many words of stack results does this instruction deposit?


argTypes

public abstract java.lang.String argTypes()
What are the types of the stack operands ?


resultTypes

public abstract java.lang.String resultTypes()
What are the types of the stack results?


branches

public abstract boolean branches()
Does this instruction branch?


markTargets

public void markTargets()
Mark possible branch targets


opName

public static java.lang.String opName(int opcode)
Return the name of the operation for a given opcode


create

public static Insn create(int theOpCode)
Create an instruction which requires no immediate operands


create

public static Insn create(int theOpCode,
                          ConstBasic constValue)
Create an instruction which requires a single constant from the constant pool as an immediate operand.


create

public static Insn create(int theOpCode,
                          int intValue)
Create an instruction which requires a single integral constant as an immediate operand.


create

public static Insn create(int theOpCode,
                          InsnTarget target)
Create an instruction which requires a single branch offset as an immediate operand.


printList

public void printList(java.io.PrintStream out)
Print the sequence of instructions to the output stream


printInsn

public void printInsn(java.io.PrintStream out)
Print this instruction to the output stream


isEqual

public boolean isEqual(java.util.Stack msg,
                       java.lang.Object obj)
Compares this instance with another for structural equality.


toString

public java.lang.String toString()
A printable representation

Overrides:
toString in class java.lang.Object

loadStoreDataType

public static final int loadStoreDataType(int opcode)
Return the type of value manipulated by the load/store instruction



Copyright © 2005-2009 Apache Software Foundation. All Rights Reserved.