mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
Use uniqued StringInit pointers for lookups.
This avoids a gazillion StringMap and dynamic_cast calls, making TableGen run 3x faster. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148091 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -757,7 +757,7 @@ class StringInit : public TypedInit {
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
static StringInit *get(const std::string &V);
|
||||
static StringInit *get(StringRef);
|
||||
|
||||
const std::string &getValue() const { return Value; }
|
||||
|
||||
@@ -800,7 +800,7 @@ class CodeInit : public Init {
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
static CodeInit *get(const std::string &V);
|
||||
static CodeInit *get(StringRef);
|
||||
|
||||
const std::string &getValue() const { return Value; }
|
||||
|
||||
@@ -1454,20 +1454,23 @@ public:
|
||||
return isTemplateArg(StringInit::get(Name.str()));
|
||||
}
|
||||
|
||||
const RecordVal *getValue(StringRef Name) const {
|
||||
const RecordVal *getValue(const Init *Name) const {
|
||||
for (unsigned i = 0, e = Values.size(); i != e; ++i)
|
||||
if (Values[i].getName() == Name) return &Values[i];
|
||||
if (Values[i].getNameInit() == Name) return &Values[i];
|
||||
return 0;
|
||||
}
|
||||
const RecordVal *getValue(StringRef Name) const {
|
||||
return getValue(StringInit::get(Name));
|
||||
}
|
||||
RecordVal *getValue(const Init *Name) {
|
||||
for (unsigned i = 0, e = Values.size(); i != e; ++i)
|
||||
if (Values[i].getNameInit() == Name) return &Values[i];
|
||||
return 0;
|
||||
}
|
||||
RecordVal *getValue(StringRef Name) {
|
||||
for (unsigned i = 0, e = Values.size(); i != e; ++i)
|
||||
if (Values[i].getName() == Name) return &Values[i];
|
||||
return 0;
|
||||
return getValue(StringInit::get(Name));
|
||||
}
|
||||
|
||||
const RecordVal *getValue(Init *Name) const;
|
||||
RecordVal *getValue(Init *Name);
|
||||
|
||||
void addTemplateArg(Init *Name) {
|
||||
assert(!isTemplateArg(Name) && "Template arg already defined!");
|
||||
TemplateArgs.push_back(Name);
|
||||
@@ -1477,7 +1480,7 @@ public:
|
||||
}
|
||||
|
||||
void addValue(const RecordVal &RV) {
|
||||
assert(getValue(RV.getName()) == 0 && "Value already added!");
|
||||
assert(getValue(RV.getNameInit()) == 0 && "Value already added!");
|
||||
Values.push_back(RV);
|
||||
if (Values.size() > 1)
|
||||
// Keep NAME at the end of the list. It makes record dumps a
|
||||
|
||||
Reference in New Issue
Block a user