ROSE  0.9.10.2
Public Types | Public Member Functions | List of all members
Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex Class Reference

Description

CFG vertex for data-flow analysis.

See Also
DfCfg

Definition at line 25 of file DataFlow.h.

#include <DataFlow.h>

Public Types

enum  Type {
  BBLOCK,
  FAKED_CALL,
  FUNCRET,
  INDET
}
 Vertex type. More...
 

Public Member Functions

 DfCfgVertex (const BasicBlock::Ptr &bblock, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a basic block vertex. More...
 
 DfCfgVertex (const Function::Ptr &function, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a faked call vertex. More...
 
 DfCfgVertex (Type type, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a vertex of specified type that takes no auxiliary data. More...
 
Type type () const
 Type of the vertex. More...
 
const BasicBlock::Ptrbblock () const
 Basic block. More...
 
const Function::Ptrcallee () const
 Function represented by faked call. More...
 
Function::Ptr parentFunction () const
 Function owning this vertex. More...
 
size_t inliningId () const
 Inlining invocation number. More...
 

Member Enumeration Documentation

Vertex type.

Enumerator
BBLOCK 

Vertex represents a basic block.

FAKED_CALL 

Represents a whole called function.

FUNCRET 

Vertex represents returning to the caller.

INDET 

Indeterminate basic block where no information is available.

Definition at line 28 of file DataFlow.h.

Constructor & Destructor Documentation

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const BasicBlock::Ptr bblock,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a basic block vertex.

The basic block pointer should not be a null pointer.

Definition at line 44 of file DataFlow.h.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const Function::Ptr function,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a faked call vertex.

The function may be null if indeterminate.

Definition at line 50 of file DataFlow.h.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( Type  type,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a vertex of specified type that takes no auxiliary data.

Definition at line 54 of file DataFlow.h.

References BBLOCK, and FAKED_CALL.

Member Function Documentation

Type Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::type ( ) const
inline

Type of the vertex.

Vertex types are immutable, defined when the vertex is created. Every vertex has a type.

Definition at line 62 of file DataFlow.h.

const BasicBlock::Ptr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::bblock ( ) const
inline

Basic block.

The basic block for a vertex is immutable, defined when the vertex is created. Only basic block vertices have a basic block; other vertex types will return a null pointer.

Definition at line 68 of file DataFlow.h.

const Function::Ptr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::callee ( ) const
inline

Function represented by faked call.

Definition at line 71 of file DataFlow.h.

Function::Ptr Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::parentFunction ( ) const
inline

Function owning this vertex.

Pointer to the function to which this vertex belongs. For basic blocks, it's a function to which the basic block belongs; for faked calls, its the caller function; for function returns, it's the function returning; for the indeterminate vertex it's a null pointer.

Definition at line 78 of file DataFlow.h.

size_t Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::inliningId ( ) const
inline

Inlining invocation number.

For a graph constructed for interprocedural data-flow, some function calls are replaced by the called function's body. Each time this inlining happens, a counter is incremented and all new vertices are created using this counter. The counter starts at zero.

Definition at line 85 of file DataFlow.h.


The documentation for this class was generated from the following file: