1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:58:11 +00:00

LibJS: Add LoadArgument bytecode instruction for fast argument access

This is generated for Identifier nodes that represent a function
argument variable. It loads a given argument index from the current
call frame into the accumulator.
This commit is contained in:
Andreas Kling 2021-06-14 09:37:35 +02:00
parent 848944113c
commit 91fbeeab72
4 changed files with 31 additions and 1 deletions

View file

@ -260,7 +260,10 @@ void StringLiteral::generate_bytecode(Bytecode::Generator& generator) const
void Identifier::generate_bytecode(Bytecode::Generator& generator) const
{
generator.emit<Bytecode::Op::GetVariable>(generator.intern_string(m_string));
if (m_argument_index.has_value())
generator.emit<Bytecode::Op::LoadArgument>(m_argument_index.value());
else
generator.emit<Bytecode::Op::GetVariable>(generator.intern_string(m_string));
}
void AssignmentExpression::generate_bytecode(Bytecode::Generator& generator) const