1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:48:12 +00:00

LibJS: Generate bytecode for array expressions

This commit is contained in:
Gunnar Beutner 2021-06-08 23:06:52 +02:00 committed by Andreas Kling
parent b8a5ea1f8d
commit a1e5711a27
6 changed files with 71 additions and 0 deletions

View file

@ -342,6 +342,26 @@ void ObjectExpression::generate_bytecode(Bytecode::Generator& generator) const
TODO();
}
void ArrayExpression::generate_bytecode(Bytecode::Generator& generator) const
{
Vector<Bytecode::Register> element_regs;
for (auto& element : m_elements) {
generator.emit<Bytecode::Op::LoadImmediate>(Value {});
if (element) {
element->generate_bytecode(generator);
if (is<SpreadExpression>(*element)) {
TODO();
continue;
}
}
auto element_reg = generator.allocate_register();
generator.emit<Bytecode::Op::Store>(element_reg);
element_regs.append(element_reg);
}
generator.emit_with_extra_register_slots<Bytecode::Op::NewArray>(element_regs.size(), element_regs);
}
void MemberExpression::generate_bytecode(Bytecode::Generator& generator) const
{
object().generate_bytecode(generator);