Public Member Functions | Private Member Functions | Private Attributes

OA::SideEffect::ManagerInterSideEffectStandard Class Reference

#include <ManagerInterSideEffectStandard.hpp>

Inheritance diagram for OA::SideEffect::ManagerInterSideEffectStandard:
Inheritance graph
[legend]
Collaboration diagram for OA::SideEffect::ManagerInterSideEffectStandard:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ManagerInterSideEffectStandard (OA_ptr< InterSideEffectIRInterface > _ir)
 ~ManagerInterSideEffectStandard ()
OA_ptr< InterSideEffectStandardperformAnalysis (OA_ptr< CallGraph::CallGraphInterface > callGraph, OA_ptr< DataFlow::ParamBindings > paramBind, OA_ptr< Alias::InterAliasInterface > interAlias, OA_ptr< ManagerSideEffectStandard > intraMan, DataFlow::DFPImplement algorithm)

Private Member Functions

OA_ptr< DataFlow::DataFlowSetinitializeTop ()
 Return an initialized top set.
OA_ptr< DataFlow::DataFlowSetinitializeBottom ()
 Return an initialized bottom set.
OA_ptr< DataFlow::DataFlowSetinitializeNode (ProcHandle proc)
 Should generate an initial DataFlowSet for a procedure.
OA_ptr< DataFlow::DataFlowSetinitializeNodeIN (OA_ptr< CallGraph::NodeInterface > n)
OA_ptr< DataFlow::DataFlowSetinitializeNodeOUT (OA_ptr< CallGraph::NodeInterface > n)
OA_ptr< DataFlow::DataFlowSetinitializeEdge (CallHandle call, ProcHandle caller, ProcHandle callee)
OA_ptr< DataFlow::DataFlowSetinitializeEdge (CallHandle call, ProcHandle caller, SymHandle callee)
OA_ptr< DataFlow::DataFlowSetmeet (OA_ptr< DataFlow::DataFlowSet > set1, OA_ptr< DataFlow::DataFlowSet > set2)
OA_ptr< DataFlow::DataFlowSetatCallGraphNode (OA_ptr< DataFlow::DataFlowSet > inSet, OA::ProcHandle proc)
 What the analysis does for the particular procedure.
OA_ptr< DataFlow::DataFlowSetatCallGraphEdge (OA_ptr< DataFlow::DataFlowSet > inSet, OA::CallHandle call, ProcHandle caller, ProcHandle callee)
OA_ptr< DataFlow::DataFlowSetatCallGraphEdge (OA_ptr< DataFlow::DataFlowSet > inSet, CallHandle call, ProcHandle caller, SymHandle callee)
 use if callee is not defined in the call graph
OA_ptr< DataFlow::DataFlowSetnodeToEdge (ProcHandle proc, OA_ptr< DataFlow::DataFlowSet > procDFSet, CallHandle call)
OA_ptr< DataFlow::DataFlowSetedgeToNode (CallHandle call, OA_ptr< DataFlow::DataFlowSet > callDFSet, ProcHandle proc)

Private Attributes

OA_ptr
< InterSideEffectIRInterface
mIR
OA_ptr
< Alias::InterAliasInterface
mInterAlias
OA_ptr< InterSideEffectStandardmInterSideEffect
OA_ptr< DataFlow::ParamBindingsmParamBind
OA_ptr< ManagerSideEffectStandardmIntraMan
OA_ptr
< DataFlow::CallGraphDFSolver
mSolver

Detailed Description

The AnnotationManager for InterSideEffectStandard. This class can build an InterSideEffectStandard.

Definition at line 42 of file ManagerInterSideEffectStandard.hpp.


Constructor & Destructor Documentation

OA::SideEffect::ManagerInterSideEffectStandard::ManagerInterSideEffectStandard ( OA_ptr< InterSideEffectIRInterface _ir  ) 
OA::SideEffect::ManagerInterSideEffectStandard::~ManagerInterSideEffectStandard (  )  [inline]

Definition at line 45 of file ManagerInterSideEffectStandard.hpp.


Member Function Documentation

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::atCallGraphEdge ( OA_ptr< DataFlow::DataFlowSet inSet,
OA::CallHandle  call,
ProcHandle  caller,
ProcHandle  callee 
) [private, virtual]

What the analysis does for a particular call use if both caller and callee are defined

What the analysis does for a particular call Use this version if both caller and callee are defined (have associated ProcHandles)

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 248 of file ManagerInterSideEffectStandard.cpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::atCallGraphEdge ( OA_ptr< DataFlow::DataFlowSet inSet,
CallHandle  call,
ProcHandle  caller,
SymHandle  callee 
) [private, virtual]

use if callee is not defined in the call graph

What the analysis does for a particular call Use this version if callee is not defined in the call graph

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 412 of file ManagerInterSideEffectStandard.cpp.

References OA::SideEffect::debug, OA::OA_ptr< T >::dump(), mInterSideEffect, and mIR.

Here is the call graph for this function:

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::atCallGraphNode ( OA_ptr< DataFlow::DataFlowSet inSet,
OA::ProcHandle  proc 
) [private, virtual]

What the analysis does for the particular procedure.

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 213 of file ManagerInterSideEffectStandard.cpp.

OA_ptr<DataFlow::DataFlowSet> OA::SideEffect::ManagerInterSideEffectStandard::edgeToNode ( CallHandle  call,
OA_ptr< DataFlow::DataFlowSet callDFSet,
ProcHandle  proc 
) [inline, private, virtual]

translate results from caller edge to procedure node if top-down or from callee edge if bottom-up

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 125 of file ManagerInterSideEffectStandard.hpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeBottom (  )  [private, virtual]

Return an initialized bottom set.

Shouldn't be called.

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 151 of file ManagerInterSideEffectStandard.cpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeEdge ( CallHandle  call,
ProcHandle  caller,
SymHandle  callee 
) [private, virtual]

Should generate an initial DataFlowSet for a call, called when callee is not defined in call graph and therefore doesn't have a procedure definition handle

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 190 of file ManagerInterSideEffectStandard.cpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeEdge ( CallHandle  call,
ProcHandle  caller,
ProcHandle  callee 
) [private, virtual]

Should generate an initial DataFlowSet, use if for a call if both caller and callee are defined

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 179 of file ManagerInterSideEffectStandard.cpp.

References initializeTop().

Here is the call graph for this function:

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeNode ( ProcHandle  proc  )  [private, virtual]

Should generate an initial DataFlowSet for a procedure.

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 160 of file ManagerInterSideEffectStandard.cpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeNodeIN ( OA_ptr< CallGraph::NodeInterface n  )  [private, virtual]

Should generate an initial DataFlowSet, use if for a call if both caller and callee are defined

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 166 of file ManagerInterSideEffectStandard.cpp.

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeNodeOUT ( OA_ptr< CallGraph::NodeInterface n  )  [private, virtual]
OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::initializeTop (  )  [private, virtual]

Return an initialized top set.

Data-flow set passed around on the call graph is an CountDFSet.

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 141 of file ManagerInterSideEffectStandard.cpp.

Referenced by initializeEdge().

OA_ptr< DataFlow::DataFlowSet > OA::SideEffect::ManagerInterSideEffectStandard::meet ( OA_ptr< DataFlow::DataFlowSet set1,
OA_ptr< DataFlow::DataFlowSet set2 
) [private, virtual]

OK to modify set1 and return it as result, because solver only passes a tempSet in as set1

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 205 of file ManagerInterSideEffectStandard.cpp.

OA_ptr<DataFlow::DataFlowSet> OA::SideEffect::ManagerInterSideEffectStandard::nodeToEdge ( ProcHandle  proc,
OA_ptr< DataFlow::DataFlowSet procDFSet,
CallHandle  call 
) [inline, private, virtual]

translate results from procedure node to callee edge if top-down or to caller edge if bottom-up

Implements OA::DataFlow::CallGraphDFProblem.

Definition at line 117 of file ManagerInterSideEffectStandard.hpp.

OA_ptr< InterSideEffectStandard > OA::SideEffect::ManagerInterSideEffectStandard::performAnalysis ( OA_ptr< CallGraph::CallGraphInterface callGraph,
OA_ptr< DataFlow::ParamBindings paramBind,
OA_ptr< Alias::InterAliasInterface interAlias,
OA_ptr< ManagerSideEffectStandard intraMan,
DataFlow::DFPImplement  algorithm 
)

Going to use the solve on CallGraph. Just passing around count of locations in the combination of all size SideEffect sets, because if doing things properly would essentially end up with six LocDFSets. Instead, the callbacks will just update the InterSideEffect datastructure.

Definition at line 72 of file ManagerInterSideEffectStandard.cpp.


Member Data Documentation

Definition at line 134 of file ManagerInterSideEffectStandard.hpp.

Definition at line 135 of file ManagerInterSideEffectStandard.hpp.

Referenced by atCallGraphEdge().

Definition at line 137 of file ManagerInterSideEffectStandard.hpp.

Definition at line 133 of file ManagerInterSideEffectStandard.hpp.

Referenced by atCallGraphEdge().

Definition at line 136 of file ManagerInterSideEffectStandard.hpp.

Definition at line 138 of file ManagerInterSideEffectStandard.hpp.

Referenced by ManagerInterSideEffectStandard().


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