-// Accessor for the underlying GlobalValRefMap...
-ConstantPointerRef *Module::getConstantPointerRef(GlobalValue *V){
- // Create ref map lazily on demand...
- if (GVRefMap == 0) GVRefMap = new GlobalValueRefMap();
-
- GlobalValueRefMap::iterator I = GVRefMap->Map.find(V);
- if (I != GVRefMap->Map.end()) return I->second;
-
- ConstantPointerRef *Ref = new ConstantPointerRef(V);
- GVRefMap->Map[V] = Ref;
- return Ref;
-}
-
-void Module::destroyConstantPointerRef(ConstantPointerRef *CPR) {
- assert(GVRefMap && "No map allocated, but we have a CPR?");
- if (!GVRefMap->Map.erase(CPR->getValue())) // Remove it from the map...
- assert(0 && "ConstantPointerRef not found in module CPR map!");
-
- if (GVRefMap->Map.empty()) { // If the map is empty, delete it.
- delete GVRefMap;
- GVRefMap = 0;
- }
-}
-
-void Module::mutateConstantPointerRef(GlobalValue *OldGV, GlobalValue *NewGV) {
- GlobalValueRefMap::iterator I = GVRefMap->Map.find(OldGV);
- assert(I != GVRefMap->Map.end() &&
- "mutateConstantPointerRef; OldGV not in table!");
- ConstantPointerRef *Ref = I->second;
-
- // Remove the old entry...
- GVRefMap->Map.erase(I);
-
- // Insert the new entry...
- GVRefMap->Map.insert(std::make_pair(NewGV, Ref));
-}