Exemple #1
0
OA_ptr<DataFlowSet> CFGDFProblem::solve(OA_ptr<CFG::CFGInterface> cfg)
{
    // remove all mappings from statements to in and out sets
//    mStmtInSetMap.clear();
//    mStmtOutSetMap.clear();
    mNodeInSetMap.clear();
    mNodeOutSetMap.clear();
    mNodeInitTransApp.clear();

    mTop = initializeTop();
    //mBottom = initializeBottom();

    DataFlow::DGraphIterativeDFP::solve(cfg, 
            ((mDirection==Forward) ? DGraph::DEdgeOrg : DGraph::DEdgeRev));

    // if forward then return DataFlowSet for exit
    if (mDirection==Forward) {
        OA_ptr<CFG::CFGInterface::NodeInterface> exitnode = cfg->getExit();
        return mNodeInSetMap[exitnode];

    // if backward then return DataFlowSet for entry
    } else {
        OA_ptr<CFG::CFGInterface::NodeInterface> entrynode = cfg->getEntry();
        return mNodeOutSetMap[entrynode];
    }
}
void CylinderGeometryHelper::initialize()
{
	initializeShield();
	initializeBottom();
	initializeTop();
}