- Eliminated the deferred symbol table stuff in Module & Function, it really
wasn't an optimization and it was causing lots of bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4779 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 0f9889c..1444501 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -338,7 +338,7 @@
case BytecodeFormat::SymbolTable:
BCR_TRACE(2, "BLOCK BytecodeFormat::SymbolTable: {\n");
- if (ParseSymbolTable(Buf, Buf+Size, M->getSymbolTableSure())) {
+ if (ParseSymbolTable(Buf, Buf+Size, &M->getSymbolTable())) {
delete M; return true;
}
break;
@@ -543,7 +543,7 @@
case BytecodeFormat::SymbolTable:
BCR_TRACE(1, "BLOCK BytecodeFormat::SymbolTable: {\n");
- if (ParseSymbolTable(Buf, Buf+Size, Mod->getSymbolTableSure())) {
+ if (ParseSymbolTable(Buf, Buf+Size, &Mod->getSymbolTable())) {
delete Mod; return true;
}
break;
diff --git a/lib/Bytecode/Writer/SlotCalculator.cpp b/lib/Bytecode/Writer/SlotCalculator.cpp
index ca74711..5f6f2e7 100644
--- a/lib/Bytecode/Writer/SlotCalculator.cpp
+++ b/lib/Bytecode/Writer/SlotCalculator.cpp
@@ -90,9 +90,9 @@
// Insert constants that are named at module level into the slot pool so that
// the module symbol table can refer to them...
//
- if (TheModule->hasSymbolTable() && !IgnoreNamedNodes) {
+ if (!IgnoreNamedNodes) {
SC_DEBUG("Inserting SymbolTable values:\n");
- processSymbolTable(TheModule->getSymbolTable());
+ processSymbolTable(&TheModule->getSymbolTable());
}
SC_DEBUG("end processModule!\n");
@@ -156,8 +156,7 @@
// symboltable references to constants not in the output. Scan for these
// constants now.
//
- if (M->hasSymbolTable())
- processSymbolTableConstants(M->getSymbolTable());
+ processSymbolTableConstants(&M->getSymbolTable());
}
SC_DEBUG("Inserting Labels:\n");
@@ -174,9 +173,9 @@
for_each(inst_begin(M), inst_end(M),
bind_obj(this, &SlotCalculator::insertValue));
- if (M->hasSymbolTable() && !IgnoreNamedNodes) {
+ if (!IgnoreNamedNodes) {
SC_DEBUG("Inserting SymbolTable values:\n");
- processSymbolTable(M->getSymbolTable());
+ processSymbolTable(&M->getSymbolTable());
}
SC_DEBUG("end processFunction!\n");
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index e85498c..92b6a62 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -58,8 +58,7 @@
processMethod(I);
// If needed, output the symbol table for the module...
- if (M->hasSymbolTable())
- outputSymbolTable(*M->getSymbolTable());
+ outputSymbolTable(M->getSymbolTable());
}
// Helper function for outputConstants().
@@ -187,8 +186,7 @@
processBasicBlock(*I);
// If needed, output the symbol table for the function...
- if (F->hasSymbolTable())
- outputSymbolTable(*F->getSymbolTable());
+ outputSymbolTable(F->getSymbolTable());
Table.purgeFunction();
}