From 47f9a49560cbf629ff36f3efb591d70b29471320 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 18 May 2010 12:15:34 +0000 Subject: [PATCH] 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 --- lib/MC/MCContext.cpp | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 5cc72e8e9f5..53ffc9409a6 100644 --- a/lib/MC/MCContext.cpp +++ b/lib/MC/MCContext.cpp @@ -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) { -- 2.34.1