Class Location

java.lang.Object
edu.umd.cs.findbugs.ba.Location
All Implemented Interfaces:
Comparable<Location>

public class Location extends Object implements Comparable<Location>

A class representing a location in the CFG for a method. Essentially, it represents a static instruction, with the important caveat that CFGs have inlined JSR subroutines, meaning that a single InstructionHandle in a CFG may represent several static locations. To this end, a Location is comprised of both an InstructionHandle and the BasicBlock that contains it.

Location objects may be compared with each other using the equals() method, and may be used as keys in tree and hash maps and sets. Note that it is only valid to compare Locations produced from the same CFG.

Author:
David Hovemeyer
See Also:
  • Constructor Details

    • Location

      public Location(@Nonnull org.apache.bcel.generic.InstructionHandle handle, @Nonnull BasicBlock basicBlock)
      Constructor.
      Parameters:
      handle - the instruction
      basicBlock - the basic block containing the instruction
  • Method Details

    • getFirstLocation

      public static Location getFirstLocation(@Nonnull BasicBlock basicBlock)
    • getLastLocation

      public static Location getLastLocation(@Nonnull BasicBlock basicBlock)
    • getHandle

      @Nonnull public org.apache.bcel.generic.InstructionHandle getHandle()
      Get the instruction handle.
    • getBasicBlock

      @Nonnull public BasicBlock getBasicBlock()
      Get the basic block.
    • isFirstInstructionInBasicBlock

      public boolean isFirstInstructionInBasicBlock()
      Return whether or not the Location is positioned at the first instruction in the basic block.
    • isLastInstructionInBasicBlock

      public boolean isLastInstructionInBasicBlock()
      Return whether or not the Location is positioned at the last instruction in the basic block.
    • compareTo

      public int compareTo(Location other)
      Specified by:
      compareTo in interface Comparable<Location>
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toCompactString

      public String toCompactString()
      Returns:
      a compact string of the form "bb:xx", where "bb" is the basic block number and "xx" is the bytecode offset