mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:07:46 +00:00
LibJS: Don't generate bytecode after we've encountered a parser error
This commit is contained in:
parent
319a60043b
commit
3a8f913eee
1 changed files with 20 additions and 20 deletions
|
@ -512,25 +512,6 @@ static bool parse_and_run(JS::Interpreter& interpreter, const StringView& source
|
|||
if (s_dump_ast)
|
||||
program->dump(0);
|
||||
|
||||
if (s_dump_bytecode || s_run_bytecode) {
|
||||
auto unit = JS::Bytecode::Generator::generate(*program);
|
||||
if (s_dump_bytecode) {
|
||||
for (auto& block : unit.basic_blocks)
|
||||
block.dump(unit);
|
||||
if (!unit.string_table->is_empty()) {
|
||||
outln();
|
||||
unit.string_table->dump();
|
||||
}
|
||||
}
|
||||
|
||||
if (s_run_bytecode) {
|
||||
JS::Bytecode::Interpreter bytecode_interpreter(interpreter.global_object());
|
||||
bytecode_interpreter.run(unit);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (parser.has_errors()) {
|
||||
auto error = parser.errors()[0];
|
||||
auto hint = error.source_location_hint(source);
|
||||
|
@ -538,7 +519,26 @@ static bool parse_and_run(JS::Interpreter& interpreter, const StringView& source
|
|||
outln("{}", hint);
|
||||
vm->throw_exception<JS::SyntaxError>(interpreter.global_object(), error.to_string());
|
||||
} else {
|
||||
interpreter.run(interpreter.global_object(), *program);
|
||||
if (s_dump_bytecode || s_run_bytecode) {
|
||||
auto unit = JS::Bytecode::Generator::generate(*program);
|
||||
if (s_dump_bytecode) {
|
||||
for (auto& block : unit.basic_blocks)
|
||||
block.dump(unit);
|
||||
if (!unit.string_table->is_empty()) {
|
||||
outln();
|
||||
unit.string_table->dump();
|
||||
}
|
||||
}
|
||||
|
||||
if (s_run_bytecode) {
|
||||
JS::Bytecode::Interpreter bytecode_interpreter(interpreter.global_object());
|
||||
bytecode_interpreter.run(unit);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
interpreter.run(interpreter.global_object(), *program);
|
||||
}
|
||||
}
|
||||
|
||||
auto handle_exception = [&] {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue