Simplify MCContext::(Next|Get)Instance
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 18 May 2010 12:15:34 +0000 (12:15 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 18 May 2010 12:15:34 +0000 (12:15 +0000)
- 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

lib/MC/MCContext.cpp

index 5cc72e8e9f555162763198f37c20b48cc1d3d4bd..53ffc9409a6459e242bbf634a539a2a689c1f079 100644 (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) {