00001 00015 #include "VaryStandard.hpp" 00016 00017 namespace OA { 00018 namespace Activity { 00019 00020 VaryStandard::VaryStandard(ProcHandle p) 00021 { 00022 mIndepLocSet = new DataFlow::LocDFSet; 00023 } 00024 00025 OA_ptr<LocIterator> VaryStandard::getIndepSetIterator() 00026 { 00027 OA_ptr<LocIterator> retval; 00028 retval = new DataFlow::LocDFSetIterator(*mIndepLocSet); 00029 return retval; 00030 } 00031 00032 OA_ptr<LocIterator> VaryStandard::getOutVaryIterator(StmtHandle s) 00033 { 00034 OA_ptr<LocIterator> retval; 00035 if (mOutVary[s].ptrEqual(0)) { 00036 mOutVary[s] = new DataFlow::LocDFSet; 00037 } 00038 retval = new DataFlow::LocDFSetIterator(*mOutVary[s]); 00039 return retval; 00040 } 00041 00042 OA_ptr<DataFlow::LocDFSet> VaryStandard::getInVarySet(ExprHandle call) 00043 { 00044 if (mInVary.find(call)!=mInVary.end()) { 00045 return mInVary[call]; 00046 } else { 00047 OA_ptr<DataFlow::LocDFSet> emptySet; 00048 emptySet = new DataFlow::LocDFSet; 00049 return emptySet; 00050 } 00051 } 00052 00053 //***************************************************************** 00054 // Construction methods 00055 //***************************************************************** 00056 00057 void VaryStandard::insertIndepLoc(OA_ptr<Location> loc) 00058 { 00059 mIndepLocSet->insert(loc); 00060 } 00061 00062 void VaryStandard::copyIntoOutVary(StmtHandle s, 00063 OA_ptr<DataFlow::LocDFSet> dfset) 00064 { 00065 OA_ptr<DataFlow::DataFlowSet> cloneDFset = dfset->clone(); 00066 mOutVary[s] = cloneDFset.convert<DataFlow::LocDFSet>(); 00067 } 00068 00069 void VaryStandard::copyIntoInVary(ExprHandle call, 00070 OA_ptr<DataFlow::LocDFSet> dfset) 00071 { 00072 OA_ptr<DataFlow::DataFlowSet> cloneDFset = dfset->clone(); 00073 mInVary[call] = cloneDFset.convert<DataFlow::LocDFSet>(); 00074 } 00075 00076 00077 //***************************************************************** 00078 // Output 00079 //***************************************************************** 00080 00082 void VaryStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir) 00083 { 00084 os << "============================ VaryStandard" << std::endl; 00085 os << "IndepSet = " << std::endl; 00086 mIndepLocSet->dump(os,ir); 00087 00088 // iterate over all stmts we know about 00089 std::map<StmtHandle, 00090 OA_ptr<DataFlow::LocDFSet> >::iterator mapIter; 00091 for (mapIter = mOutVary.begin(); mapIter != mOutVary.end(); mapIter++) { 00092 StmtHandle s = mapIter->first; 00093 00094 os << "StmtHandle(" << s.hval() << ") " << ir->toString(s) 00095 << std::endl << "\tOutVary: " << std::endl; 00096 mapIter->second->dump(os,ir); 00097 } 00098 } 00099 00100 00101 00102 } // end of Activity namespace 00103 } // end of OA namespace
1.7.1