void liveVariables(void) { int i; sFree(); hasPhi = FALSE; globalVars = briggsAllocs(tempCount); worklist = briggsAllocs(blockCount); livelist = briggsAllocs(blockCount); visited = briggsAllocs(blockCount); for (i=0; i < blockCount; i++) { if (blockArray[i]) { blockArray[i]->liveGen = sallocbit(tempCount); blockArray[i]->liveKills = sallocbit(tempCount); blockArray[i]-> liveIn = sallocbit(tempCount); blockArray[i]->liveOut = sallocbit(tempCount); } } for (i=0; i <tempCount; i++) { tempInfo[i]->liveAcrossBlock = FALSE; } liveSetup(); if (hasPhi) killPhiPaths1(); liveOut(); if (hasPhi) killPhiPaths2(); }
std::shared_ptr<Bucket> Bucket::fresh(BucketManager& bucketManager, std::vector<LedgerEntry> const& liveEntries, std::vector<LedgerKey> const& deadEntries) { std::vector<BucketEntry> live, dead, combined; live.reserve(liveEntries.size()); dead.reserve(deadEntries.size()); for (auto const& e : liveEntries) { BucketEntry ce; ce.type(LIVEENTRY); ce.liveEntry() = e; live.push_back(ce); } for (auto const& e : deadEntries) { BucketEntry ce; ce.type(DEADENTRY); ce.deadEntry() = e; dead.push_back(ce); } std::sort(live.begin(), live.end(), BucketEntryIdCmp()); std::sort(dead.begin(), dead.end(), BucketEntryIdCmp()); OutputIterator liveOut(bucketManager.getTmpDir(), true); OutputIterator deadOut(bucketManager.getTmpDir(), true); for (auto const& e : live) { liveOut.put(e); } for (auto const& e : dead) { deadOut.put(e); } auto liveBucket = liveOut.getBucket(bucketManager); auto deadBucket = deadOut.getBucket(bucketManager); return Bucket::merge(bucketManager, liveBucket, deadBucket); }