ActiveStandard.cpp

Go to the documentation of this file.
00001 
00015 #include "ActiveStandard.hpp"
00016 
00017 namespace OA {
00018   namespace Activity {
00019 
00020 ActiveStandard::ActiveStandard(ProcHandle p) 
00021 { mActiveStmtSet = new std::set<StmtHandle>;
00022   mActiveMemRefSet = new std::set<MemRefHandle>;
00023   mActiveLocSet = new DataFlow::LocDFSet;
00024   mActiveSymSet = new std::set<SymHandle>;
00025   mUnknownLocActive = false;
00026 }
00027 
00029 OA_ptr<LocIterator> ActiveStandard::getActiveLocsIterator() 
00030 { OA_ptr<LocIterator> retval;
00031   retval = new DataFlow::LocDFSetIterator(*mActiveLocSet);
00032   return retval;
00033 }
00034 
00036 OA_ptr<StmtHandleIterator> ActiveStandard::getActiveStmtIterator() 
00037 {
00038   OA_ptr<StmtHandleIterator> retval;
00039   retval = new ActiveStmtIterator(mActiveStmtSet);
00040   return retval;
00041 }
00042 
00044 OA_ptr<MemRefHandleIterator> ActiveStandard::getActiveMemRefIterator() 
00045 {
00046   OA_ptr<MemRefHandleIterator> retval;
00047   retval = new ActiveMemRefIterator(mActiveMemRefSet);
00048   return retval;
00049 }
00050 
00051 
00053 OA_ptr<SymHandleIterator> ActiveStandard::getActiveSymIterator() 
00054 {
00055   OA_ptr<SymHandleIterator> retval;
00056   retval = new ActiveSymIterator(mActiveSymSet);
00057   return retval;
00058 }
00059 
00060 
00061 
00063 bool ActiveStandard::isActive(SymHandle sym)
00064 {
00065   // an unknown location is active, therefore all symbols are active
00066   if (mUnknownLocActive) {
00067     return true;
00068   } else if (mActiveSymSet->find(sym) != mActiveSymSet->end()) {
00069     return true;
00070   } else {
00071     return false;
00072   }  
00073 }
00074 
00076 bool ActiveStandard::isActive(StmtHandle stmt)
00077 {
00078   if (mActiveStmtSet->find(stmt) != mActiveStmtSet->end()) {
00079     return true;
00080   } else {
00081     return false;
00082   }  
00083 }
00084 
00086 bool ActiveStandard::isActive(MemRefHandle memref)
00087 {
00088   if (mActiveMemRefSet->find(memref) != mActiveMemRefSet->end()) {
00089     return true;
00090   } else {
00091     return false;
00092   }  
00093 }
00094 
00095 //*****************************************************************
00096 // Construction methods 
00097 //*****************************************************************
00098 
00100 void ActiveStandard::insertLoc(OA_ptr<Location> loc) 
00101 { 
00102     // We only need Active Locations
00103     // code for getting Active Symbols is deprecated.
00104 
00105     mActiveLocSet->insert(loc); 
00106 
00107     if (loc->isaSubSet()) {
00108       OA_ptr<Location> baseLoc = loc->getBaseLoc();
00109       insertLoc(baseLoc);
00110 
00111     }
00112 }
00113 
00115 void ActiveStandard::insertStmt(StmtHandle stmt) 
00116 { mActiveStmtSet->insert(stmt); }
00117 
00119 void ActiveStandard::insertMemRef(MemRefHandle memref) 
00120 { mActiveMemRefSet->insert(memref); }
00121 
00122 
00123 
00124 //*****************************************************************
00125 // Output
00126 //*****************************************************************
00127 
00129 void ActiveStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
00130 {
00131     os << "ActiveLocSet = " << std::endl;
00132     mActiveLocSet->dump(os,ir);
00133 
00134     os << std::endl << "ActiveSymSet = " << std::endl;
00135     OA_ptr<SymHandleIterator> symIterPtr;
00136     symIterPtr = new ActiveSymIterator(mActiveSymSet);
00137     for ( ; symIterPtr->isValid(); (*symIterPtr)++ ) {
00138         os << ir->toString(symIterPtr->current()) << std::endl;
00139     }
00140     os << "mUnknownLocActive = " << mUnknownLocActive << std::endl;
00141 
00142     os << std::endl << "ActiveStmtList = " << std::endl;
00143     OA_ptr<StmtHandleIterator> stmtIterPtr = getActiveStmtIterator();
00144     for ( ; stmtIterPtr->isValid(); (*stmtIterPtr)++ ) {
00145         os << ir->toString(stmtIterPtr->current()) << std::endl;
00146     }
00147 
00148     os << std::endl << "ActiveMemRefList = " << std::endl;
00149     OA_ptr<MemRefHandleIterator> memrefIterPtr = getActiveMemRefIterator();
00150     for ( ; memrefIterPtr->isValid(); (*memrefIterPtr)++ ) {
00151         os << ir->toString(memrefIterPtr->current()) << std::endl;
00152     }
00153 
00154 }
00155 
00156 
00157   } // end of Activity namespace
00158 } // end of OA namespace

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