1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:37:34 +00:00

LibJS: Store ECMAScriptFunctionObject bytecode in an OwnPtr

Using an Optional was extremely wasteful for function objects that don't
even have a bytecode executable.

This allows ECMAScriptFunctionObject to fit in a smaller size class.
This commit is contained in:
Andreas Kling 2022-01-31 13:25:39 +01:00
parent 8d3f92c844
commit 7a742b17da
8 changed files with 33 additions and 28 deletions

View file

@ -1028,19 +1028,19 @@ static bool parse_and_run(JS::Interpreter& interpreter, StringView source, Strin
if (JS::Bytecode::g_dump_bytecode || s_run_bytecode) {
auto executable = JS::Bytecode::Generator::generate(script_or_module->parse_node());
executable.name = source_name;
executable->name = source_name;
if (s_opt_bytecode) {
auto& passes = JS::Bytecode::Interpreter::optimization_pipeline();
passes.perform(executable);
passes.perform(*executable);
dbgln("Optimisation passes took {}us", passes.elapsed());
}
if (JS::Bytecode::g_dump_bytecode)
executable.dump();
executable->dump();
if (s_run_bytecode) {
JS::Bytecode::Interpreter bytecode_interpreter(interpreter.global_object(), interpreter.realm());
result = bytecode_interpreter.run(executable);
result = bytecode_interpreter.run(*executable);
} else {
return ReturnEarly::Yes;
}