Package serp.bytecode
Class Local
java.lang.Object
serp.bytecode.Local
- All Implemented Interfaces:
BCEntity
,InstructionPtr
- Direct Known Subclasses:
LocalVariable
,LocalVariableType
A local variable or local variable type.
- Author:
- Abe White, Sakir Murat Cengiz
-
Method Summary
Modifier and TypeMethodDescriptionReturn the class loader to use when loading related classes.getCode()
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.getEnd()
The lastInstruction
for which this local is in scope.int
Get the number of bytes for which this local has a value in the code byte array.int
getLocal()
Get the local variable index of the current frame for this local.getName()
Return the name of this local, or null if unset.int
Return theConstantPool
index of theUTF8Entry
that describes the name of this local.int
getParam()
Return the parameter that this local corresponds to, or -1 if none.getPool()
Return the constant pool of the current class.Return the project of the current class.getStart()
Return the instruction marking the beginning of this local.int
Return the index into the code byte array at which this local starts.getTable()
The owning table.int
Return theConstantPool
index of theUTF8Entry
that describes this local.Return the full name of the local's type, or null if unset.boolean
isValid()
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.void
replaceTarget
(Instruction oldTarget, Instruction newTarget) Replace the given old, likely invalid, target with a new target.void
setEnd
(Instruction end) Set the lastInstruction
for which this local is in scope.void
setLength
(int length) Set the number of bytes for which this local has a value in the code byte array.void
setLocal
(int index) Set the local variable index of the current frame for this local.void
Set the name of this inner local.void
setNameIndex
(int nameIndex) Set theConstantPool
index of theUTF8Entry
that describes the name of this local.void
setParam
(int param) Set the method parameter that this local corresponds to.void
setStart
(Instruction instruction) Set theInstruction
marking the beginning this local.void
setStartPc
(int startPc) Set the index into the code byte array at which this local starts.void
Set the type of this local.void
setTypeIndex
(int index) Set theConstantPool
index of theUTF8Entry
that describes this local.void
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr.
-
Method Details
-
getTable
The owning table. -
getLocal
public int getLocal()Get the local variable index of the current frame for this local. -
setLocal
public void setLocal(int index) Set the local variable index of the current frame for this local. -
getParam
public int getParam()Return the parameter that this local corresponds to, or -1 if none. -
setParam
public void setParam(int param) Set the method parameter that this local corresponds to. -
getStartPc
public int getStartPc()Return the index into the code byte array at which this local starts. -
getStart
Return the instruction marking the beginning of this local. -
setStartPc
public void setStartPc(int startPc) Set the index into the code byte array at which this local starts. -
setStart
Set theInstruction
marking the beginning this local. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined. -
getEnd
The lastInstruction
for which this local is in scope. -
getLength
public int getLength()Get the number of bytes for which this local has a value in the code byte array. -
setEnd
Set the lastInstruction
for which this local is in scope. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined. -
setLength
public void setLength(int length) Set the number of bytes for which this local has a value in the code byte array. -
updateTargets
public void updateTargets()Description copied from interface:InstructionPtr
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr. This method will be called after the byte code has been read in for the first time and before it is written after modification.- Specified by:
updateTargets
in interfaceInstructionPtr
-
replaceTarget
Description copied from interface:InstructionPtr
Replace the given old, likely invalid, target with a new target. The new target Instruction is guaranteed to be in the same code block as this InstructionPtr.- Specified by:
replaceTarget
in interfaceInstructionPtr
-
getNameIndex
public int getNameIndex()Return theConstantPool
index of theUTF8Entry
that describes the name of this local. Defaults to 0. -
setNameIndex
public void setNameIndex(int nameIndex) Set theConstantPool
index of theUTF8Entry
that describes the name of this local. -
getName
Return the name of this local, or null if unset. -
setName
Set the name of this inner local. -
getTypeIndex
public int getTypeIndex()Return theConstantPool
index of theUTF8Entry
that describes this local. Defaults to 0. -
setTypeIndex
public void setTypeIndex(int index) Set theConstantPool
index of theUTF8Entry
that describes this local. -
getTypeName
Return the full name of the local's type, or null if unset. -
setType
Set the type of this local. -
getProject
Description copied from interface:BCEntity
Return the project of the current class.- Specified by:
getProject
in interfaceBCEntity
-
getPool
Description copied from interface:BCEntity
Return the constant pool of the current class. -
getClassLoader
Description copied from interface:BCEntity
Return the class loader to use when loading related classes.- Specified by:
getClassLoader
in interfaceBCEntity
-
isValid
public boolean isValid()Description copied from interface:BCEntity
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined. -
getCode
Description copied from interface:InstructionPtr
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.- Specified by:
getCode
in interfaceInstructionPtr
-