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

LibJS/JIT: Add fastpath for set variable

This commit is contained in:
Stephan Vedder 2023-11-16 07:13:35 +01:00 committed by Andreas Kling
parent b3cbe0fdb9
commit 84eecbb10e
8 changed files with 148 additions and 12 deletions

View file

@ -264,10 +264,13 @@ ThrowCompletionOr<void> set_variable(
DeprecatedFlyString const& name,
Value value,
Op::EnvironmentMode mode,
Op::SetVariable::InitializationMode initialization_mode)
Op::SetVariable::InitializationMode initialization_mode,
EnvironmentVariableCache& cache)
{
auto environment = mode == Op::EnvironmentMode::Lexical ? vm.running_execution_context().lexical_environment : vm.running_execution_context().variable_environment;
auto reference = TRY(vm.resolve_binding(name, environment));
if (reference.environment_coordinate().has_value())
cache = reference.environment_coordinate();
switch (initialization_mode) {
case Op::SetVariable::InitializationMode::Initialize:
TRY(reference.initialize_referenced_binding(vm, value));