diff options
Diffstat (limited to 'lib/MC/MCDisassembler')
-rw-r--r-- | lib/MC/MCDisassembler/EDDisassembler.cpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/lib/MC/MCDisassembler/EDDisassembler.cpp b/lib/MC/MCDisassembler/EDDisassembler.cpp index 9edf505..ea77902 100644 --- a/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/lib/MC/MCDisassembler/EDDisassembler.cpp @@ -104,27 +104,22 @@ EDDisassembler *EDDisassembler::getDisassembler(StringRef str, CPUKey key; key.Triple = str.str(); key.Syntax = syntax; - + EDDisassembler::DisassemblerMap_t::iterator i = sDisassemblers.find(key); - + if (i != sDisassemblers.end()) { return i->second; } - else { - EDDisassembler *sdd = new EDDisassembler(key); - if (!sdd->valid()) { - delete sdd; - return NULL; - } - - sDisassemblers[key] = sdd; - - return sdd; + + EDDisassembler *sdd = new EDDisassembler(key); + if (!sdd->valid()) { + delete sdd; + return NULL; } - - return NULL; - - return getDisassembler(Triple(str).getArch(), syntax); + + sDisassemblers[key] = sdd; + + return sdd; } EDDisassembler::EDDisassembler(CPUKey &key) : |