Simplify MCContext::(Next|Get)Instance

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

llvm-svn: 104020
This commit is contained in:
Benjamin Kramer 2010-05-18 12:15:34 +00:00
parent 0e704f7fcd
commit ab7be75e3f
1 changed files with 8 additions and 24 deletions

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) {