All Packages Class Hierarchy This Package Previous Next Index
Class espresso.classfile.classgen.InstructionList
java.lang.Object
|
+----espresso.classfile.classgen.InstructionList
- public final class InstructionList
- extends Object
- implements Constants
This class is a container for a list of `Instruction's, instructions can
be appended, inserted, deleted, etc.. Instructions are being wrapped into
InstructionHandle objects that are returned upon append/insert operations.
They give the user (read only) access to the list structure, it can be
traversed and manipulated in a controlled way.
A list is finally dumped to a byte code array with `getByteCode'.
- See Also:
- Instruction, InstructionHandle
-
end
-
-
length
-
-
start
-
-
InstructionList()
- Create (empty) instruction list.
-
InstructionList(byte[])
- Initialize instruction list from byte array.
-
InstructionList(CompoundInstruction)
- Initialize list with (nonnull) compound instruction.
-
InstructionList(Instruction)
- Initialize list with (nonnull) instruction.
-
append(BranchInstruction)
- Append a branch instruction to the end of this list.
-
append(CompoundInstruction)
- Append a compound instruction.
-
append(Instruction)
- Append an instruction to the end of this list.
-
append(Instruction, CompoundInstruction)
- Append a compound instruction, after instruction i.
-
append(Instruction, Instruction)
- Append a single instruction j after another instruction i, which
must be in this list of course!
-
append(Instruction, InstructionList)
- Append another list after instruction i contained in this list.
-
append(InstructionHandle)
- Append an instruction to the end of this list.
-
append(InstructionHandle, InstructionList)
- Append another list after instruction (handle) ih contained in this list.
-
append(InstructionList)
- Append another list to this one.
-
copy()
-
-
delete(Instruction)
- Remove instruction from this list.
-
delete(Instruction, Instruction)
- Remove instructions from instruction `from' to instruction `to' contained
in this list.
-
delete(InstructionHandle)
- Remove instruction from this list.
-
delete(InstructionHandle, InstructionHandle)
- Remove instructions from instruction `from' to instruction `to' contained
in this list.
-
dispose()
- Delete contents of list.
-
elements()
-
-
findInstruction1(Instruction)
- Search for given Instruction reference, start at beginning of list.
-
findInstruction2(Instruction)
- Search for given Instruction reference, start at end of list
-
findTarget(InstructionHandle[], int[], int, int)
- Find the target instruction (handle) that corresponds to the given target
position.
-
getByteCode()
-
-
getEnd()
-
-
getLength()
-
-
getStackSize()
- Inaccurate, do not use!!
-
getStart()
-
-
insert(BranchInstruction)
- Insert a branch instruction at start of this list.
-
insert(CompoundInstruction)
- Insert a compound instruction.
-
insert(Instruction)
- Insert an instruction at start of this list.
-
insert(Instruction, CompoundInstruction)
- Insert a compound instruction before instruction i.
-
insert(Instruction, Instruction)
- Insert a single instruction j before another instruction i, which
must be in this list of course!
-
insert(Instruction, InstructionList)
- Insert another list before Instruction i contained in this list.
-
insert(InstructionHandle)
- Insert an instruction at start of this list.
-
insert(InstructionHandle, InstructionList)
- Insert another list before Instruction handle ih contained in this list.
-
insert(InstructionList)
- Insert another list.
-
isEmpty()
- Test for empty list.
-
remove(InstructionHandle, InstructionHandle)
- Remove from instruction `prev' to instruction `next' both contained
in this list.
-
setPositions()
- Give all instructions their position number (offset in byte stream), i.e.
-
toString()
-
start
private InstructionHandle start
end
private InstructionHandle end
length
private int length
InstructionList
public InstructionList()
- Create (empty) instruction list.
InstructionList
public InstructionList(byte code[])
- Initialize instruction list from byte array.
- Parameters:
- code - byte array containing the instructions
InstructionList
public InstructionList(Instruction i)
- Initialize list with (nonnull) instruction.
- Parameters:
- i - first instruction
InstructionList
public InstructionList(CompoundInstruction c)
- Initialize list with (nonnull) compound instruction. Consumes argument
list, i.e. it becomes empty.
- Parameters:
- c - compound instruction (list)
isEmpty
public final boolean isEmpty()
- Test for empty list.
findTarget
private static final InstructionHandle findTarget(InstructionHandle ihs[],
int pos[],
int count,
int target)
- Find the target instruction (handle) that corresponds to the given target
position.
- Parameters:
- ihs - array of instruction handles
- pos - array of positions corresponding to ihs
- count - length of arrays
- target - target position to search for
- Returns:
- target position's instruction handle if available
append
public final InstructionHandle append(Instruction i,
InstructionList il)
- Append another list after instruction i contained in this list.
Consumes argument list, i.e. it becomes empty.
- Parameters:
- i - where to append the instruction list
- il - Instruction list to append to this one
- Returns:
- instruction handle pointing to the last appended instruction, i.e.
il.getEnd()
append
public final InstructionHandle append(InstructionHandle ih,
InstructionList il)
- Append another list after instruction (handle) ih contained in this list.
Consumes argument list, i.e. it becomes empty.
- Parameters:
- ih - where to append the instruction list
- il - Instruction list to append to this one
- Returns:
- instruction handle pointing to the last appended instruction, i.e.
il.getEnd()
insert
public final InstructionHandle insert(Instruction i,
InstructionList il)
- Insert another list before Instruction i contained in this list.
Consumes argument list, i.e. it becomes empty.
- Parameters:
- i - where to append the instruction list
- il - Instruction list to insert
- Returns:
- instruction handle pointing to the first inserted instruction,
i.e. il.getStart()
insert
public final InstructionHandle insert(InstructionHandle ih,
InstructionList il)
- Insert another list before Instruction handle ih contained in this list.
Consumes argument list, i.e. it becomes empty.
- Parameters:
- i - where to append the instruction list
- il - Instruction list to insert
- Returns:
- instruction handle pointing to the first inserted instruction,
i.e. il.getStart()
append
private final void append(InstructionHandle ih)
- Append an instruction to the end of this list.
- Parameters:
- ih - instruction to append
append
public final InstructionHandle append(Instruction i)
- Append an instruction to the end of this list.
- Parameters:
- i - instruction to append
- Returns:
- instruction handle of the appended instruction
append
public final BranchHandle append(BranchInstruction i)
- Append a branch instruction to the end of this list.
- Parameters:
- i - branch instruction to append
- Returns:
- branch instruction handle of the appended instruction
insert
private final void insert(InstructionHandle ih)
- Insert an instruction at start of this list.
- Parameters:
- ih - instruction to insert
insert
public final InstructionHandle insert(Instruction i)
- Insert an instruction at start of this list.
- Parameters:
- i - instruction to insert
- Returns:
- instruction handle of the inserted instruction
insert
public final BranchHandle insert(BranchInstruction i)
- Insert a branch instruction at start of this list.
- Parameters:
- i - branch instruction to insert
- Returns:
- branch instruction handle of the appended instruction
append
public final InstructionHandle append(InstructionList il)
- Append another list to this one.
- Parameters:
- il - list to append to end of this list
- Returns:
- instruction handle of the last appended instruction
insert
public final InstructionHandle insert(InstructionList il)
- Insert another list.
- Parameters:
- il - list to insert before start of this list
- Returns:
- instruction handle of the first inserted instruction
append
public final InstructionHandle append(Instruction i,
Instruction j)
- Append a single instruction j after another instruction i, which
must be in this list of course!
- Parameters:
- i - Instruction in list
- j - Instruction to append after i in list
- Returns:
- instruction handle of the last appended instruction
insert
public InstructionHandle insert(Instruction i,
Instruction j)
- Insert a single instruction j before another instruction i, which
must be in this list of course!
- Parameters:
- i - Instruction in list
- j - Instruction to insert before i in list
- Returns:
- instruction handle of the first inserted instruction
append
public final InstructionHandle append(Instruction i,
CompoundInstruction c)
- Append a compound instruction, after instruction i.
- Parameters:
- i - Instruction in list
- c - The composite instruction (containing an InstructionList)
- Returns:
- instruction handle of the last appended instruction
insert
public final InstructionHandle insert(Instruction i,
CompoundInstruction c)
- Insert a compound instruction before instruction i.
- Parameters:
- i - Instruction in list
- c - The composite instruction (containing an InstructionList)
- Returns:
- instruction handle of the first inserted instruction
append
public final InstructionHandle append(CompoundInstruction c)
- Append a compound instruction.
- Parameters:
- c - The composite instruction (containing an InstructionList)
- Returns:
- instruction handle of the last appended instruction
insert
public final InstructionHandle insert(CompoundInstruction c)
- Insert a compound instruction.
- Parameters:
- c - The composite instruction (containing an InstructionList)
- Returns:
- instruction handle of the first inserted instruction
remove
private final void remove(InstructionHandle prev,
InstructionHandle next)
- Remove from instruction `prev' to instruction `next' both contained
in this list.
- Parameters:
- prev - where to start deleting (predecessor, exclusive)
- next - where to end deleting (successor, exclusive)
delete
public final void delete(InstructionHandle ih)
- Remove instruction from this list.
- Parameters:
- ih - instruction (handle) to remove
delete
public final void delete(Instruction i)
- Remove instruction from this list.
- Parameters:
- i - instruction to remove
delete
public final void delete(InstructionHandle from,
InstructionHandle to)
- Remove instructions from instruction `from' to instruction `to' contained
in this list. The user must ensure that `from' is an instruction before
`to', or risk havoc.
- Parameters:
- from - where to start deleting (inclusive)
- to - where to end deleting (inclusive)
delete
public final void delete(Instruction from,
Instruction to)
- Remove instructions from instruction `from' to instruction `to' contained
in this list. The user must ensure that `from' is an instruction before
`to', or risk havoc.
- Parameters:
- from - where to start deleting (inclusive)
- to - where to end deleting (inclusive)
findInstruction1
private final InstructionHandle findInstruction1(Instruction i)
- Search for given Instruction reference, start at beginning of list.
- Parameters:
- i - instruction to search for
- Returns:
- instruction found on success, null otherwise
findInstruction2
private final InstructionHandle findInstruction2(Instruction i)
- Search for given Instruction reference, start at end of list
- Parameters:
- i - instruction to search for
- Returns:
- instruction found on success, null otherwise
setPositions
public final void setPositions()
- Give all instructions their position number (offset in byte stream), i.e.
make the list ready to be dumped.
getByteCode
public byte[] getByteCode()
- Returns:
- The byte code!
toString
public String toString()
- Returns:
- String containing all instructions in this list.
- Overrides:
- toString in class Object
elements
public Enumeration elements()
- Returns:
- Enumeration that lists all instructions
copy
public InstructionList copy()
- Returns:
- complete, i.e. deep copy of this list
getStackSize
private int getStackSize()
- Inaccurate, do not use!!
- Returns:
- maximum stack size
dispose
public final void dispose()
- Delete contents of list.
getStart
public InstructionHandle getStart()
- Returns:
- start of list
getEnd
public InstructionHandle getEnd()
- Returns:
- end of list
getLength
public int getLength()
- Returns:
- length of list (Number of instructions, not bytes)
All Packages Class Hierarchy This Package Previous Next Index