mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Avoid calling getTypeSlot more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1825009ba8
commit
f0d9273af7
@ -350,7 +350,7 @@ void BytecodeParser::ParseConstantPool(const unsigned char *&Buf,
|
||||
Constant *C = parseConstantValue(Buf, EndBuf, Ty);
|
||||
assert(C && "parseConstantValue returned NULL!");
|
||||
BCR_TRACE(4, "Read Constant: '" << *C << "'\n");
|
||||
unsigned Slot = insertValue(C, Tab);
|
||||
unsigned Slot = insertValue(C, Typ, Tab);
|
||||
|
||||
// If we are reading a function constant table, make sure that we adjust
|
||||
// the slot number to be the real global constant number.
|
||||
|
@ -75,11 +75,15 @@ const Type *BytecodeParser::getType(unsigned ID) {
|
||||
}
|
||||
|
||||
unsigned BytecodeParser::insertValue(Value *Val, ValueTable &ValueTab) {
|
||||
return insertValue(Val, getTypeSlot(Val->getType()), ValueTab);
|
||||
}
|
||||
|
||||
unsigned BytecodeParser::insertValue(Value *Val, unsigned type,
|
||||
ValueTable &ValueTab) {
|
||||
assert((!HasImplicitZeroInitializer || !isa<Constant>(Val) ||
|
||||
Val->getType()->isPrimitiveType() ||
|
||||
!cast<Constant>(Val)->isNullValue()) &&
|
||||
"Cannot read null values from bytecode!");
|
||||
unsigned type = getTypeSlot(Val->getType());
|
||||
assert(type != Type::TypeTyID && "Types should never be insertValue'd!");
|
||||
|
||||
if (ValueTab.size() <= type) {
|
||||
@ -452,7 +456,7 @@ void BytecodeParser::ParseModuleGlobalInfo(const unsigned char *&Buf,
|
||||
GlobalVariable *GV = new GlobalVariable(ElTy, VarType & 1, Linkage,
|
||||
0, "", TheModule);
|
||||
BCR_TRACE(2, "Global Variable of type: " << *Ty << "\n");
|
||||
ResolveReferencesToValue(GV, insertValue(GV, ModuleValues));
|
||||
ResolveReferencesToValue(GV, insertValue(GV, SlotNo, ModuleValues));
|
||||
|
||||
if (VarType & 2) { // Does it have an initializer?
|
||||
unsigned InitSlot;
|
||||
@ -483,7 +487,7 @@ void BytecodeParser::ParseModuleGlobalInfo(const unsigned char *&Buf,
|
||||
// Insert the placeholder...
|
||||
Function *Func = new Function(cast<FunctionType>(Ty),
|
||||
GlobalValue::InternalLinkage, "", TheModule);
|
||||
unsigned DestSlot = insertValue(Func, ModuleValues);
|
||||
unsigned DestSlot = insertValue(Func, FnSignature, ModuleValues);
|
||||
ResolveReferencesToValue(Func, DestSlot);
|
||||
|
||||
// Keep track of this information in a list that is emptied as functions are
|
||||
|
@ -170,6 +170,7 @@ private:
|
||||
Constant *getConstantValue(const Type *Ty, unsigned num);
|
||||
|
||||
unsigned insertValue(Value *V, ValueTable &Table);
|
||||
unsigned insertValue(Value *V, unsigned Type, ValueTable &Table);
|
||||
|
||||
unsigned getTypeSlot(const Type *Ty);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user