at.dms.optimize
Class InstructionHandle

java.lang.Object
  |
  +--at.dms.classfile.AbstractInstructionAccessor
        |
        +--at.dms.optimize.InstructionHandle
All Implemented Interfaces:
Constants, InstructionAccessor

public class InstructionHandle
extends AbstractInstructionAccessor
implements Constants


Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, 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, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
InstructionHandle(Instruction instruction, InstructionHandle prev)
          Creates a new instruction handle.
 
Method Summary
 void addAccessor(AccessorContainer accessor)
           
 void addLineNumberInfo(java.util.List lineNumberInfo)
          Adds line number info stored for the instruction to the specified list.
 void attachTo(AccessorContainer container)
          Notifies this handle that is has been attached to the specified container.
 void clean()
          reset
 void destroy()
          destroy
 AccessorContainer getAccessor(int i)
           
 Instruction getInstruction()
          Returns the enclosed instruction.
 JumpInstruction getJump()
          Returns the instruction as a Jump instruction.
 LocalVarInstruction getLocal()
          Returns the instruction as a Jump instruction.
 InstructionHandle getNext()
          Returns the handle of the next instruction in textual order.
 int getOpcode()
          Returns the target of this jump instruction.
 InstructionHandle getPrevious()
          Returns the handle of the next instruction in textual order.
 InstructionHandle getTarget()
          Returns the target of this jump instruction.
 boolean isJump()
          Returns true if this instruction is a jump instruction.
 boolean isReached()
          isReached
 boolean isTarget()
          isTarget
 boolean remove()
          destroy
 void removeAccessor(AccessorContainer accessor)
           
 void removeAccessors()
           
 void replaceBy(Instruction instruction)
          replaceBy
 void replaceBy(Instruction[] instructions)
          replaceBy
 void reset()
          reset
 void set()
          isReached
 void setNext(InstructionHandle next)
          Sets the handle of the next instruction in textual order.
 void setTarget(InstructionHandle target)
          Returns the target of this jump instruction.
 
Methods inherited from class at.dms.classfile.AbstractInstructionAccessor
transform
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InstructionHandle

public InstructionHandle(Instruction instruction,
                         InstructionHandle prev)
Creates a new instruction handle.
Parameters:
instruction - the instruction
prev - the handle of the next instruction in textual order
Method Detail

attachTo

public void attachTo(AccessorContainer container)
Notifies this handle that is has been attached to the specified container.

addLineNumberInfo

public void addLineNumberInfo(java.util.List lineNumberInfo)
Adds line number info stored for the instruction to the specified list.

getInstruction

public Instruction getInstruction()
Returns the enclosed instruction.

getNext

public InstructionHandle getNext()
Returns the handle of the next instruction in textual order.

getPrevious

public InstructionHandle getPrevious()
Returns the handle of the next instruction in textual order.

isJump

public boolean isJump()
Returns true if this instruction is a jump instruction.

getJump

public JumpInstruction getJump()
Returns the instruction as a Jump instruction.

getLocal

public LocalVarInstruction getLocal()
Returns the instruction as a Jump instruction.

getTarget

public InstructionHandle getTarget()
Returns the target of this jump instruction.

setTarget

public void setTarget(InstructionHandle target)
Returns the target of this jump instruction.

getOpcode

public int getOpcode()
Returns the target of this jump instruction.

setNext

public void setNext(InstructionHandle next)
Sets the handle of the next instruction in textual order.

isReached

public boolean isReached()
isReached

isTarget

public boolean isTarget()
isTarget

set

public void set()
isReached

destroy

public void destroy()
destroy

remove

public boolean remove()
destroy

reset

public void reset()
reset

clean

public void clean()
reset

replaceBy

public void replaceBy(Instruction instruction)
replaceBy

replaceBy

public void replaceBy(Instruction[] instructions)
replaceBy

addAccessor

public void addAccessor(AccessorContainer accessor)

getAccessor

public AccessorContainer getAccessor(int i)

removeAccessor

public void removeAccessor(AccessorContainer accessor)

removeAccessors

public void removeAccessors()