mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 00:25:12 +00:00
LibJS/Bytecode: Add codegen for ImportCall
Also moved most of the AST ImportCall::execute() into a helper so we can share the code.
This commit is contained in:
@@ -2725,4 +2725,22 @@ Bytecode::CodeGenerationErrorOr<void> OptionalChain::generate_bytecode(Bytecode:
|
||||
return generate_optional_chain(generator, *this, current_value_register, current_base_register);
|
||||
}
|
||||
|
||||
Bytecode::CodeGenerationErrorOr<void> ImportCall::generate_bytecode(Bytecode::Generator& generator) const
|
||||
{
|
||||
TRY(m_specifier->generate_bytecode(generator));
|
||||
auto specifier_reg = generator.allocate_register();
|
||||
generator.emit<Bytecode::Op::Store>(specifier_reg);
|
||||
|
||||
if (m_options) {
|
||||
TRY(m_options->generate_bytecode(generator));
|
||||
} else {
|
||||
generator.emit<Bytecode::Op::LoadImmediate>(js_undefined());
|
||||
}
|
||||
auto options_reg = generator.allocate_register();
|
||||
generator.emit<Bytecode::Op::Store>(options_reg);
|
||||
|
||||
generator.emit<Bytecode::Op::ImportCall>(specifier_reg, options_reg);
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user