Simplify MCContext::(Next|Get)Instance

- Allocate MCLabels in the context so they don't leak.
- Avoid duplicated densemap lookup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104020 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer 2010-05-18 12:15:34 +00:00
parent 853197557c
commit 47f9a49560

View File

@ -73,33 +73,17 @@ MCSymbol *MCContext::CreateTempSymbol() {
}
unsigned MCContext::NextInstance(int64_t LocalLabelVal) {
unsigned Instance;
MCLabel *Label;
Label = Instances[LocalLabelVal];
if (Label) {
Instance = Label->incInstance();
}
else {
Instance = 1;
Label = new MCLabel(Instance);
Instances[LocalLabelVal] = Label;
}
return Instance;
MCLabel *&Label = Instances[LocalLabelVal];
if (!Label)
Label = new (*this) MCLabel(0);
return Label->incInstance();
}
unsigned MCContext::GetInstance(int64_t LocalLabelVal) {
int Instance;
MCLabel *Label;
Label = Instances[LocalLabelVal];
if (Label) {
Instance = Label->getInstance();
}
else {
Instance = 0;
Label = new MCLabel(Instance);
Instances[LocalLabelVal] = Label;
}
return Instance;
MCLabel *&Label = Instances[LocalLabelVal];
if (!Label)
Label = new (*this) MCLabel(0);
return Label->getInstance();
}
MCSymbol *MCContext::CreateDirectionalLocalSymbol(int64_t LocalLabelVal) {