1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:38:11 +00:00

LibJS + js: Rethrow exception on the vm after bytecode interpreter run

When the bytecode interpreter was converted to ThrowCompletionOr<Value>
it then also cleared the vm.exception() making it seem like no exception
was thrown.
Also removed the TRY_OR_DISCARD as that would skip the error handling
parts.
This commit is contained in:
davidot 2021-11-17 13:00:38 +01:00 committed by Linus Groh
parent 3666d2132b
commit 22e679d844
2 changed files with 9 additions and 2 deletions

View file

@ -837,7 +837,10 @@ static bool parse_and_run(JS::Interpreter& interpreter, StringView source, Strin
if (s_run_bytecode) {
JS::Bytecode::Interpreter bytecode_interpreter(interpreter.global_object(), interpreter.realm());
TRY_OR_DISCARD(bytecode_interpreter.run(executable));
auto result = bytecode_interpreter.run(executable);
// Since all the error handling code uses vm.exception() we just rethrow any exception we got here.
if (result.is_error())
vm->throw_exception(interpreter.global_object(), result.throw_completion().value());
} else {
return true;
}