Class BasicBlock

All Implemented Interfaces:
Debug, GraphVertex<BasicBlock>, Comparable<BasicBlock>

public class BasicBlock extends AbstractVertex<Edge,BasicBlock> implements Debug
Simple basic block abstraction for BCEL.
Author:
David Hovemeyer
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    class 
    A forward Iterator over the instructions of a basic block.
  • Field Summary

    Fields inherited from interface edu.umd.cs.findbugs.ba.Debug

    VERIFY_INTEGRITY
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addInstruction(org.apache.bcel.generic.InstructionHandle handle)
    Add an InstructionHandle to the basic block.
    boolean
    containsInstruction(org.apache.bcel.generic.InstructionHandle handle)
    Return whether or not the basic block contains the given instruction.
    boolean
    Return whether or not the basic block contains the instruction with the given bytecode offset.
    org.apache.bcel.generic.CodeExceptionGen
    Get CodeExceptionGen object; returns null if this basic block is not the entry point of an exception handler.
    org.apache.bcel.generic.InstructionHandle
    Get the instruction for which this block is an exception thrower.
    org.apache.bcel.generic.InstructionHandle
    Get the first instruction in the basic block.
    int
    Deprecated.
    call getLabel() instead
    org.apache.bcel.generic.InstructionHandle
    Get the last instruction in the basic block.
    org.apache.bcel.generic.InstructionHandle
    getPredecessorOf(org.apache.bcel.generic.InstructionHandle handle)
    Get the predecessor of given instruction within the basic block.
    org.apache.bcel.generic.InstructionHandle
    getSuccessorOf(org.apache.bcel.generic.InstructionHandle handle)
    Get the successor of given instruction within the basic block.
    Get an Iterator over the instructions in the basic block.
    Iterator<org.apache.bcel.generic.InstructionHandle>
    Get an Iterator over the instructions in the basic block in reverse order.
    boolean
    Return true if there are no Instructions in this basic block.
    boolean
    Is this block an exception handler?
    boolean
    Return whether or not this block is an exception thrower.
    boolean
     
    boolean
    Return whether or not this block is a null check.
    int
    pos()
     
    void
    setExceptionGen(TypeMerger m, org.apache.bcel.generic.CodeExceptionGen exceptionGen)
    Set the CodeExceptionGen object.
    void
    setExceptionThrower(org.apache.bcel.generic.InstructionHandle exceptionThrower)
    Set the instruction for which this block is the ETB.
     

    Methods inherited from class edu.umd.cs.findbugs.graph.AbstractVertex

    compareTo, equals, getLabel, hashCode, setLabel

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • BasicBlock

      public BasicBlock()
      Constructor.
  • Method Details

    • isInJSRSubroutine

      public boolean isInJSRSubroutine()
    • getId

      @Deprecated public int getId()
      Deprecated.
      call getLabel() instead
      Get the basic block's integer label.
      Returns:
      the BasicBlock's integer label
    • toString

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

      public void setExceptionThrower(org.apache.bcel.generic.InstructionHandle exceptionThrower)
      Set the instruction for which this block is the ETB.
      Parameters:
      exceptionThrower - the instruction
    • isExceptionThrower

      public boolean isExceptionThrower()
      Return whether or not this block is an exception thrower.
    • getExceptionThrower

      public org.apache.bcel.generic.InstructionHandle getExceptionThrower()
      Get the instruction for which this block is an exception thrower.
      Returns:
      the instruction, or null if this block is not an exception thrower
    • isNullCheck

      public boolean isNullCheck()
      Return whether or not this block is a null check.
    • getFirstInstruction

      public org.apache.bcel.generic.InstructionHandle getFirstInstruction()
      Get the first instruction in the basic block.
    • getLastInstruction

      public org.apache.bcel.generic.InstructionHandle getLastInstruction()
      Get the last instruction in the basic block.
    • getSuccessorOf

      @CheckForNull public org.apache.bcel.generic.InstructionHandle getSuccessorOf(org.apache.bcel.generic.InstructionHandle handle)
      Get the successor of given instruction within the basic block.
      Parameters:
      handle - the instruction
      Returns:
      the instruction's successor, or null if the instruction is the last in the basic block
    • getPredecessorOf

      public org.apache.bcel.generic.InstructionHandle getPredecessorOf(org.apache.bcel.generic.InstructionHandle handle)
      Get the predecessor of given instruction within the basic block.
      Parameters:
      handle - the instruction
      Returns:
      the instruction's predecessor, or null if the instruction is the first in the basic block
    • addInstruction

      public void addInstruction(org.apache.bcel.generic.InstructionHandle handle)
      Add an InstructionHandle to the basic block.
      Parameters:
      handle - the InstructionHandle
    • instructionIterator

      public BasicBlock.InstructionIterator instructionIterator()
      Get an Iterator over the instructions in the basic block.
    • instructionReverseIterator

      public Iterator<org.apache.bcel.generic.InstructionHandle> instructionReverseIterator()
      Get an Iterator over the instructions in the basic block in reverse order. This is useful for backwards dataflow analyses.
    • isEmpty

      public boolean isEmpty()
      Return true if there are no Instructions in this basic block.
    • pos

      public int pos()
    • isExceptionHandler

      public boolean isExceptionHandler()
      Is this block an exception handler?
    • getExceptionGen

      public org.apache.bcel.generic.CodeExceptionGen getExceptionGen()
      Get CodeExceptionGen object; returns null if this basic block is not the entry point of an exception handler.
      Returns:
      the CodeExceptionGen object, or null
    • setExceptionGen

      public void setExceptionGen(@Nullable TypeMerger m, org.apache.bcel.generic.CodeExceptionGen exceptionGen)
      Set the CodeExceptionGen object. Marks this basic block as the entry point of an exception handler.
      Parameters:
      exceptionGen - the CodeExceptionGen object for the block
    • containsInstruction

      public boolean containsInstruction(org.apache.bcel.generic.InstructionHandle handle)
      Return whether or not the basic block contains the given instruction.
      Parameters:
      handle - the instruction
      Returns:
      true if the block contains the instruction, false otherwise
    • containsInstructionWithOffset

      public boolean containsInstructionWithOffset(int offset)
      Return whether or not the basic block contains the instruction with the given bytecode offset.
      Parameters:
      offset - the bytecode offset
      Returns:
      true if the block contains an instruction with the given offset, false if it does not