Chromium Code Reviews| Index: courgette/program_detector.cc |
| diff --git a/courgette/program_detector.cc b/courgette/program_detector.cc |
| index 60b295fef7a82825c7e2f097c22c9fd55b87446c..e659522265b18728365a71e253eb1ed02bbc4368 100644 |
| --- a/courgette/program_detector.cc |
| +++ b/courgette/program_detector.cc |
| @@ -23,22 +23,26 @@ std::unique_ptr<Disassembler> DetectDisassembler(const void* buffer, |
| size_t length) { |
| std::unique_ptr<Disassembler> disassembler; |
| - disassembler.reset(new DisassemblerWin32X86(buffer, length)); |
| - if (disassembler->ParseHeader()) |
| - return disassembler; |
| - |
| - disassembler.reset(new DisassemblerWin32X64(buffer, length)); |
| - if (disassembler->ParseHeader()) |
| - return disassembler; |
| - |
| - disassembler.reset(new DisassemblerElf32X86(buffer, length)); |
| - if (disassembler->ParseHeader()) |
| - return disassembler; |
| - |
| - disassembler.reset(new DisassemblerElf32ARM(buffer, length)); |
| - if (disassembler->ParseHeader()) |
| - return disassembler; |
| - |
| + if (DisassemblerWin32X86::QuickDetects(buffer, length)) { |
|
huangs
2016/06/10 21:10:22
NIT: Rename to QuickDetect() (verb).
etiennep
2016/06/13 17:50:22
Done.
|
| + disassembler.reset(new DisassemblerWin32X86(buffer, length)); |
| + if (disassembler->ParseHeader()) |
| + return disassembler; |
| + } |
| + if (DisassemblerWin32X64::QuickDetects(buffer, length)) { |
| + disassembler.reset(new DisassemblerWin32X64(buffer, length)); |
| + if (disassembler->ParseHeader()) |
| + return disassembler; |
| + } |
| + if (DisassemblerElf32X86::QuickDetects(buffer, length)) { |
| + disassembler.reset(new DisassemblerElf32X86(buffer, length)); |
| + if (disassembler->ParseHeader()) |
| + return disassembler; |
| + } |
| + if (DisassemblerElf32ARM::QuickDetects(buffer, length)) { |
| + disassembler.reset(new DisassemblerElf32ARM(buffer, length)); |
| + if (disassembler->ParseHeader()) |
| + return disassembler; |
| + } |
| return nullptr; |
| } |