Package com.tonic.analysis.instruction
Class GetFieldInstruction
- java.lang.Object
-
- com.tonic.analysis.instruction.Instruction
-
- com.tonic.analysis.instruction.GetFieldInstruction
-
public class GetFieldInstruction extends Instruction
Represents the JVM GETFIELD and GETSTATIC instructions.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGetFieldInstruction.FieldTypeThe field-read kinds (instance GETFIELD vs static GETSTATIC), each pairing a JVM opcode with its mnemonic.
-
Constructor Summary
Constructors Constructor Description GetFieldInstruction(ConstPool constPool, int opcode, int offset, int fieldIndex)Constructs a GetFieldInstruction.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(AbstractBytecodeVisitor visitor)Accepts a visitor for bytecode analysis.StringgetFieldDescriptor()Returns the field descriptor.intgetFieldIndex()StringgetFieldName()Returns the field name.intgetLocalChange()Returns the change in local variables caused by this instruction.StringgetOwnerClass()Returns the owner class name.intgetStackChange()Returns the change in stack size caused by this instruction.booleanisStatic()Returns whether this is a static field access.StringresolveField()Resolves and returns a string representation of the field.StringtoString()Returns a string representation of the instruction.voidwrite(DataOutputStream dos)Writes the get field opcode and its operand to the DataOutputStream.-
Methods inherited from class com.tonic.analysis.instruction.Instruction
getLength, getOffset, getOpcode, setOffset
-
-
-
-
Constructor Detail
-
GetFieldInstruction
public GetFieldInstruction(ConstPool constPool, int opcode, int offset, int fieldIndex)
Constructs a GetFieldInstruction.- Parameters:
constPool- The constant pool associated with the class.opcode- The opcode of the instruction.offset- The bytecode offset of the instruction.fieldIndex- The constant pool index for the field reference.- Throws:
IllegalArgumentException- if the opcode is not GETFIELD or GETSTATIC
-
-
Method Detail
-
getFieldIndex
public int getFieldIndex()
- Returns:
- the field index
-
accept
public void accept(AbstractBytecodeVisitor visitor)
Description copied from class:InstructionAccepts a visitor for bytecode analysis.- Specified by:
acceptin classInstruction- Parameters:
visitor- The visitor to accept.
-
write
public void write(DataOutputStream dos) throws IOException
Writes the get field opcode and its operand to the DataOutputStream.- Specified by:
writein classInstruction- Parameters:
dos- The DataOutputStream to write to.- Throws:
IOException- If an I/O error occurs.
-
getStackChange
public int getStackChange()
Returns the change in stack size caused by this instruction.- Specified by:
getStackChangein classInstruction- Returns:
- The stack size change (depends on the field type).
-
getLocalChange
public int getLocalChange()
Returns the change in local variables caused by this instruction.- Specified by:
getLocalChangein classInstruction- Returns:
- The local variables size change (none).
-
resolveField
public String resolveField()
Resolves and returns a string representation of the field.- Returns:
- The field as a string.
-
getFieldName
public String getFieldName()
Returns the field name.- Returns:
- The field name.
-
getFieldDescriptor
public String getFieldDescriptor()
Returns the field descriptor.- Returns:
- The field descriptor.
-
getOwnerClass
public String getOwnerClass()
Returns the owner class name.- Returns:
- The owner class internal name.
-
isStatic
public boolean isStatic()
Returns whether this is a static field access.- Returns:
- true if GETSTATIC, false if GETFIELD.
-
toString
public String toString()
Returns a string representation of the instruction.- Overrides:
toStringin classInstruction- Returns:
- The mnemonic, field index, and resolved field.
-
-