decompiler  1.0.0
Public Types | Public Member Functions | Public Attributes | List of all members
ghidra::TraceDAG::BlockTrace Struct Reference

A trace of a single path out of a BranchPoint. More...

Public Types

enum  { f_active = 1, f_terminal = 2 }
 

Public Member Functions

 BlockTrace (BranchPoint *t, int4 po, int4 eo)
 Construct given a parent BranchPoint and path index. More...
 
 BlockTrace (BranchPoint *root, int4 po, FlowBlock *bl)
 Construct a root BlockTrace. More...
 
bool isActive (void) const
 Return true if this is active.
 
bool isTerminal (void) const
 Return true is this terminates.
 

Public Attributes

uint4 flags
 Properties of the BlockTrace.
 
BranchPointtop
 Parent BranchPoint for which this is a path.
 
int4 pathout
 Index of the out-edge for this path (relative to the parent BranchPoint)
 
FlowBlockbottom
 Current node being traversed along 1 path from decision point.
 
FlowBlockdestnode
 Next FlowBlock node this BlockTrace will try to push into.
 
int4 edgelump
 If >1, edge to destnode is "virtual" representing multiple edges coming together.
 
list< BlockTrace * >::iterator activeiter
 Position of this in the active trace list.
 
BranchPointderivedbp
 BranchPoint blocker this traces into.
 

Detailed Description

A trace of a single path out of a BranchPoint.

Once a BranchPoint is retired with 1 outgoing edge, the multiple paths coming out of the BranchPoint are considered a single path for the parent BlockTrace.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
f_active 

This BlockTrace is active.

f_terminal 

All paths from this point exit (without merging back to parent)

Constructor & Destructor Documentation

◆ BlockTrace() [1/2]

ghidra::TraceDAG::BlockTrace::BlockTrace ( BranchPoint t,
int4  po,
int4  eo 
)

Construct given a parent BranchPoint and path index.

Parameters
tis the parent BranchPoint
pois the index of the formal path out of the BranchPoint to this
eois the edge index out of the BranchPoints root FlowBlock

References ghidra::FloatingEdge::bottom, ghidra::FlowBlock::getOut(), and ghidra::FloatingEdge::top.

◆ BlockTrace() [2/2]

ghidra::TraceDAG::BlockTrace::BlockTrace ( BranchPoint root,
int4  po,
FlowBlock bl 
)

Construct a root BlockTrace.

Attach BlockTrace to a virtual root BranchPoint, where there isn't an explicit FlowBlock acting as branch point.

Parameters
rootis the virtual BranchPoint
pois the path out the BranchPoint to this
blis the first FlowBlock along the path

References ghidra::FloatingEdge::bottom, and ghidra::FloatingEdge::top.


The documentation for this struct was generated from the following files: