1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:47:34 +00:00

LibJS/JIT: Compile the IteratorToArray instruction

This commit is contained in:
Simon Wanner 2023-10-29 17:10:14 +01:00 committed by Andreas Kling
parent 5179ff5fc9
commit 3dc5c8d28e
2 changed files with 15 additions and 1 deletions

View file

@ -1306,6 +1306,19 @@ void Compiler::compile_iterator_close(Bytecode::Op::IteratorClose const& op)
check_exception();
}
static Value iterator_to_array(VM& vm, Value iterator)
{
return TRY_OR_SET_EXCEPTION(Bytecode::iterator_to_array(vm, iterator));
}
void Compiler::compile_iterator_to_array(Bytecode::Op::IteratorToArray const&)
{
load_vm_register(ARG1, Bytecode::Register::accumulator());
native_call((void*)iterator_to_array);
store_vm_register(Bytecode::Register::accumulator(), RET);
check_exception();
}
void Compiler::jump_to_exit()
{
m_assembler.jump(m_exit_label);

View file

@ -112,7 +112,8 @@ private:
O(ThrowIfNotObject, throw_if_not_object) \
O(ThrowIfNullish, throw_if_nullish) \
O(IteratorResultValue, iterator_result_value) \
O(IteratorClose, iterator_close)
O(IteratorClose, iterator_close) \
O(IteratorToArray, iterator_to_array)
# define DECLARE_COMPILE_OP(OpTitleCase, op_snake_case) \
void compile_##op_snake_case(Bytecode::Op::OpTitleCase const&);