diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-05-27 17:51:00 -0300 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-22 21:51:34 -0400 |
commit | b7764c3a796e53ac74009bc7d7cd153c64b6d743 (patch) | |
tree | 592a8be7cd43349cbabfc3d84693b443ddc0b5d8 /src/shader_recompiler/frontend/maxwell/translate | |
parent | 83db7abae6550f89ba907789efdf818d93be1b5d (diff) |
shader: Handle host exceptions
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell/translate')
-rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/translate.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/translate.cpp b/src/shader_recompiler/frontend/maxwell/translate/translate.cpp index 0f4e7a251a..8e3c4c5d5c 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/translate.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/translate.cpp @@ -30,16 +30,21 @@ void Translate(Environment& env, IR::Block* block, u32 location_begin, u32 locat TranslatorVisitor visitor{env, *block}; for (Location pc = location_begin; pc != location_end; ++pc) { const u64 insn{env.ReadInstruction(pc.Offset())}; - const Opcode opcode{Decode(insn)}; - switch (opcode) { + try { + const Opcode opcode{Decode(insn)}; + switch (opcode) { #define INST(name, cute, mask) \ case Opcode::name: \ Invoke<&TranslatorVisitor::name>(visitor, pc, insn); \ break; #include "shader_recompiler/frontend/maxwell/maxwell.inc" #undef OPCODE - default: - throw LogicError("Invalid opcode {}", opcode); + default: + throw LogicError("Invalid opcode {}", opcode); + } + } catch (Exception& exception) { + exception.Prepend(fmt::format("Translate {}: ", Decode(insn))); + throw; } } } |