mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:58:11 +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:
parent
8d3f92c844
commit
7a742b17da
8 changed files with 33 additions and 28 deletions
|
@ -24,17 +24,17 @@
|
|||
|
||||
#define EXPECT_NO_EXCEPTION(executable) \
|
||||
auto executable = JS::Bytecode::Generator::generate(program); \
|
||||
auto result = bytecode_interpreter.run(executable); \
|
||||
auto result = bytecode_interpreter.run(*executable); \
|
||||
EXPECT(!result.is_error()); \
|
||||
EXPECT(!vm->exception());
|
||||
|
||||
#define EXPECT_NO_EXCEPTION_WITH_OPTIMIZATIONS(executable) \
|
||||
auto& passes = JS::Bytecode::Interpreter::optimization_pipeline(); \
|
||||
passes.perform(executable); \
|
||||
\
|
||||
auto result_with_optimizations = bytecode_interpreter.run(executable); \
|
||||
\
|
||||
EXPECT(!result_with_optimizations.is_error()); \
|
||||
#define EXPECT_NO_EXCEPTION_WITH_OPTIMIZATIONS(executable) \
|
||||
auto& passes = JS::Bytecode::Interpreter::optimization_pipeline(); \
|
||||
passes.perform(*executable); \
|
||||
\
|
||||
auto result_with_optimizations = bytecode_interpreter.run(*executable); \
|
||||
\
|
||||
EXPECT(!result_with_optimizations.is_error()); \
|
||||
EXPECT(!vm->exception())
|
||||
|
||||
#define EXPECT_NO_EXCEPTION_ALL(source) \
|
||||
|
@ -57,7 +57,7 @@ TEST_CASE(if_statement_fail)
|
|||
SETUP_AND_PARSE("if (true) throw new Exception('failed');");
|
||||
|
||||
auto executable = JS::Bytecode::Generator::generate(program);
|
||||
auto result = bytecode_interpreter.run(executable);
|
||||
auto result = bytecode_interpreter.run(*executable);
|
||||
EXPECT(result.is_error());
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ TEST_CASE(loading_multiple_files)
|
|||
auto const& test_file_program = test_file_script->parse_node();
|
||||
|
||||
auto executable = JS::Bytecode::Generator::generate(test_file_program);
|
||||
auto result = bytecode_interpreter.run(executable);
|
||||
auto result = bytecode_interpreter.run(*executable);
|
||||
EXPECT(!result.is_error());
|
||||
EXPECT(!vm->exception());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue