Package proguard.analysis.datastructure
Class CodeLocation
- java.lang.Object
-
- proguard.analysis.datastructure.Location
-
- proguard.analysis.datastructure.CodeLocation
-
- All Implemented Interfaces:
java.lang.Comparable<Location>
public class CodeLocation extends Location
Represents a unique location in the bytecode. It comprises theClazz
andMember
where it is contained, the offset therein and the corresponding line number in the source file (Location.UNKNOWN_LINE
if it is unknown). Consider the following pseudo-bytecode example which contains code location comments:public class Test { // class "Test", member "field", line 3, offset 0 public String field; public String toString() { // class "Test", member "toString", line 6, offset 0 aload_0 // class "Test", member "toString", line 6, offset 1 getfield #1 <Test.field : Ljava/lang/String;> // class "Test", member "toString", line 6, offset 4 areturn } }
- Inside methods: Like each location, instructions inside methods have a line number.
But as there may be several expressions on the same line, to correctly identify each
instruction we also need their bytecode offset. E.g. the
getfield
instruction insidetoString()
has the offset 1. - Fields: In this case
Test#field
. A field location has a line number (3 in this example) but no offset, as this concept is only applicable to methods.
-
-
Constructor Summary
Constructors Constructor Description CodeLocation(Clazz clazz, Member member, int offset)
Create a code location with an unknown (Location.UNKNOWN_LINE
) line number.CodeLocation(Clazz clazz, Member member, int offset, int line)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compareTo(Location o)
boolean
equals(java.lang.Object o)
java.lang.String
getExternalClassName()
java.lang.String
getMemberName()
java.lang.String
getName()
Returns the name of the location, e.g., the signature of a CodeLocation, or the filename of a FileLocationint
hashCode()
java.lang.String
toString()
-
-
-
Constructor Detail
-
CodeLocation
public CodeLocation(Clazz clazz, Member member, int offset)
Create a code location with an unknown (Location.UNKNOWN_LINE
) line number.
-
-
Method Detail
-
getExternalClassName
public java.lang.String getExternalClassName()
-
getMemberName
public java.lang.String getMemberName()
-
getName
public java.lang.String getName()
Description copied from class:Location
Returns the name of the location, e.g., the signature of a CodeLocation, or the filename of a FileLocation
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
compareTo
public int compareTo(Location o)
-
-