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:
parent
b8a5ea1f8d
commit
a1e5711a27
6 changed files with 71 additions and 0 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue