Class Insn
- java.lang.Object
-
- com.sun.jdo.api.persistence.enhancer.classfile.Insn
-
- All Implemented Interfaces:
VMConstants
- Direct Known Subclasses:
InsnConstOp
,InsnIInc
,InsnIntOp
,InsnLookupSwitch
,InsnMultiDimArrayNew
,InsnSingle
,InsnTableSwitch
,InsnTarget
,InsnTargetOp
public abstract class Insn extends Object implements VMConstants
Insn is an abstract class which represents a java VM instruction in a sequence of instructions.
-
-
Field Summary
Fields Modifier and Type Field Description static int
opc_target
-
Fields inherited from interface com.sun.jdo.api.persistence.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
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Insn
append(Insn i)
Append an instruction sequence at the end of this instruction sequence.abstract 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 operandsstatic Insn
create(int theOpCode, int intValue)
Create an instruction which requires a single integral constant as an immediate operand.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.Insn
insert(Insn i)
Insert an instruction sequence in the code sequence after this instruction.static int
loadStoreDataType(int opcode)
Return the type of value manipulated by the load/store instructionvoid
markTargets()
Mark possible branch targetsInsn
next()
Returns the next instruction in the code sequenceabstract 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 sequenceint
opcode()
Return the opcode for this instructionstatic String
opName(int opcode)
Return the name of the operation for a given opcodeInsn
prev()
Returns the previous instruction in the code sequencevoid
printInsn(PrintStream out)
Print this instruction to the output streamvoid
printList(PrintStream out)
Print the sequence of instructions to the output streamvoid
remove()
Removes the current instruction from it's embedding sequence.abstract 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.
-
-
-
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 String argTypes()
What are the types of the stack operands ?
-
resultTypes
public abstract 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 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(PrintStream out)
Print the sequence of instructions to the output stream
-
printInsn
public void printInsn(PrintStream out)
Print this instruction to the output stream
-
loadStoreDataType
public static final int loadStoreDataType(int opcode)
Return the type of value manipulated by the load/store instruction
-
-