Class BlockNode

All Implemented Interfaces:
IAttributeNode, IBlock, IContainer, Comparable<BlockNode>

public final class BlockNode extends AttrNode implements IBlock, Comparable<BlockNode>
  • Field Details

    • cid

      private final int cid
      Const ID
    • pos

      private int pos
      Position in blocks list (easier to use BitSet)
    • startOffset

      private final int startOffset
      Offset in methods bytecode
    • instructions

      private final List<InsnNode> instructions
    • predecessors

      private List<BlockNode> predecessors
    • successors

      private List<BlockNode> successors
    • cleanSuccessors

      private List<BlockNode> cleanSuccessors
    • doms

      private BitSet doms
      All dominators, excluding self
    • postDoms

      private BitSet postDoms
      Post dominators, excluding self
    • domFrontier

      private BitSet domFrontier
      Dominance frontier
    • idom

      private BlockNode idom
      Immediate dominator
    • iPostDom

      private BlockNode iPostDom
      Immediate post dominator
    • dominatesOn

      private List<BlockNode> dominatesOn
      Blocks on which dominates this block
  • Constructor Details

    • BlockNode

      public BlockNode(int cid, int pos, int offset)
  • Method Details

    • getCId

      public int getCId()
    • setPos

      void setPos(int id)
    • getId

      @Deprecated public int getId()
      Deprecated.
      Deprecated. Use getPos().
    • getPos

      public int getPos()
    • getPredecessors

      public List<BlockNode> getPredecessors()
    • getSuccessors

      public List<BlockNode> getSuccessors()
    • getCleanSuccessors

      public List<BlockNode> getCleanSuccessors()
    • updateCleanSuccessors

      public void updateCleanSuccessors()
    • updateBlockPositions

      public static void updateBlockPositions(List<BlockNode> blocks)
    • lock

      public void lock()
    • cleanSuccessors

      private static List<BlockNode> cleanSuccessors(BlockNode block)
      Return all successor which are not exception handler or followed by loop back edge
    • getInstructions

      public List<InsnNode> getInstructions()
      Specified by:
      getInstructions in interface IBlock
    • getStartOffset

      public int getStartOffset()
    • isDominator

      public boolean isDominator(BlockNode block)
      Check if 'block' dominated on this node
    • getDoms

      public BitSet getDoms()
      Dominators of this node (exclude itself)
    • setDoms

      public void setDoms(BitSet doms)
    • getPostDoms

      public BitSet getPostDoms()
    • setPostDoms

      public void setPostDoms(BitSet postDoms)
    • getDomFrontier

      public BitSet getDomFrontier()
    • setDomFrontier

      public void setDomFrontier(BitSet domFrontier)
    • getIDom

      public BlockNode getIDom()
      Immediate dominator
    • setIDom

      public void setIDom(BlockNode idom)
    • getIPostDom

      public BlockNode getIPostDom()
    • setIPostDom

      public void setIPostDom(BlockNode iPostDom)
    • getDominatesOn

      public List<BlockNode> getDominatesOn()
    • addDominatesOn

      public void addDominatesOn(BlockNode block)
    • isSynthetic

      public boolean isSynthetic()
    • isReturnBlock

      public boolean isReturnBlock()
    • isMthExitBlock

      public boolean isMthExitBlock()
    • isEmpty

      public boolean isEmpty()
    • hashCode

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

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • compareTo

      public int compareTo(@NotNull @NotNull BlockNode o)
      Specified by:
      compareTo in interface Comparable<BlockNode>
    • baseString

      public String baseString()
      Description copied from interface: IContainer
      Unique id for use in 'toString()' method
      Specified by:
      baseString in interface IContainer
    • toString

      public String toString()
      Overrides:
      toString in class Object