Ejemplo n.º 1
0
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 );
	}
}
Ejemplo n.º 2
0
	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]);
	}