aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Writer/SlotCalculator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bytecode/Writer/SlotCalculator.cpp')
-rw-r--r--lib/Bytecode/Writer/SlotCalculator.cpp60
1 files changed, 29 insertions, 31 deletions
diff --git a/lib/Bytecode/Writer/SlotCalculator.cpp b/lib/Bytecode/Writer/SlotCalculator.cpp
index 0941b7607b..5c4f68fed2 100644
--- a/lib/Bytecode/Writer/SlotCalculator.cpp
+++ b/lib/Bytecode/Writer/SlotCalculator.cpp
@@ -35,7 +35,7 @@ SlotCalculator::SlotCalculator(const Module *M, bool IgnoreNamed) {
//
for (unsigned i = 0; i < Type::FirstDerivedTyID; ++i) {
assert(Type::getPrimitiveType((Type::PrimitiveID)i));
- insertVal(Type::getPrimitiveType((Type::PrimitiveID)i), true);
+ insertValue(Type::getPrimitiveType((Type::PrimitiveID)i), true);
}
if (M == 0) return; // Empty table...
@@ -51,7 +51,7 @@ SlotCalculator::SlotCalculator(const Function *M, bool IgnoreNamed) {
//
for (unsigned i = 0; i < Type::FirstDerivedTyID; ++i) {
assert(Type::getPrimitiveType((Type::PrimitiveID)i));
- insertVal(Type::getPrimitiveType((Type::PrimitiveID)i), true);
+ insertValue(Type::getPrimitiveType((Type::PrimitiveID)i), true);
}
if (TheModule == 0) return; // Empty table...
@@ -71,21 +71,21 @@ void SlotCalculator::processModule() {
//
for (Module::const_giterator I = TheModule->gbegin(), E = TheModule->gend();
I != E; ++I)
- insertValue(I);
+ getOrCreateSlot(I);
// Scavenge the types out of the functions, then add the functions themselves
// to the value table...
//
for (Module::const_iterator I = TheModule->begin(), E = TheModule->end();
I != E; ++I)
- insertValue(I);
+ getOrCreateSlot(I);
// Add all of the module level constants used as initializers
//
for (Module::const_giterator I = TheModule->gbegin(), E = TheModule->gend();
I != E; ++I)
if (I->hasInitializer())
- insertValue(I->getInitializer());
+ getOrCreateSlot(I->getInitializer());
// Insert constants that are named at module level into the slot pool so that
// the module symbol table can refer to them...
@@ -105,7 +105,7 @@ void SlotCalculator::processSymbolTable(const SymbolTable *ST) {
for (SymbolTable::const_iterator I = ST->begin(), E = ST->end(); I != E; ++I)
for (SymbolTable::type_const_iterator TI = I->second.begin(),
TE = I->second.end(); TI != TE; ++TI)
- insertValue(TI->second);
+ getOrCreateSlot(TI->second);
}
void SlotCalculator::processSymbolTableConstants(const SymbolTable *ST) {
@@ -113,7 +113,7 @@ void SlotCalculator::processSymbolTableConstants(const SymbolTable *ST) {
for (SymbolTable::type_const_iterator TI = I->second.begin(),
TE = I->second.end(); TI != TE; ++TI)
if (isa<Constant>(TI->second))
- insertValue(TI->second);
+ getOrCreateSlot(TI->second);
}
@@ -130,7 +130,7 @@ void SlotCalculator::incorporateFunction(const Function *M) {
// Iterate over function arguments, adding them to the value table...
for(Function::const_aiterator I = M->abegin(), E = M->aend(); I != E; ++I)
- insertValue(I);
+ getOrCreateSlot(I);
// Iterate over all of the instructions in the function, looking for constant
// values that are referenced. Add these to the value pools before any
@@ -147,7 +147,7 @@ void SlotCalculator::incorporateFunction(const Function *M) {
// Emit all of the constants that are being used by the instructions in the
// function...
for_each(constant_begin(M), constant_end(M),
- bind_obj(this, &SlotCalculator::insertValue));
+ bind_obj(this, &SlotCalculator::getOrCreateSlot));
// If there is a symbol table, it is possible that the user has names for
// constants that are not being used. In this case, we will have problems
@@ -162,13 +162,13 @@ void SlotCalculator::incorporateFunction(const Function *M) {
// Iterate over basic blocks, adding them to the value table...
for (Function::const_iterator I = M->begin(), E = M->end(); I != E; ++I)
- insertValue(I);
+ getOrCreateSlot(I);
SC_DEBUG("Inserting Instructions:\n");
// Add all of the instructions to the type planes...
for_each(inst_begin(M), inst_end(M),
- bind_obj(this, &SlotCalculator::insertValue));
+ bind_obj(this, &SlotCalculator::getOrCreateSlot));
if (!IgnoreNamedNodes) {
SC_DEBUG("Inserting SymbolTable values:\n");
@@ -219,7 +219,7 @@ void SlotCalculator::purgeFunction() {
SC_DEBUG("end purgeFunction!\n");
}
-int SlotCalculator::getValSlot(const Value *D) const {
+int SlotCalculator::getSlot(const Value *D) const {
std::map<const Value*, unsigned>::const_iterator I = NodeMap.find(D);
if (I == NodeMap.end()) return -1;
@@ -227,8 +227,8 @@ int SlotCalculator::getValSlot(const Value *D) const {
}
-int SlotCalculator::insertValue(const Value *V) {
- int SlotNo = getValSlot(V); // Check to see if it's already in!
+int SlotCalculator::getOrCreateSlot(const Value *V) {
+ int SlotNo = getSlot(V); // Check to see if it's already in!
if (SlotNo != -1) return SlotNo;
if (!isa<GlobalValue>(V))
@@ -238,16 +238,16 @@ int SlotCalculator::insertValue(const Value *V) {
//
for (User::const_op_iterator I = C->op_begin(), E = C->op_end();
I != E; ++I)
- insertValue(*I);
+ getOrCreateSlot(*I);
}
- return insertVal(V);
+ return insertValue(V);
}
-int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
+int SlotCalculator::insertValue(const Value *D, bool dontIgnore) {
assert(D && "Can't insert a null value!");
- assert(getValSlot(D) == -1 && "Value is already in the table!");
+ assert(getSlot(D) == -1 && "Value is already in the table!");
// If this node does not contribute to a plane, or if the node has a
// name and we don't want names, then ignore the silly node... Note that types
@@ -270,12 +270,9 @@ int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
//
// global { \2 * } { { \2 }* null }
//
- int ResultSlot;
- if ((ResultSlot = getValSlot(TheTy)) == -1) {
- ResultSlot = doInsertVal(TheTy);
- SC_DEBUG(" Inserted type: " << TheTy->getDescription() << " slot=" <<
- ResultSlot << "\n");
- }
+ int ResultSlot = doInsertValue(TheTy);
+ SC_DEBUG(" Inserted type: " << TheTy->getDescription() << " slot=" <<
+ ResultSlot << "\n");
// Loop over any contained types in the definition... in depth first order.
//
@@ -284,9 +281,9 @@ int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
if (*I != TheTy) {
// If we haven't seen this sub type before, add it to our type table!
const Type *SubTy = *I;
- if (getValSlot(SubTy) == -1) {
+ if (getSlot(SubTy) == -1) {
SC_DEBUG(" Inserting subtype: " << SubTy->getDescription() << "\n");
- int Slot = doInsertVal(SubTy);
+ int Slot = doInsertValue(SubTy);
SC_DEBUG(" Inserted subtype: " << SubTy->getDescription() <<
" slot=" << Slot << "\n");
}
@@ -295,13 +292,14 @@ int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
}
// Okay, everything is happy, actually insert the silly value now...
- return doInsertVal(D);
+ return doInsertValue(D);
}
-// doInsertVal - This is a small helper function to be called only be insertVal.
+// doInsertValue - This is a small helper function to be called only
+// be insertValue.
//
-int SlotCalculator::doInsertVal(const Value *D) {
+int SlotCalculator::doInsertValue(const Value *D) {
const Type *Typ = D->getType();
unsigned Ty;
@@ -310,10 +308,10 @@ int SlotCalculator::doInsertVal(const Value *D) {
// cerr << "Inserting type '" << cast<Type>(D)->getDescription() << "'!\n";
if (Typ->isDerivedType()) {
- int ValSlot = getValSlot(Typ);
+ int ValSlot = getSlot(Typ);
if (ValSlot == -1) { // Have we already entered this type?
// Nope, this is the first we have seen the type, process it.
- ValSlot = insertVal(Typ, true);
+ ValSlot = insertValue(Typ, true);
assert(ValSlot != -1 && "ProcessType returned -1 for a type?");
}
Ty = (unsigned)ValSlot;