void CATBuilder::processWorkSpace(otawa::WorkSpace *fw) { //int i; const BlockCollection *colls = DATA_BLOCK_COLLECTION(fw); const hard::Cache *cache = hard::CACHE_CONFIGURATION(fw)->dataCache(); for (int i = 0; i < cache->rowCount(); i++) { ASSERT(i == colls[i].cacheSet()); processLBlockSet(fw, colls[i], cache ); } }
virtual void processWorkSpace(WorkSpace *ws) { // get information const hard::CacheConfiguration *conf = hard::CACHE_CONFIGURATION(ws); const hard::Cache *cache = conf->dataCache(); if(!cache) throw ProcessorException(*this, "no data cache !"); const BlockCollection *colls = DATA_BLOCK_COLLECTION(ws); // initialize the dirty sets for(CFGCollection::Iterator cfg(otawa::INVOLVED_CFGS(ws)); cfg; cfg++) for(CFG::BBIterator bb(cfg); bb; bb++) DIRTY(bb).ref().allocate(cache->rowCount()); // perform the analysis for(int i = 0; i < cache->rowCount(); i++) if(colls[i].count()) processColl(ws, colls[i]); }