mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 15:27:35 +00:00
LibJS/JIT: Support the EnterObjectEnvironment bytecode instruction
We can now use `with` statements in jitted code. :^)
This commit is contained in:
parent
cfdb8a2756
commit
cb7169d73f
4 changed files with 26 additions and 5 deletions
|
@ -1988,6 +1988,20 @@ void Compiler::compile_leave_lexical_environment(Bytecode::Op::LeaveLexicalEnvir
|
|||
native_call((void*)cxx_leave_lexical_environment);
|
||||
}
|
||||
|
||||
static Value cxx_enter_object_environment(VM& vm, Value value)
|
||||
{
|
||||
auto object = TRY_OR_SET_EXCEPTION(value.to_object(vm));
|
||||
vm.bytecode_interpreter().enter_object_environment(*object);
|
||||
return {};
|
||||
}
|
||||
|
||||
void Compiler::compile_enter_object_environment(Bytecode::Op::EnterObjectEnvironment const&)
|
||||
{
|
||||
load_accumulator(ARG1);
|
||||
native_call((void*)cxx_enter_object_environment);
|
||||
check_exception();
|
||||
}
|
||||
|
||||
static Value cxx_concat_string(VM& vm, Value lhs, Value rhs)
|
||||
{
|
||||
auto string = TRY_OR_SET_EXCEPTION(rhs.to_primitive_string(vm));
|
||||
|
|
|
@ -86,6 +86,7 @@ private:
|
|||
O(Catch, catch) \
|
||||
O(CreateLexicalEnvironment, create_lexical_environment) \
|
||||
O(LeaveLexicalEnvironment, leave_lexical_environment) \
|
||||
O(EnterObjectEnvironment, enter_object_environment) \
|
||||
O(ToNumeric, to_numeric) \
|
||||
O(ResolveThisBinding, resolve_this_binding) \
|
||||
O(Return, return) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue