at.dms.optimize
Class InstructionHandle

java.lang.Object
  extended by at.dms.classfile.AbstractInstructionAccessor
      extended by at.dms.optimize.InstructionHandle
All Implemented Interfaces:
Constants, InstructionAccessor

public class InstructionHandle
extends AbstractInstructionAccessor
implements Constants


Field Summary
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, 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 insn, InstructionHandle prev)
          Creates a new instruction handle.
 
Method Summary
 void addAccessor(AccessorContainer accessor)
           
 void addLineNumberInfo(Vector lineNumberInfo)
          Adds line number info stored for the instruction to the specified vector.
 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 insn)
          replaceBy
 void replaceBy(Instruction[] insns)
          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
deepClone, deepCloneInto, 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 insn,
                         InstructionHandle prev)
Creates a new instruction handle.

Parameters:
insn - 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(Vector lineNumberInfo)
Adds line number info stored for the instruction to the specified vector.


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 insn)
replaceBy


replaceBy

public void replaceBy(Instruction[] insns)
replaceBy


addAccessor

public void addAccessor(AccessorContainer accessor)

getAccessor

public AccessorContainer getAccessor(int i)

removeAccessor

public void removeAccessor(AccessorContainer accessor)

removeAccessors

public void removeAccessors()