org.jboss.byteman.agent.adapter.cfg
Class InstructionSequence

java.lang.Object
  extended by org.jboss.byteman.agent.adapter.cfg.InstructionSequence

public class InstructionSequence
extends java.lang.Object

Class used to hold a sequence of instructions within a basic block


Field Summary
private  int[] encodedInstructions
          data array storing instructions and their operands encoded as ints.
private  int[] instructionOffsets
          since instructions are encoded with their operands we need an offsets array to identify where each instruction strats, allowing instructions and their operand to be searched forwards and backwards
private  int numEncoded
          the number of valid entries in array encodedInstructions
private  int numInstructions
          the number of valid offsets to instructions in array instructionOffsets
 
Constructor Summary
InstructionSequence()
           
 
Method Summary
 int add(int insn)
          add an instruction to the sequence
 int add(int insn, int arg1)
          add an instruction with one encoded argument to the sequence
 int add(int insn, int[] args)
          add an instruction with an arbitrary number of encoded arguments to the sequence
 int add(int insn, int arg1, int arg2)
          add an instruction with two encoded arguments to the sequence
 int add(int insn, int arg1, int arg2, int arg3)
          add an instruction with three encoded arguments to the sequence
private  void ensureSpace(int count)
          expand the offsets array if necessary to allow room for 1 more instructions with count more arguments
 int get(int i)
          return the instruction at the supplied offset
 int getArg(int i, int j)
          return a specific encoded argument of a given instruction
 int getArgCount(int i)
          return the number of encoded arguments of a given instruction
 int getType(int i)
          return the type of a given instruction
 int size()
          return the number of instructions in the sequence
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instructionOffsets

private int[] instructionOffsets
since instructions are encoded with their operands we need an offsets array to identify where each instruction strats, allowing instructions and their operand to be searched forwards and backwards


numInstructions

private int numInstructions
the number of valid offsets to instructions in array instructionOffsets


encodedInstructions

private int[] encodedInstructions
data array storing instructions and their operands encoded as ints. integer operands are embedded as is operands which are strings (type, const, field etc) must be translated via the names array in the associated cfg. operands which are jump labels must be translated by calling getNthOut() on the associated basic block.


numEncoded

private int numEncoded
the number of valid entries in array encodedInstructions

Constructor Detail

InstructionSequence

public InstructionSequence()
Method Detail

ensureSpace

private void ensureSpace(int count)
expand the offsets array if necessary to allow room for 1 more instructions with count more arguments


size

public int size()
return the number of instructions in the sequence

Returns:
the the number of instructions in the sequence

get

public int get(int i)
return the instruction at the supplied offset

Returns:
the ith instruction in the sequuence

getType

public int getType(int i)
return the type of a given instruction

Returns:
the ith instruction in the sequuence

getArgCount

public int getArgCount(int i)
return the number of encoded arguments of a given instruction

Parameters:
i - the offset of the instruction
Returns:
the number of encoded arguments of the ith instruction in the sequuence

getArg

public int getArg(int i,
                  int j)
return a specific encoded argument of a given instruction

Parameters:
i - the offset of the instruction
j - the index of the arguument attached to the instruction
Returns:
the jth encoded argument of the ith instruction in the sequuence

add

public int add(int insn)
add an instruction to the sequence

Parameters:
insn -
Returns:
the index of the newly added instruction

add

public int add(int insn,
               int arg1)
add an instruction with one encoded argument to the sequence

Parameters:
insn -
Returns:
the index of the newly added instruction

add

public int add(int insn,
               int arg1,
               int arg2)
add an instruction with two encoded arguments to the sequence

Parameters:
insn -
Returns:
the index of the newly added instruction

add

public int add(int insn,
               int arg1,
               int arg2,
               int arg3)
add an instruction with three encoded arguments to the sequence

Parameters:
insn -
Returns:
the index of the newly added instruction

add

public int add(int insn,
               int[] args)
add an instruction with an arbitrary number of encoded arguments to the sequence

Parameters:
insn -
Returns:
the index of the newly added instruction