ActivePerStmt.cpp

Go to the documentation of this file.
00001 
00015 #include "ActivePerStmt.hpp"
00016 
00017 namespace OA {
00018   namespace Activity {
00019 
00020 ActivePerStmt::ActivePerStmt() 
00021 { 
00022   mNumIter = 0;
00023 }
00024 
00025 
00026 OA_ptr<DataFlow::LocDFSet> ActivePerStmt::getInActiveSet(StmtHandle stmt)
00027 {
00028     if (mInActive.find(stmt)!=mInActive.end()) {
00029         return mInActive[stmt];
00030     } else {
00031         OA_ptr<DataFlow::LocDFSet> emptySet; 
00032         emptySet = new DataFlow::LocDFSet;
00033         return emptySet;
00034     }
00035 }
00036 
00037 OA_ptr<DataFlow::LocDFSet> ActivePerStmt::getOutActiveSet(StmtHandle stmt)
00038 {
00039     if (mOutActive.find(stmt)!=mOutActive.end()) {
00040         return mOutActive[stmt];
00041     } else {
00042         OA_ptr<DataFlow::LocDFSet> emptySet; 
00043         emptySet = new DataFlow::LocDFSet;
00044         return emptySet;
00045     }
00046 }
00047 
00048 //*****************************************************************
00049 // Construction methods 
00050 //*****************************************************************
00051 
00052 void ActivePerStmt::copyIntoInActive(StmtHandle s, 
00053                                    OA_ptr<DataFlow::LocDFSet> dfset)
00054 {
00055     OA_ptr<DataFlow::DataFlowSet> cloneDFset = dfset->clone();
00056     mInActive[s] = cloneDFset.convert<DataFlow::LocDFSet>();
00057 }
00058 
00059 void ActivePerStmt::copyIntoOutActive(StmtHandle s, 
00060                                    OA_ptr<DataFlow::LocDFSet> dfset)
00061 {
00062     OA_ptr<DataFlow::DataFlowSet> cloneDFset = dfset->clone();
00063     mOutActive[s] = cloneDFset.convert<DataFlow::LocDFSet>();
00064 }
00065 
00066 
00067 //*****************************************************************
00068 // Annotation Interface
00069 //*****************************************************************
00070 void ActivePerStmt::output(IRHandlesIRInterface &ir)
00071 {
00072   sOutBuild->mapStart("ActiveSets","StmtHandle","ActiveLocDFSet"); {
00073     std::map<StmtHandle, OA_ptr<DataFlow::LocDFSet> >::iterator mapIter;
00074     for (mapIter = mInActive.begin(); mapIter != mInActive.end(); mapIter++) {
00075       StmtHandle stmt = mapIter->first;
00076       OA_ptr<DataFlow::LocDFSet> inActiveSet = mapIter->second;
00077       OA_ptr<DataFlow::LocDFSet> outActiveSet = mOutActive[stmt];
00078       if (outActiveSet.ptrEqual(0)) { 
00079         outActiveSet = new DataFlow::LocDFSet();
00080       }
00081       sOutBuild->mapEntryStart(); {
00082         sOutBuild->mapKeyStart(); {
00083           sOutBuild->outputIRHandle(stmt,ir);
00084         } sOutBuild->mapKeyEnd();
00085         sOutBuild->mapValueStart(); {
00086           sOutBuild->objStart("InActiveSet"); {
00087             inActiveSet->output(ir);
00088           } sOutBuild->objEnd("InActiveSet");
00089           sOutBuild->objStart("OutActiveSet"); {
00090             outActiveSet->output(ir);
00091           } sOutBuild->objEnd("OutActiveSet");
00092         } sOutBuild->mapValueEnd();
00093       } sOutBuild->mapEntryEnd();
00094     }
00095   } sOutBuild->mapEnd("ActiveSets");
00096 }
00097 
00098 //*****************************************************************
00099 // Output
00100 //*****************************************************************
00101 
00103 void ActivePerStmt::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
00104 {
00105     os << "============================ ActivePerStmt" << std::endl;
00106 
00107     // iterate over all stmts we know about
00108     std::map<StmtHandle, 
00109              OA_ptr<DataFlow::LocDFSet> >::iterator mapIter;
00110     for (mapIter = mInActive.begin(); mapIter != mInActive.end(); mapIter++) {
00111         StmtHandle s = mapIter->first;
00112         OA_ptr<DataFlow::LocDFSet> inActSet = mapIter->second;
00113         OA_ptr<DataFlow::LocDFSet> outActSet = mOutActive[s];
00114         if (outActSet.ptrEqual(0)) {
00115           outActSet = new DataFlow::LocDFSet();
00116         }
00117 
00118         os << "StmtHandle(" << ir->toString(s) << ")" 
00119            << std::endl << "\tInActive: " << std::endl;
00120         inActSet->dump(os,ir);
00121         os << "\tOutActive: " << std::endl;
00122         outActSet->dump(os,ir);
00123     }
00124 }
00125 
00126 
00127 
00128   } // end of Activity namespace
00129 } // end of OA namespace

Generated on Sat Oct 31 05:21:19 2009 for OpenAnalysis by  doxygen 1.6.1