diff --git a/include/v8-internal.h b/include/v8-internal.h index 29f391b673..ee3633826e 100644 --- a/include/v8-internal.h +++ b/include/v8-internal.h @@ -146,7 +146,7 @@ class Internals { static const int kFixedArrayHeaderSize = 2 * kApiTaggedSize; static const int kEmbedderDataArrayHeaderSize = 2 * kApiTaggedSize; static const int kEmbedderDataSlotSize = kApiSystemPointerSize; - static const int kNativeContextEmbedderDataOffset = 7 * kApiTaggedSize; + static const int kNativeContextEmbedderDataOffset = 6 * kApiTaggedSize; static const int kFullStringRepresentationMask = 0x0f; static const int kStringEncodingMask = 0x8; static const int kExternalTwoByteRepresentationTag = 0x02; diff --git a/src/builtins/base.tq b/src/builtins/base.tq index 065cd08e4c..7f3dfc94be 100644 --- a/src/builtins/base.tq +++ b/src/builtins/base.tq @@ -117,7 +117,6 @@ extern class Context extends HeapObject { scope_info: ScopeInfo; previous: Object; extension: Object; - native_context: Object; } extern class AwaitContext extends Context generates 'TNode'; extern class BlockContext extends Context generates 'TNode'; @@ -303,7 +302,7 @@ extern class Map extends HeapObject { @ifnot(TAGGED_SIZE_8_BYTES) optional_padding: void; prototype: HeapObject; - constructor_or_back_pointer: Object; + constructor_or_back_pointer_or_native_context: Object; instance_descriptors: DescriptorArray; @if(V8_DOUBLE_FIELDS_UNBOXING) layout_descriptor: LayoutDescriptor; @ifnot(V8_DOUBLE_FIELDS_UNBOXING) layout_descriptor: void; diff --git a/src/builtins/builtins-async-gen.cc b/src/builtins/builtins-async-gen.cc index edcb027226..7db2f1d1ce 100644 --- a/src/builtins/builtins-async-gen.cc +++ b/src/builtins/builtins-async-gen.cc @@ -45,7 +45,9 @@ TNode AsyncBuiltinsAssembler::AwaitOld( TNode closure_context = UncheckedCast(base); { // Initialize the await context, storing the {generator} as extension. - StoreMapNoWriteBarrier(closure_context, RootIndex::kAwaitContextMap); + TNode map = CAST( + LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX)); + StoreMapNoWriteBarrier(closure_context, map); StoreObjectFieldNoWriteBarrier(closure_context, Context::kLengthOffset, SmiConstant(Context::MIN_CONTEXT_SLOTS)); TNode const empty_scope_info = @@ -56,8 +58,6 @@ TNode AsyncBuiltinsAssembler::AwaitOld( native_context); StoreContextElementNoWriteBarrier(closure_context, Context::EXTENSION_INDEX, generator); - StoreContextElementNoWriteBarrier( - closure_context, Context::NATIVE_CONTEXT_INDEX, native_context); } // Let promiseCapability be ! NewPromiseCapability(%Promise%). @@ -138,7 +138,9 @@ TNode AsyncBuiltinsAssembler::AwaitOptimized( TNode closure_context = UncheckedCast(base); { // Initialize the await context, storing the {generator} as extension. - StoreMapNoWriteBarrier(closure_context, RootIndex::kAwaitContextMap); + TNode map = CAST( + LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX)); + StoreMapNoWriteBarrier(closure_context, map); StoreObjectFieldNoWriteBarrier(closure_context, Context::kLengthOffset, SmiConstant(Context::MIN_CONTEXT_SLOTS)); TNode const empty_scope_info = @@ -149,8 +151,6 @@ TNode AsyncBuiltinsAssembler::AwaitOptimized( native_context); StoreContextElementNoWriteBarrier(closure_context, Context::EXTENSION_INDEX, generator); - StoreContextElementNoWriteBarrier( - closure_context, Context::NATIVE_CONTEXT_INDEX, native_context); } // Initialize resolve handler diff --git a/src/builtins/builtins-call-gen.cc b/src/builtins/builtins-call-gen.cc index fd1ad5bb67..a03059cfb6 100644 --- a/src/builtins/builtins-call-gen.cc +++ b/src/builtins/builtins-call-gen.cc @@ -412,8 +412,9 @@ TNode CallOrConstructBuiltinsAssembler::GetCompatibleReceiver( // {var_template} variable), and see if that is a HeapObject. // If it's a Smi then it is non-instance prototype on some // initial map, which cannot be the case for API instances. - TNode constructor = LoadObjectField( - var_template.value(), Map::kConstructorOrBackPointerOffset); + TNode constructor = + LoadObjectField(var_template.value(), + Map::kConstructorOrBackPointerOrNativeContextOffset); GotoIf(TaggedIsSmi(constructor), &holder_next); // Now there are three cases for {constructor} that we care diff --git a/src/builtins/builtins-constructor-gen.cc b/src/builtins/builtins-constructor-gen.cc index bc03e86f79..206fd0badd 100644 --- a/src/builtins/builtins-constructor-gen.cc +++ b/src/builtins/builtins-constructor-gen.cc @@ -196,8 +196,8 @@ TNode ConstructorBuiltinsAssembler::EmitFastNewObject( // Fall back to runtime if the target differs from the new target's // initial map constructor. - TNode new_target_constructor = - LoadObjectField(initial_map, Map::kConstructorOrBackPointerOffset); + TNode new_target_constructor = LoadObjectField( + initial_map, Map::kConstructorOrBackPointerOrNativeContextOffset); GotoIf(TaggedNotEqual(target, new_target_constructor), call_runtime); TVARIABLE(HeapObject, properties); @@ -230,19 +230,21 @@ TNode ConstructorBuiltinsAssembler::EmitFastNewFunctionContext( TNode function_context = UncheckedCast(AllocateInNewSpace(size)); - RootIndex context_type; + TNode native_context = LoadNativeContext(context); + Context::Field index; switch (scope_type) { case EVAL_SCOPE: - context_type = RootIndex::kEvalContextMap; + index = Context::EVAL_CONTEXT_MAP_INDEX; break; case FUNCTION_SCOPE: - context_type = RootIndex::kFunctionContextMap; + index = Context::FUNCTION_CONTEXT_MAP_INDEX; break; default: UNREACHABLE(); } + TNode map = CAST(LoadContextElement(native_context, index)); // Set up the header. - StoreMapNoWriteBarrier(function_context, context_type); + StoreMapNoWriteBarrier(function_context, map); TNode min_context_slots = IntPtrConstant(Context::MIN_CONTEXT_SLOTS); // TODO(ishell): for now, length also includes MIN_CONTEXT_SLOTS. TNode length = IntPtrAdd(slots_intptr, min_context_slots); @@ -254,9 +256,6 @@ TNode ConstructorBuiltinsAssembler::EmitFastNewFunctionContext( context); StoreObjectFieldNoWriteBarrier(function_context, Context::kExtensionOffset, TheHoleConstant()); - TNode native_context = LoadNativeContext(context); - StoreObjectFieldNoWriteBarrier(function_context, - Context::kNativeContextOffset, native_context); // Initialize the varrest of the slots to undefined. TNode undefined = UndefinedConstant(); diff --git a/src/builtins/builtins-proxy-gen.cc b/src/builtins/builtins-proxy-gen.cc index 71d4e8226f..429b7f747f 100644 --- a/src/builtins/builtins-proxy-gen.cc +++ b/src/builtins/builtins-proxy-gen.cc @@ -119,7 +119,9 @@ Node* ProxiesCodeStubAssembler::CreateProxyRevokeFunctionContext( Node* proxy, Node* native_context) { TNode const context = Allocate(FixedArray::SizeFor(kProxyContextLength)); - StoreMapNoWriteBarrier(context, RootIndex::kFunctionContextMap); + TNode map = CAST( + LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX)); + StoreMapNoWriteBarrier(context, map); InitializeFunctionContext(native_context, context, kProxyContextLength); StoreContextElementNoWriteBarrier(CAST(context), kProxySlot, proxy); return context; diff --git a/src/builtins/ia32/builtins-ia32.cc b/src/builtins/ia32/builtins-ia32.cc index 0885b6e633..8c747a9249 100644 --- a/src/builtins/ia32/builtins-ia32.cc +++ b/src/builtins/ia32/builtins-ia32.cc @@ -2354,7 +2354,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) { // Overwrite the original receiver with the (original) target. __ mov(Operand(esp, eax, times_system_pointer_size, kSystemPointerSize), edi); // Let the "call_as_function_delegate" take care of the rest. - __ LoadGlobalFunction(Context::CALL_AS_FUNCTION_DELEGATE_INDEX, edi); + __ LoadNativeContextSlot(edi, Context::CALL_AS_FUNCTION_DELEGATE_INDEX); __ Jump(masm->isolate()->builtins()->CallFunction( ConvertReceiverMode::kNotNullOrUndefined), RelocInfo::CODE_TARGET); @@ -2474,7 +2474,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) { __ mov(Operand(esp, eax, times_system_pointer_size, kSystemPointerSize), edi); // Let the "call_as_constructor_delegate" take care of the rest. - __ LoadGlobalFunction(Context::CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, edi); + __ LoadNativeContextSlot(edi, Context::CALL_AS_CONSTRUCTOR_DELEGATE_INDEX); __ Jump(masm->isolate()->builtins()->CallFunction(), RelocInfo::CODE_TARGET); } diff --git a/src/codegen/arm/macro-assembler-arm.cc b/src/codegen/arm/macro-assembler-arm.cc index 6f1adfead2..355d77ad82 100644 --- a/src/codegen/arm/macro-assembler-arm.cc +++ b/src/codegen/arm/macro-assembler-arm.cc @@ -1775,7 +1775,7 @@ void MacroAssembler::CompareObjectType(Register object, Register map, UseScratchRegisterScope temps(this); const Register temp = type_reg == no_reg ? temps.Acquire() : type_reg; - ldr(map, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(map, object); CompareInstanceType(map, temp, type); } @@ -2010,13 +2010,19 @@ void TurboAssembler::Abort(AbortReason reason) { // will not return here } +void MacroAssembler::LoadMap(Register destination, Register object) { + ldr(destination, FieldMemOperand(object, HeapObject::kMapOffset)); +} + void MacroAssembler::LoadGlobalProxy(Register dst) { LoadNativeContextSlot(Context::GLOBAL_PROXY_INDEX, dst); } void MacroAssembler::LoadNativeContextSlot(int index, Register dst) { - ldr(dst, NativeContextMemOperand()); - ldr(dst, ContextMemOperand(dst, index)); + LoadMap(dst, cp); + ldr(dst, FieldMemOperand( + dst, Map::kConstructorOrBackPointerOrNativeContextOffset)); + ldr(dst, MemOperand(dst, Context::SlotOffset(index))); } void TurboAssembler::InitializeRootRegister() { @@ -2078,7 +2084,7 @@ void MacroAssembler::AssertConstructor(Register object) { tst(object, Operand(kSmiTagMask)); Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor); push(object); - ldr(object, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(object, object); ldrb(object, FieldMemOperand(object, Map::kBitFieldOffset)); tst(object, Operand(Map::IsConstructorBit::kMask)); pop(object); @@ -2118,7 +2124,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) { // Load map Register map = object; push(object); - ldr(map, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(map, object); // Check if JSGeneratorObject Label do_check; @@ -2146,7 +2152,7 @@ void MacroAssembler::AssertUndefinedOrAllocationSite(Register object, AssertNotSmi(object); CompareRoot(object, RootIndex::kUndefinedValue); b(eq, &done_checking); - ldr(scratch, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(scratch, object); CompareInstanceType(scratch, scratch, ALLOCATION_SITE_TYPE); Assert(eq, AbortReason::kExpectedUndefinedOrCell); bind(&done_checking); diff --git a/src/codegen/arm/macro-assembler-arm.h b/src/codegen/arm/macro-assembler-arm.h index 4807a6d20d..2bea2a73f4 100644 --- a/src/codegen/arm/macro-assembler-arm.h +++ b/src/codegen/arm/macro-assembler-arm.h @@ -620,6 +620,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { void LeaveExitFrame(bool save_doubles, Register argument_count, bool argument_count_is_length = false); + void LoadMap(Register destination, Register object); + // Load the global proxy from the current context. void LoadGlobalProxy(Register dst); @@ -805,17 +807,6 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler); }; -// ----------------------------------------------------------------------------- -// Static helper functions. - -inline MemOperand ContextMemOperand(Register context, int index = 0) { - return MemOperand(context, Context::SlotOffset(index)); -} - -inline MemOperand NativeContextMemOperand() { - return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); -} - #define ACCESS_MASM(masm) masm-> } // namespace internal diff --git a/src/codegen/arm64/macro-assembler-arm64.cc b/src/codegen/arm64/macro-assembler-arm64.cc index 892458fe8b..fafa135798 100644 --- a/src/codegen/arm64/macro-assembler-arm64.cc +++ b/src/codegen/arm64/macro-assembler-arm64.cc @@ -1534,8 +1534,7 @@ void MacroAssembler::AssertConstructor(Register object) { UseScratchRegisterScope temps(this); Register temp = temps.AcquireX(); - LoadTaggedPointerField(temp, - FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(temp, object); Ldrb(temp, FieldMemOperand(temp, Map::kBitFieldOffset)); Tst(temp, Operand(Map::IsConstructorBit::kMask)); @@ -1574,7 +1573,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) { // Load map UseScratchRegisterScope temps(this); Register temp = temps.AcquireX(); - LoadTaggedPointerField(temp, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(temp, object); Label do_check; // Load instance type and check if JSGeneratorObject @@ -1600,8 +1599,7 @@ void MacroAssembler::AssertUndefinedOrAllocationSite(Register object) { Label done_checking; AssertNotSmi(object); JumpIfRoot(object, RootIndex::kUndefinedValue, &done_checking); - LoadTaggedPointerField(scratch, - FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(scratch, object); CompareInstanceType(scratch, scratch, ALLOCATION_SITE_TYPE); Assert(eq, AbortReason::kExpectedUndefinedOrCell); Bind(&done_checking); @@ -2620,10 +2618,14 @@ void MacroAssembler::JumpIfObjectType(Register object, Register map, // Sets condition flags based on comparison, and returns type in type_reg. void MacroAssembler::CompareObjectType(Register object, Register map, Register type_reg, InstanceType type) { - LoadTaggedPointerField(map, FieldMemOperand(object, HeapObject::kMapOffset)); + LoadMap(map, object); CompareInstanceType(map, type_reg, type); } +void MacroAssembler::LoadMap(Register dst, Register object) { + LoadTaggedPointerField(dst, FieldMemOperand(object, HeapObject::kMapOffset)); +} + // Sets condition flags based on comparison, and returns type in type_reg. void MacroAssembler::CompareInstanceType(Register map, Register type_reg, InstanceType type) { @@ -3077,8 +3079,11 @@ void TurboAssembler::Abort(AbortReason reason) { } void MacroAssembler::LoadNativeContextSlot(int index, Register dst) { - LoadTaggedPointerField(dst, NativeContextMemOperand()); - LoadTaggedPointerField(dst, ContextMemOperand(dst, index)); + LoadMap(dst, cp); + LoadTaggedPointerField( + dst, FieldMemOperand( + dst, Map::kConstructorOrBackPointerOrNativeContextOffset)); + LoadTaggedPointerField(dst, MemOperand(dst, Context::SlotOffset(index))); } // This is the main Printf implementation. All other Printf variants call @@ -3334,14 +3339,6 @@ CPURegister UseScratchRegisterScope::AcquireNextAvailable( return result; } -MemOperand ContextMemOperand(Register context, int index) { - return MemOperand(context, Context::SlotOffset(index)); -} - -MemOperand NativeContextMemOperand() { - return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); -} - void TurboAssembler::ComputeCodeStartAddress(const Register& rd) { // We can use adr to load a pc relative location. adr(rd, -pc_offset()); diff --git a/src/codegen/arm64/macro-assembler-arm64.h b/src/codegen/arm64/macro-assembler-arm64.h index cb3b51eb52..38940e99bf 100644 --- a/src/codegen/arm64/macro-assembler-arm64.h +++ b/src/codegen/arm64/macro-assembler-arm64.h @@ -1878,6 +1878,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { void LeaveExitFrame(bool save_doubles, const Register& scratch, const Register& scratch2); + void LoadMap(Register dst, Register object); + // Load the global proxy from the current context. void LoadGlobalProxy(Register dst); @@ -2081,9 +2083,6 @@ class UseScratchRegisterScope { RegList old_availablefp_; // kVRegister }; -MemOperand ContextMemOperand(Register context, int index = 0); -MemOperand NativeContextMemOperand(); - } // namespace internal } // namespace v8 diff --git a/src/codegen/code-stub-assembler.cc b/src/codegen/code-stub-assembler.cc index 3051ce3662..ddbe9e7603 100644 --- a/src/codegen/code-stub-assembler.cc +++ b/src/codegen/code-stub-assembler.cc @@ -1835,7 +1835,8 @@ TNode CodeStubAssembler::LoadMapConstructorFunctionIndex( TNode CodeStubAssembler::LoadMapConstructor(SloppyTNode map) { CSA_SLOW_ASSERT(this, IsMap(map)); TVARIABLE(Object, result, - LoadObjectField(map, Map::kConstructorOrBackPointerOffset)); + LoadObjectField( + map, Map::kConstructorOrBackPointerOrNativeContextOffset)); Label done(this), loop(this, &result); Goto(&loop); @@ -1845,8 +1846,9 @@ TNode CodeStubAssembler::LoadMapConstructor(SloppyTNode map) { TNode is_map_type = InstanceTypeEqual(LoadInstanceType(CAST(result.value())), MAP_TYPE); GotoIfNot(is_map_type, &done); - result = LoadObjectField(CAST(result.value()), - Map::kConstructorOrBackPointerOffset); + result = + LoadObjectField(CAST(result.value()), + Map::kConstructorOrBackPointerOrNativeContextOffset); Goto(&loop); } BIND(&done); @@ -1860,8 +1862,8 @@ TNode CodeStubAssembler::LoadMapEnumLength(SloppyTNode map) { } TNode CodeStubAssembler::LoadMapBackPointer(SloppyTNode map) { - TNode object = - CAST(LoadObjectField(map, Map::kConstructorOrBackPointerOffset)); + TNode object = CAST(LoadObjectField( + map, Map::kConstructorOrBackPointerOrNativeContextOffset)); return Select( IsMap(object), [=] { return object; }, [=] { return UndefinedConstant(); }); @@ -2732,15 +2734,17 @@ void CodeStubAssembler::StoreContextElementNoWriteBarrier( TNode CodeStubAssembler::LoadNativeContext( SloppyTNode context) { - return UncheckedCast( - LoadContextElement(context, Context::NATIVE_CONTEXT_INDEX)); + TNode map = LoadMap(context); + return CAST(LoadObjectField( + map, Map::kConstructorOrBackPointerOrNativeContextOffset)); } TNode CodeStubAssembler::LoadModuleContext( SloppyTNode context) { - TNode module_map = ModuleContextMapConstant(); - Variable cur_context(this, MachineRepresentation::kTaggedPointer); - cur_context.Bind(context); + TNode native_context = LoadNativeContext(context); + TNode module_map = CAST( + LoadContextElement(native_context, Context::MODULE_CONTEXT_MAP_INDEX)); + TVariable cur_context(context, this); Label context_found(this); @@ -2751,12 +2755,13 @@ TNode CodeStubAssembler::LoadModuleContext( Goto(&context_search); BIND(&context_search); { - CSA_ASSERT(this, Word32BinaryNot(IsNativeContext(cur_context.value()))); - GotoIf(TaggedEqual(LoadMap(cur_context.value()), module_map), + CSA_ASSERT(this, Word32BinaryNot( + TaggedEqual(cur_context.value(), native_context))); + GotoIf(TaggedEqual(LoadMap(CAST(cur_context.value())), module_map), &context_found); - cur_context.Bind( - LoadContextElement(cur_context.value(), Context::PREVIOUS_INDEX)); + cur_context = + LoadContextElement(CAST(cur_context.value()), Context::PREVIOUS_INDEX); Goto(&context_search); } @@ -6556,7 +6561,7 @@ TNode CodeStubAssembler::IsPrivateName(SloppyTNode symbol) { TNode CodeStubAssembler::IsNativeContext( SloppyTNode object) { - return TaggedEqual(LoadMap(object), NativeContextMapConstant()); + return HasInstanceType(object, NATIVE_CONTEXT_TYPE); } TNode CodeStubAssembler::IsFixedDoubleArray( @@ -8699,8 +8704,9 @@ TNode CodeStubAssembler::GetConstructor(TNode map) { BIND(&loop); { - var_maybe_constructor = CAST(LoadObjectField( - var_maybe_constructor.value(), Map::kConstructorOrBackPointerOffset)); + var_maybe_constructor = CAST( + LoadObjectField(var_maybe_constructor.value(), + Map::kConstructorOrBackPointerOrNativeContextOffset)); GotoIf(IsMap(var_maybe_constructor.value()), &loop); Goto(&done); } @@ -13488,7 +13494,9 @@ void CodeStubAssembler::PerformStackCheck(TNode context) { void CodeStubAssembler::InitializeFunctionContext(Node* native_context, Node* context, int slots) { DCHECK_GE(slots, Context::MIN_CONTEXT_SLOTS); - StoreMapNoWriteBarrier(context, RootIndex::kFunctionContextMap); + TNode map = CAST( + LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX)); + StoreMapNoWriteBarrier(context, map); StoreObjectFieldNoWriteBarrier(context, FixedArray::kLengthOffset, SmiConstant(slots)); @@ -13500,8 +13508,6 @@ void CodeStubAssembler::InitializeFunctionContext(Node* native_context, UndefinedConstant()); StoreContextElementNoWriteBarrier(context, Context::EXTENSION_INDEX, TheHoleConstant()); - StoreContextElementNoWriteBarrier(context, Context::NATIVE_CONTEXT_INDEX, - native_context); } TNode CodeStubAssembler::ArrayCreate(TNode context, diff --git a/src/codegen/code-stub-assembler.h b/src/codegen/code-stub-assembler.h index eee3e7a376..5828bab88f 100644 --- a/src/codegen/code-stub-assembler.h +++ b/src/codegen/code-stub-assembler.h @@ -101,10 +101,8 @@ enum class PrimitiveType { kBoolean, kNumber, kString, kSymbol }; V(megamorphic_symbol, megamorphic_symbol, MegamorphicSymbol) \ V(MetaMap, meta_map, MetaMap) \ V(MinusZeroValue, minus_zero_value, MinusZero) \ - V(ModuleContextMap, module_context_map, ModuleContextMap) \ V(name_string, name_string, NameString) \ V(NanValue, nan_value, Nan) \ - V(NativeContextMap, native_context_map, NativeContextMap) \ V(next_string, next_string, NextString) \ V(NoClosuresCellMap, no_closures_cell_map, NoClosuresCellMap) \ V(null_to_string, null_to_string, NullToString) \ @@ -1042,7 +1040,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler } TNode LoadConstructorOrBackPointer(TNode map) { - return LoadObjectField(map, Map::kConstructorOrBackPointerOffset); + return LoadObjectField(map, + Map::kConstructorOrBackPointerOrNativeContextOffset); } // Reference is the CSA-equivalent of a Torque reference value, diff --git a/src/codegen/ia32/macro-assembler-ia32.cc b/src/codegen/ia32/macro-assembler-ia32.cc index dd11bc496e..145a068393 100644 --- a/src/codegen/ia32/macro-assembler-ia32.cc +++ b/src/codegen/ia32/macro-assembler-ia32.cc @@ -638,9 +638,13 @@ void TurboAssembler::SarPair_cl(Register high, Register low) { bind(&done); } +void TurboAssembler::LoadMap(Register destination, Register object) { + mov(destination, FieldOperand(object, HeapObject::kMapOffset)); +} + void MacroAssembler::CmpObjectType(Register heap_object, InstanceType type, Register map) { - mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); + LoadMap(map, heap_object); CmpInstanceType(map, type); } @@ -660,7 +664,7 @@ void MacroAssembler::AssertConstructor(Register object) { test(object, Immediate(kSmiTagMask)); Check(not_equal, AbortReason::kOperandIsASmiAndNotAConstructor); Push(object); - mov(object, FieldOperand(object, HeapObject::kMapOffset)); + LoadMap(object, object); test_b(FieldOperand(object, Map::kBitFieldOffset), Immediate(Map::IsConstructorBit::kMask)); Pop(object); @@ -700,8 +704,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) { Push(object); Register map = object; - // Load map - mov(map, FieldOperand(object, HeapObject::kMapOffset)); + LoadMap(map, object); Label do_check; // Check if JSGeneratorObject @@ -1280,15 +1283,17 @@ void MacroAssembler::InvokeFunction(Register fun, Register new_target, } void MacroAssembler::LoadGlobalProxy(Register dst) { - mov(dst, NativeContextOperand()); - mov(dst, ContextOperand(dst, Context::GLOBAL_PROXY_INDEX)); + LoadNativeContextSlot(dst, Context::GLOBAL_PROXY_INDEX); } -void MacroAssembler::LoadGlobalFunction(int index, Register function) { +void MacroAssembler::LoadNativeContextSlot(Register destination, int index) { // Load the native context from the current context. - mov(function, NativeContextOperand()); + LoadMap(destination, esi); + mov(destination, + FieldOperand(destination, + Map::kConstructorOrBackPointerOrNativeContextOffset)); // Load the function from the native context. - mov(function, ContextOperand(function, index)); + mov(destination, Operand(destination, Context::SlotOffset(index))); } int MacroAssembler::SafepointRegisterStackIndex(int reg_code) { diff --git a/src/codegen/ia32/macro-assembler-ia32.h b/src/codegen/ia32/macro-assembler-ia32.h index 9e7774c55d..cd3ff6fa8d 100644 --- a/src/codegen/ia32/macro-assembler-ia32.h +++ b/src/codegen/ia32/macro-assembler-ia32.h @@ -103,6 +103,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void Jump(Handle code_object, RelocInfo::Mode rmode); + void LoadMap(Register destination, Register object); + void RetpolineJump(Register reg); void CallForDeoptimization(Address target, int deopt_id); @@ -553,8 +555,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { // Load the global proxy from the current context. void LoadGlobalProxy(Register dst); - // Load the global function with the given index. - void LoadGlobalFunction(int index, Register function); + // Load a value from the native context with a given index. + void LoadNativeContextSlot(Register dst, int index); // --------------------------------------------------------------------------- // JavaScript invokes @@ -738,18 +740,6 @@ inline Operand FieldOperand(Register object, Register index, ScaleFactor scale, return Operand(object, index, scale, offset - kHeapObjectTag); } -inline Operand ContextOperand(Register context, int index) { - return Operand(context, Context::SlotOffset(index)); -} - -inline Operand ContextOperand(Register context, Register index) { - return Operand(context, index, times_tagged_size, Context::SlotOffset(0)); -} - -inline Operand NativeContextOperand() { - return ContextOperand(esi, Context::NATIVE_CONTEXT_INDEX); -} - #define ACCESS_MASM(masm) masm-> } // namespace internal diff --git a/src/codegen/x64/macro-assembler-x64.cc b/src/codegen/x64/macro-assembler-x64.cc index d02b95b38e..0c2489ca14 100644 --- a/src/codegen/x64/macro-assembler-x64.cc +++ b/src/codegen/x64/macro-assembler-x64.cc @@ -216,6 +216,11 @@ void TurboAssembler::CompareRoot(Operand with, RootIndex index) { } } +void TurboAssembler::LoadMap(Register destination, Register object) { + LoadTaggedPointerField(destination, + FieldOperand(object, HeapObject::kMapOffset)); +} + void TurboAssembler::LoadTaggedPointerField(Register destination, Operand field_operand) { if (COMPRESS_POINTERS_BOOL) { @@ -2111,8 +2116,7 @@ void TurboAssembler::Ret(int bytes_dropped, Register scratch) { void MacroAssembler::CmpObjectType(Register heap_object, InstanceType type, Register map) { - LoadTaggedPointerField(map, - FieldOperand(heap_object, HeapObject::kMapOffset)); + LoadMap(map, heap_object); CmpInstanceType(map, type); } @@ -2155,8 +2159,7 @@ void MacroAssembler::AssertConstructor(Register object) { testb(object, Immediate(kSmiTagMask)); Check(not_equal, AbortReason::kOperandIsASmiAndNotAConstructor); Push(object); - LoadTaggedPointerField(object, - FieldOperand(object, HeapObject::kMapOffset)); + LoadMap(object, object); testb(FieldOperand(object, Map::kBitFieldOffset), Immediate(Map::IsConstructorBit::kMask)); Pop(object); @@ -2194,7 +2197,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) { // Load map Register map = object; Push(object); - LoadTaggedPointerField(map, FieldOperand(object, HeapObject::kMapOffset)); + LoadMap(map, object); Label do_check; // Check if JSGeneratorObject @@ -2727,8 +2730,13 @@ static const int kRegisterPassedArguments = 6; #endif void MacroAssembler::LoadNativeContextSlot(int index, Register dst) { - LoadTaggedPointerField(dst, NativeContextOperand()); - LoadTaggedPointerField(dst, ContextOperand(dst, index)); + // Load native context. + LoadMap(dst, rsi); + LoadTaggedPointerField( + dst, + FieldOperand(dst, Map::kConstructorOrBackPointerOrNativeContextOffset)); + // Load value from native context. + LoadTaggedPointerField(dst, Operand(dst, Context::SlotOffset(index))); } int TurboAssembler::ArgumentStackSlotsForCFunctionCall(int num_arguments) { diff --git a/src/codegen/x64/macro-assembler-x64.h b/src/codegen/x64/macro-assembler-x64.h index f38da45788..d71b369de9 100644 --- a/src/codegen/x64/macro-assembler-x64.h +++ b/src/codegen/x64/macro-assembler-x64.h @@ -294,6 +294,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { j(less, dest); } + void LoadMap(Register destination, Register object); + void Move(Register dst, Smi source); void Move(Operand dst, Smi source) { @@ -932,19 +934,6 @@ inline Operand FieldOperand(Register object, Register index, ScaleFactor scale, return Operand(object, index, scale, offset - kHeapObjectTag); } -inline Operand ContextOperand(Register context, int index) { - return Operand(context, Context::SlotOffset(index)); -} - -inline Operand ContextOperand(Register context, Register index) { - return Operand(context, index, times_system_pointer_size, - Context::SlotOffset(0)); -} - -inline Operand NativeContextOperand() { - return ContextOperand(rsi, Context::NATIVE_CONTEXT_INDEX); -} - // Provides access to exit frame stack space (not GCed). inline Operand StackSpaceOperand(int index) { #ifdef V8_TARGET_OS_WIN diff --git a/src/compiler/heap-refs.h b/src/compiler/heap-refs.h index c6322ebe69..244c1ace54 100644 --- a/src/compiler/heap-refs.h +++ b/src/compiler/heap-refs.h @@ -394,9 +394,13 @@ class ContextRef : public HeapObjectRef { V(JSGlobalObject, global_object) \ V(JSGlobalProxy, global_proxy_object) \ V(JSObject, promise_prototype) \ + V(Map, block_context_map) \ V(Map, bound_function_with_constructor_map) \ V(Map, bound_function_without_constructor_map) \ + V(Map, catch_context_map) \ + V(Map, eval_context_map) \ V(Map, fast_aliased_arguments_map) \ + V(Map, function_context_map) \ V(Map, initial_array_iterator_map) \ V(Map, initial_string_iterator_map) \ V(Map, iterator_result_map) \ @@ -409,6 +413,7 @@ class ContextRef : public HeapObjectRef { V(Map, sloppy_arguments_map) \ V(Map, slow_object_with_null_prototype_map) \ V(Map, strict_arguments_map) \ + V(Map, with_context_map) \ V(ScriptContextTable, script_context_table) \ V(SharedFunctionInfo, promise_capability_default_reject_shared_fun) \ V(SharedFunctionInfo, promise_catch_finally_shared_fun) \ diff --git a/src/compiler/js-create-lowering.cc b/src/compiler/js-create-lowering.cc index 6ab54d793a..09dfcef3fd 100644 --- a/src/compiler/js-create-lowering.cc +++ b/src/compiler/js-create-lowering.cc @@ -1198,26 +1198,23 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) { Node* context = NodeProperties::GetContextInput(node); Node* extension = jsgraph()->TheHoleConstant(); AllocationBuilder a(jsgraph(), effect, control); - STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered. + STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered. int context_length = slot_count + Context::MIN_CONTEXT_SLOTS; - Handle map; switch (scope_type) { case EVAL_SCOPE: - map = factory()->eval_context_map(); + a.AllocateContext(context_length, native_context().eval_context_map()); break; case FUNCTION_SCOPE: - map = factory()->function_context_map(); + a.AllocateContext(context_length, + native_context().function_context_map()); break; default: UNREACHABLE(); } - a.AllocateContext(context_length, MapRef(broker(), map)); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension); - a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX), - jsgraph()->Constant(native_context())); for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) { a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant()); } @@ -1238,14 +1235,12 @@ Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) { Node* context = NodeProperties::GetContextInput(node); AllocationBuilder a(jsgraph(), effect, control); - STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered. + STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered. a.AllocateContext(Context::MIN_CONTEXT_SLOTS, - MapRef(broker(), factory()->with_context_map())); + native_context().with_context_map()); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension); - a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX), - jsgraph()->Constant(native_context())); RelaxControls(node); a.FinishAndChange(node); return Changed(node); @@ -1261,14 +1256,12 @@ Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) { Node* extension = jsgraph()->TheHoleConstant(); AllocationBuilder a(jsgraph(), effect, control); - STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered. + STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered. a.AllocateContext(Context::MIN_CONTEXT_SLOTS + 1, - MapRef(broker(), factory()->catch_context_map())); + native_context().catch_context_map()); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension); - a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX), - jsgraph()->Constant(native_context())); a.Store(AccessBuilder::ForContextSlot(Context::THROWN_OBJECT_INDEX), exception); RelaxControls(node); @@ -1290,15 +1283,12 @@ Reduction JSCreateLowering::ReduceJSCreateBlockContext(Node* node) { Node* extension = jsgraph()->TheHoleConstant(); AllocationBuilder a(jsgraph(), effect, control); - STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered. - a.AllocateContext(context_length, - MapRef(broker(), factory()->block_context_map())); + STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered. + a.AllocateContext(context_length, native_context().block_context_map()); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension); - a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX), - jsgraph()->Constant(native_context())); for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) { a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant()); } diff --git a/src/compiler/js-heap-broker.cc b/src/compiler/js-heap-broker.cc index 9a725eb4e9..7dce696ffc 100644 --- a/src/compiler/js-heap-broker.cc +++ b/src/compiler/js-heap-broker.cc @@ -1955,6 +1955,7 @@ void MapData::SerializeConstructor(JSHeapBroker* broker) { TraceScope tracer(broker, this, "MapData::SerializeConstructor"); Handle map = Handle::cast(object()); + DCHECK(!map->IsContextMap()); DCHECK_NULL(constructor_); constructor_ = broker->GetOrCreateData(map->GetConstructor()); } @@ -1966,6 +1967,7 @@ void MapData::SerializeBackPointer(JSHeapBroker* broker) { TraceScope tracer(broker, this, "MapData::SerializeBackPointer"); Handle map = Handle::cast(object()); DCHECK_NULL(backpointer_); + DCHECK(!map->IsContextMap()); backpointer_ = broker->GetOrCreateData(map->GetBackPointer())->AsHeapObject(); } @@ -2539,20 +2541,16 @@ void JSHeapBroker::InitializeAndStartSerializing( Factory* const f = isolate()->factory(); GetOrCreateData(f->arguments_marker_map()); GetOrCreateData(f->bigint_string()); - GetOrCreateData(f->block_context_map()); GetOrCreateData(f->boolean_map()); GetOrCreateData(f->boolean_string()); - GetOrCreateData(f->catch_context_map()); GetOrCreateData(f->empty_fixed_array()); GetOrCreateData(f->empty_string()); - GetOrCreateData(f->eval_context_map()); GetOrCreateData(f->exec_string()); GetOrCreateData(f->false_string()); GetOrCreateData(f->false_value()); GetOrCreateData(f->fixed_array_map()); GetOrCreateData(f->fixed_cow_array_map()); GetOrCreateData(f->fixed_double_array_map()); - GetOrCreateData(f->function_context_map()); GetOrCreateData(f->function_string()); GetOrCreateData(f->has_instance_symbol()); GetOrCreateData(f->heap_number_map()); @@ -2589,7 +2587,6 @@ void JSHeapBroker::InitializeAndStartSerializing( GetOrCreateData(f->undefined_string()); GetOrCreateData(f->undefined_value()); GetOrCreateData(f->uninitialized_map()); - GetOrCreateData(f->with_context_map()); GetOrCreateData(f->zero_string()); // - Cells GetOrCreateData(f->array_buffer_detaching_protector()) @@ -3914,11 +3911,14 @@ void NativeContextData::Serialize(JSHeapBroker* broker) { TraceScope tracer(broker, this, "NativeContextData::Serialize"); Handle context = Handle::cast(object()); -#define SERIALIZE_MEMBER(type, name) \ - DCHECK_NULL(name##_); \ - name##_ = broker->GetOrCreateData(context->name())->As##type(); \ - if (name##_->IsJSFunction()) name##_->AsJSFunction()->Serialize(broker); \ - if (name##_->IsMap()) name##_->AsMap()->SerializeConstructor(broker); +#define SERIALIZE_MEMBER(type, name) \ + DCHECK_NULL(name##_); \ + name##_ = broker->GetOrCreateData(context->name())->As##type(); \ + if (name##_->IsJSFunction()) name##_->AsJSFunction()->Serialize(broker); \ + if (name##_->IsMap() && \ + !InstanceTypeChecker::IsContext(name##_->AsMap()->instance_type())) { \ + name##_->AsMap()->SerializeConstructor(broker); \ + } BROKER_COMPULSORY_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER) if (!broker->isolate()->bootstrapper()->IsActive()) { BROKER_OPTIONAL_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER) diff --git a/src/compiler/js-native-context-specialization.cc b/src/compiler/js-native-context-specialization.cc index 80c620034b..137edda09a 100644 --- a/src/compiler/js-native-context-specialization.cc +++ b/src/compiler/js-native-context-specialization.cc @@ -92,8 +92,6 @@ Reduction JSNativeContextSpecialization::Reduce(Node* node) { return ReduceJSPromiseResolve(node); case IrOpcode::kJSResolvePromise: return ReduceJSResolvePromise(node); - case IrOpcode::kJSLoadContext: - return ReduceJSLoadContext(node); case IrOpcode::kJSLoadGlobal: return ReduceJSLoadGlobal(node); case IrOpcode::kJSStoreGlobal: @@ -744,20 +742,6 @@ Reduction JSNativeContextSpecialization::ReduceJSResolvePromise(Node* node) { return Replace(value); } -Reduction JSNativeContextSpecialization::ReduceJSLoadContext(Node* node) { - DCHECK_EQ(IrOpcode::kJSLoadContext, node->opcode()); - ContextAccess const& access = ContextAccessOf(node->op()); - // Specialize JSLoadContext(NATIVE_CONTEXT_INDEX) to the known native - // context (if any), so we can constant-fold those fields, which is - // safe, since the NATIVE_CONTEXT_INDEX slot is always immutable. - if (access.index() == Context::NATIVE_CONTEXT_INDEX) { - Node* value = jsgraph()->Constant(native_context()); - ReplaceWithValue(node, value); - return Replace(value); - } - return NoChange(); -} - namespace { FieldAccess ForPropertyCellValue(MachineRepresentation representation, diff --git a/src/compiler/js-native-context-specialization.h b/src/compiler/js-native-context-specialization.h index 429be0bb24..a7a3cf947d 100644 --- a/src/compiler/js-native-context-specialization.h +++ b/src/compiler/js-native-context-specialization.h @@ -79,7 +79,6 @@ class V8_EXPORT_PRIVATE JSNativeContextSpecialization final Reduction ReduceJSOrdinaryHasInstance(Node* node); Reduction ReduceJSPromiseResolve(Node* node); Reduction ReduceJSResolvePromise(Node* node); - Reduction ReduceJSLoadContext(Node* node); Reduction ReduceJSLoadGlobal(Node* node); Reduction ReduceJSStoreGlobal(Node* node); Reduction ReduceJSLoadNamed(Node* node); diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc index e5ee0aa733..3d6ecd0a35 100644 --- a/src/compiler/typer.cc +++ b/src/compiler/typer.cc @@ -1480,7 +1480,6 @@ Type Typer::Visitor::TypeJSLoadContext(Node* node) { ContextAccess const& access = ContextAccessOf(node->op()); switch (access.index()) { case Context::PREVIOUS_INDEX: - case Context::NATIVE_CONTEXT_INDEX: case Context::SCOPE_INFO_INDEX: return Type::OtherInternal(); default: diff --git a/src/diagnostics/gdb-jit.cc b/src/diagnostics/gdb-jit.cc index e1290bae4e..98fc181713 100644 --- a/src/diagnostics/gdb-jit.cc +++ b/src/diagnostics/gdb-jit.cc @@ -1111,19 +1111,16 @@ class DebugInfoSection : public DebugSection { } // See contexts.h for more information. - DCHECK_EQ(Context::MIN_CONTEXT_SLOTS, 4); + DCHECK_EQ(Context::MIN_CONTEXT_SLOTS, 3); DCHECK_EQ(Context::SCOPE_INFO_INDEX, 0); DCHECK_EQ(Context::PREVIOUS_INDEX, 1); DCHECK_EQ(Context::EXTENSION_INDEX, 2); - DCHECK_EQ(Context::NATIVE_CONTEXT_INDEX, 3); w->WriteULEB128(current_abbreviation++); w->WriteString(".scope_info"); w->WriteULEB128(current_abbreviation++); w->WriteString(".previous"); w->WriteULEB128(current_abbreviation++); w->WriteString(".extension"); - w->WriteULEB128(current_abbreviation++); - w->WriteString(".native_context"); for (int context_slot = 0; context_slot < context_slots; ++context_slot) { w->WriteULEB128(current_abbreviation++); diff --git a/src/diagnostics/objects-debug.cc b/src/diagnostics/objects-debug.cc index 9c4b176dc6..c047ad2e37 100644 --- a/src/diagnostics/objects-debug.cc +++ b/src/diagnostics/objects-debug.cc @@ -652,8 +652,12 @@ void Map::MapVerify(Isolate* isolate) { CHECK(instance_size() == kVariableSizeSentinel || (kTaggedSize <= instance_size() && static_cast(instance_size()) < heap->Capacity())); - CHECK(GetBackPointer().IsUndefined(isolate) || - !Map::cast(GetBackPointer()).is_stable()); + if (IsContextMap()) { + CHECK(native_context().IsNativeContext()); + } else { + CHECK_IMPLIES(!GetBackPointer().IsUndefined(isolate), + !Map::cast(GetBackPointer()).is_stable()); + } SLOW_DCHECK(instance_descriptors().IsSortedNoDuplicates()); DisallowHeapAllocation no_gc; SLOW_DCHECK( diff --git a/src/diagnostics/objects-printer.cc b/src/diagnostics/objects-printer.cc index 69645ed869..7f3829a88a 100644 --- a/src/diagnostics/objects-printer.cc +++ b/src/diagnostics/objects-printer.cc @@ -2543,7 +2543,9 @@ void Map::MapPrint(std::ostream& os) { // NOLINT } if (is_access_check_needed()) os << "\n - access_check_needed"; if (!is_extensible()) os << "\n - non-extensible"; - if (is_prototype_map()) { + if (IsContextMap()) { + os << "\n - native context: " << Brief(native_context()); + } else if (is_prototype_map()) { os << "\n - prototype_map"; os << "\n - prototype info: " << Brief(prototype_info()); } else { @@ -2580,7 +2582,9 @@ void Map::MapPrint(std::ostream& os) { // NOLINT } } os << "\n - prototype: " << Brief(prototype()); - os << "\n - constructor: " << Brief(GetConstructor()); + if (!IsContextMap()) { + os << "\n - constructor: " << Brief(GetConstructor()); + } os << "\n - dependent code: " << Brief(dependent_code()); os << "\n - construction counter: " << construction_counter(); os << "\n"; diff --git a/src/heap/factory.cc b/src/heap/factory.cc index 721682f00f..30113b5cac 100644 --- a/src/heap/factory.cc +++ b/src/heap/factory.cc @@ -1410,20 +1410,20 @@ Handle Factory::NewPrivateNameSymbol(Handle name) { return symbol; } -Handle Factory::NewContext(RootIndex map_root_index, int size, +Handle Factory::NewContext(Handle map, int size, int variadic_part_length, AllocationType allocation) { - DCHECK(RootsTable::IsImmortalImmovable(map_root_index)); DCHECK_LE(Context::kTodoHeaderSize, size); DCHECK(IsAligned(size, kTaggedSize)); DCHECK_LE(Context::MIN_CONTEXT_SLOTS, variadic_part_length); DCHECK_LE(Context::SizeFor(variadic_part_length), size); - Map map = Map::cast(isolate()->root(map_root_index)); - HeapObject result = AllocateRawWithImmortalMap(size, allocation, map); + HeapObject result = + isolate()->heap()->AllocateRawWith(size, allocation); + result.set_map_after_allocation(*map); Handle context(Context::cast(result), isolate()); context->initialize_length_and_extension_bit(variadic_part_length); - DCHECK_EQ(context->SizeFromMap(map), size); + DCHECK_EQ(context->SizeFromMap(*map), size); if (size > Context::kTodoHeaderSize) { ObjectSlot start = context->RawField(Context::kTodoHeaderSize); ObjectSlot end = context->RawField(size); @@ -1434,13 +1434,15 @@ Handle Factory::NewContext(RootIndex map_root_index, int size, } Handle Factory::NewNativeContext() { + Handle map = NewMap(NATIVE_CONTEXT_TYPE, kVariableSizeSentinel); Handle context = Handle::cast( - NewContext(RootIndex::kNativeContextMap, NativeContext::kSize, - NativeContext::NATIVE_CONTEXT_SLOTS, AllocationType::kOld)); + NewContext(map, NativeContext::kSize, NativeContext::NATIVE_CONTEXT_SLOTS, + AllocationType::kOld)); + context->set_native_context_map(*map); + map->set_native_context(*context); context->set_scope_info(ReadOnlyRoots(isolate()).empty_scope_info()); context->set_previous(Context::unchecked_cast(Smi::zero())); context->set_extension(*the_hole_value()); - context->set_native_context(*context); context->set_errors_thrown(Smi::zero()); context->set_math_random_index(Smi::zero()); context->set_serialized_objects(*empty_fixed_array()); @@ -1454,12 +1456,11 @@ Handle Factory::NewScriptContext(Handle outer, DCHECK_EQ(scope_info->scope_type(), SCRIPT_SCOPE); int variadic_part_length = scope_info->ContextLength(); Handle context = NewContext( - RootIndex::kScriptContextMap, Context::SizeFor(variadic_part_length), + isolate()->script_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kOld); context->set_scope_info(*scope_info); context->set_previous(*outer); context->set_extension(*the_hole_value()); - context->set_native_context(*outer); DCHECK(context->IsScriptContext()); return context; } @@ -1478,37 +1479,35 @@ Handle Factory::NewModuleContext(Handle module, DCHECK_EQ(scope_info->scope_type(), MODULE_SCOPE); int variadic_part_length = scope_info->ContextLength(); Handle context = NewContext( - RootIndex::kModuleContextMap, Context::SizeFor(variadic_part_length), + isolate()->module_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kOld); context->set_scope_info(*scope_info); context->set_previous(*outer); context->set_extension(*module); - context->set_native_context(*outer); DCHECK(context->IsModuleContext()); return context; } Handle Factory::NewFunctionContext(Handle outer, Handle scope_info) { - RootIndex mapRootIndex; + Handle map; switch (scope_info->scope_type()) { case EVAL_SCOPE: - mapRootIndex = RootIndex::kEvalContextMap; + map = isolate()->eval_context_map(); break; case FUNCTION_SCOPE: - mapRootIndex = RootIndex::kFunctionContextMap; + map = isolate()->function_context_map(); break; default: UNREACHABLE(); } int variadic_part_length = scope_info->ContextLength(); Handle context = - NewContext(mapRootIndex, Context::SizeFor(variadic_part_length), + NewContext(map, Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); context->set_scope_info(*scope_info); context->set_previous(*outer); context->set_extension(*the_hole_value()); - context->set_native_context(outer->native_context()); return context; } @@ -1520,12 +1519,11 @@ Handle Factory::NewCatchContext(Handle previous, // TODO(ishell): Take the details from CatchContext class. int variadic_part_length = Context::MIN_CONTEXT_SLOTS + 1; Handle context = NewContext( - RootIndex::kCatchContextMap, Context::SizeFor(variadic_part_length), + isolate()->catch_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); context->set_scope_info(*scope_info); context->set_previous(*previous); context->set_extension(*the_hole_value()); - context->set_native_context(previous->native_context()); context->set(Context::THROWN_OBJECT_INDEX, *thrown_object); return context; } @@ -1542,12 +1540,11 @@ Handle Factory::NewDebugEvaluateContext(Handle previous, : Handle::cast(extension); // TODO(ishell): Take the details from DebugEvaluateContextContext class. int variadic_part_length = Context::MIN_CONTEXT_SLOTS + 2; - Handle c = NewContext(RootIndex::kDebugEvaluateContextMap, + Handle c = NewContext(isolate()->debug_evaluate_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); c->set_scope_info(*scope_info); c->set_previous(*previous); - c->set_native_context(previous->native_context()); c->set_extension(*ext); if (!wrapped.is_null()) c->set(Context::WRAPPED_CONTEXT_INDEX, *wrapped); if (!blacklist.is_null()) c->set(Context::BLACK_LIST_INDEX, *blacklist); @@ -1561,12 +1558,11 @@ Handle Factory::NewWithContext(Handle previous, // TODO(ishell): Take the details from WithContext class. int variadic_part_length = Context::MIN_CONTEXT_SLOTS; Handle context = NewContext( - RootIndex::kWithContextMap, Context::SizeFor(variadic_part_length), + isolate()->with_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); context->set_scope_info(*scope_info); context->set_previous(*previous); context->set_extension(*extension); - context->set_native_context(previous->native_context()); return context; } @@ -1576,12 +1572,11 @@ Handle Factory::NewBlockContext(Handle previous, scope_info->scope_type() == CLASS_SCOPE); int variadic_part_length = scope_info->ContextLength(); Handle context = NewContext( - RootIndex::kBlockContextMap, Context::SizeFor(variadic_part_length), + isolate()->block_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); context->set_scope_info(*scope_info); context->set_previous(*previous); context->set_extension(*the_hole_value()); - context->set_native_context(previous->native_context()); return context; } @@ -1589,12 +1584,11 @@ Handle Factory::NewBuiltinContext(Handle native_context, int variadic_part_length) { DCHECK_LE(Context::MIN_CONTEXT_SLOTS, variadic_part_length); Handle context = NewContext( - RootIndex::kFunctionContextMap, Context::SizeFor(variadic_part_length), + isolate()->function_context_map(), Context::SizeFor(variadic_part_length), variadic_part_length, AllocationType::kYoung); context->set_scope_info(ReadOnlyRoots(isolate()).empty_scope_info()); context->set_previous(*native_context); context->set_extension(*the_hole_value()); - context->set_native_context(*native_context); return context; } diff --git a/src/heap/factory.h b/src/heap/factory.h index 35de6425c9..3289793584 100644 --- a/src/heap/factory.h +++ b/src/heap/factory.h @@ -1025,7 +1025,7 @@ class V8_EXPORT_PRIVATE Factory { // Allocates new context with given map, sets length and initializes the // after-header part with uninitialized values and leaves the context header // uninitialized. - Handle NewContext(RootIndex map_root_index, int size, + Handle NewContext(Handle map, int size, int variadic_part_length, AllocationType allocation); diff --git a/src/heap/setup-heap-internal.cc b/src/heap/setup-heap-internal.cc index 9f94029af3..52c7e6e814 100644 --- a/src/heap/setup-heap-internal.cc +++ b/src/heap/setup-heap-internal.cc @@ -455,16 +455,6 @@ bool Heap::CreateInitialMaps() { ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, array_list) - ALLOCATE_VARSIZE_MAP(FUNCTION_CONTEXT_TYPE, function_context) - ALLOCATE_VARSIZE_MAP(CATCH_CONTEXT_TYPE, catch_context) - ALLOCATE_VARSIZE_MAP(WITH_CONTEXT_TYPE, with_context) - ALLOCATE_VARSIZE_MAP(DEBUG_EVALUATE_CONTEXT_TYPE, debug_evaluate_context) - ALLOCATE_VARSIZE_MAP(AWAIT_CONTEXT_TYPE, await_context) - ALLOCATE_VARSIZE_MAP(BLOCK_CONTEXT_TYPE, block_context) - ALLOCATE_VARSIZE_MAP(MODULE_CONTEXT_TYPE, module_context) - ALLOCATE_VARSIZE_MAP(NATIVE_CONTEXT_TYPE, native_context) - ALLOCATE_VARSIZE_MAP(EVAL_CONTEXT_TYPE, eval_context) - ALLOCATE_VARSIZE_MAP(SCRIPT_CONTEXT_TYPE, script_context) ALLOCATE_VARSIZE_MAP(SCRIPT_CONTEXT_TABLE_TYPE, script_context_table) ALLOCATE_VARSIZE_MAP(OBJECT_BOILERPLATE_DESCRIPTION_TYPE, diff --git a/src/init/bootstrapper.cc b/src/init/bootstrapper.cc index 148c60d89d..0165fa3737 100644 --- a/src/init/bootstrapper.cc +++ b/src/init/bootstrapper.cc @@ -1170,6 +1170,7 @@ void Genesis::CreateRoots() { // and the global object, but in order to create those, we need the // native context). native_context_ = factory()->NewNativeContext(); + AddToWeakNativeContextList(isolate(), *native_context()); isolate()->set_context(*native_context()); @@ -1438,10 +1439,49 @@ void Genesis::InitializeGlobal(Handle global_object, Factory* factory = isolate_->factory(); - Handle script_context_table = - factory->NewScriptContextTable(); - native_context()->set_script_context_table(*script_context_table); - InstallGlobalThisBinding(); + { // -- C o n t e x t + Handle map = + factory->NewMap(FUNCTION_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_function_context_map(*map); + + map = factory->NewMap(CATCH_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_catch_context_map(*map); + + map = factory->NewMap(WITH_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_with_context_map(*map); + + map = factory->NewMap(DEBUG_EVALUATE_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_debug_evaluate_context_map(*map); + + map = factory->NewMap(BLOCK_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_block_context_map(*map); + + map = factory->NewMap(MODULE_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_module_context_map(*map); + + map = factory->NewMap(AWAIT_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_await_context_map(*map); + + map = factory->NewMap(SCRIPT_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_script_context_map(*map); + + map = factory->NewMap(EVAL_CONTEXT_TYPE, kVariableSizeSentinel); + map->set_native_context(*native_context()); + native_context()->set_eval_context_map(*map); + + Handle script_context_table = + factory->NewScriptContextTable(); + native_context()->set_script_context_table(*script_context_table); + InstallGlobalThisBinding(); + } { // --- O b j e c t --- Handle object_name = factory->Object_string(); diff --git a/src/objects/contexts-inl.h b/src/objects/contexts-inl.h index 669e98591f..2c58122ec3 100644 --- a/src/objects/contexts-inl.h +++ b/src/objects/contexts-inl.h @@ -130,13 +130,7 @@ void Context::set_extension(HeapObject object) { } NativeContext Context::native_context() const { - Object result = get(NATIVE_CONTEXT_INDEX); - DCHECK(IsBootstrappingOrNativeContext(this->GetIsolate(), result)); - return NativeContext::unchecked_cast(result); -} - -void Context::set_native_context(NativeContext context) { - set(NATIVE_CONTEXT_INDEX, context); + return this->map().native_context(); } bool Context::IsFunctionContext() const { diff --git a/src/objects/contexts.cc b/src/objects/contexts.cc index 9dbba06a4d..f0364c2398 100644 --- a/src/objects/contexts.cc +++ b/src/objects/contexts.cc @@ -445,13 +445,6 @@ int Context::IntrinsicIndexForName(const unsigned char* unsigned_string, #ifdef DEBUG -bool Context::IsBootstrappingOrNativeContext(Isolate* isolate, Object object) { - // During bootstrapping we allow all objects to pass as global - // objects. This is necessary to fix circular dependencies. - return isolate->heap()->gc_state() != Heap::NOT_IN_GC || - isolate->bootstrapper()->IsActive() || object.IsNativeContext(); -} - bool Context::IsBootstrappingOrValidParentContext(Object object, Context child) { // During bootstrapping we allow all objects to pass as @@ -474,15 +467,13 @@ void NativeContext::IncrementErrorsThrown() { int NativeContext::GetErrorsThrown() { return errors_thrown().value(); } -STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); +STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); STATIC_ASSERT(NativeContext::kScopeInfoOffset == Context::OffsetOfElementAt(NativeContext::SCOPE_INFO_INDEX)); STATIC_ASSERT(NativeContext::kPreviousOffset == Context::OffsetOfElementAt(NativeContext::PREVIOUS_INDEX)); STATIC_ASSERT(NativeContext::kExtensionOffset == Context::OffsetOfElementAt(NativeContext::EXTENSION_INDEX)); -STATIC_ASSERT(NativeContext::kNativeContextOffset == - Context::OffsetOfElementAt(NativeContext::NATIVE_CONTEXT_INDEX)); STATIC_ASSERT(NativeContext::kStartOfStrongFieldsOffset == Context::OffsetOfElementAt(-1)); diff --git a/src/objects/contexts.h b/src/objects/contexts.h index 7fa988be07..f8c226a9db 100644 --- a/src/objects/contexts.h +++ b/src/objects/contexts.h @@ -194,6 +194,17 @@ enum ContextLookupFlags { V(JS_WEAK_REF_FUNCTION_INDEX, JSFunction, js_weak_ref_fun) \ V(JS_FINALIZATION_GROUP_FUNCTION_INDEX, JSFunction, \ js_finalization_group_fun) \ + /* Context maps */ \ + V(NATIVE_CONTEXT_MAP_INDEX, Map, native_context_map) \ + V(FUNCTION_CONTEXT_MAP_INDEX, Map, function_context_map) \ + V(MODULE_CONTEXT_MAP_INDEX, Map, module_context_map) \ + V(EVAL_CONTEXT_MAP_INDEX, Map, eval_context_map) \ + V(SCRIPT_CONTEXT_MAP_INDEX, Map, script_context_map) \ + V(AWAIT_CONTEXT_MAP_INDEX, Map, await_context_map) \ + V(BLOCK_CONTEXT_MAP_INDEX, Map, block_context_map) \ + V(CATCH_CONTEXT_MAP_INDEX, Map, catch_context_map) \ + V(WITH_CONTEXT_MAP_INDEX, Map, with_context_map) \ + V(DEBUG_EVALUATE_CONTEXT_MAP_INDEX, Map, debug_evaluate_context_map) \ V(MAP_CACHE_INDEX, Object, map_cache) \ V(MAP_KEY_ITERATOR_MAP_INDEX, Map, map_key_iterator_map) \ V(MAP_KEY_VALUE_ITERATOR_MAP_INDEX, Map, map_key_value_iterator_map) \ @@ -513,7 +524,6 @@ class Context : public HeapObject { SCOPE_INFO_INDEX, PREVIOUS_INDEX, EXTENSION_INDEX, - NATIVE_CONTEXT_INDEX, // These slots are only in native contexts. #define NATIVE_CONTEXT_SLOT(index, type, name) index, @@ -589,7 +599,6 @@ class Context : public HeapObject { // Compute the native context. inline NativeContext native_context() const; - inline void set_native_context(NativeContext context); // Predicates for context types. IsNativeContext is already defined on // Object. @@ -667,8 +676,6 @@ class Context : public HeapObject { private: #ifdef DEBUG // Bootstrapping-aware type checks. - V8_EXPORT_PRIVATE static bool IsBootstrappingOrNativeContext(Isolate* isolate, - Object object); static bool IsBootstrappingOrValidParentContext(Object object, Context kid); #endif diff --git a/src/objects/map-inl.h b/src/objects/map-inl.h index 05654e61db..ffd5099067 100644 --- a/src/objects/map-inl.h +++ b/src/objects/map-inl.h @@ -729,8 +729,12 @@ Map Map::ElementsTransitionMap(Isolate* isolate) { ACCESSORS(Map, dependent_code, DependentCode, kDependentCodeOffset) ACCESSORS(Map, prototype_validity_cell, Object, kPrototypeValidityCellOffset) -ACCESSORS(Map, constructor_or_backpointer, Object, - kConstructorOrBackPointerOffset) +ACCESSORS_CHECKED2(Map, constructor_or_backpointer, Object, + kConstructorOrBackPointerOrNativeContextOffset, + !IsContextMap(), value.IsNull() || !IsContextMap()) +ACCESSORS_CHECKED(Map, native_context, NativeContext, + kConstructorOrBackPointerOrNativeContextOffset, + IsContextMap()) bool Map::IsPrototypeValidityCellValid() const { Object validity_cell = prototype_validity_cell(); diff --git a/src/objects/map.h b/src/objects/map.h index 0daadbee08..21ee8a282f 100644 --- a/src/objects/map.h +++ b/src/objects/map.h @@ -105,86 +105,86 @@ using MapHandles = std::vector>; // - How to iterate over an object (for garbage collection) // // Map layout: -// +---------------+---------------------------------------------+ -// | _ Type _ | _ Description _ | -// +---------------+---------------------------------------------+ -// | TaggedPointer | map - Always a pointer to the MetaMap root | -// +---------------+---------------------------------------------+ -// | Int | The first int field | -// `---+----------+---------------------------------------------+ -// | Byte | [instance_size] | -// +----------+---------------------------------------------+ -// | Byte | If Map for a primitive type: | -// | | native context index for constructor fn | -// | | If Map for an Object type: | -// | | inobject properties start offset in words | -// +----------+---------------------------------------------+ -// | Byte | [used_or_unused_instance_size_in_words] | -// | | For JSObject in fast mode this byte encodes | -// | | the size of the object that includes only | -// | | the used property fields or the slack size | -// | | in properties backing store. | -// +----------+---------------------------------------------+ -// | Byte | [visitor_id] | -// +----+----------+---------------------------------------------+ -// | Int | The second int field | -// `---+----------+---------------------------------------------+ -// | Short | [instance_type] | -// +----------+---------------------------------------------+ -// | Byte | [bit_field] | -// | | - has_non_instance_prototype (bit 0) | -// | | - is_callable (bit 1) | -// | | - has_named_interceptor (bit 2) | -// | | - has_indexed_interceptor (bit 3) | -// | | - is_undetectable (bit 4) | -// | | - is_access_check_needed (bit 5) | -// | | - is_constructor (bit 6) | -// | | - has_prototype_slot (bit 7) | -// +----------+---------------------------------------------+ -// | Byte | [bit_field2] | -// | | - new_target_is_base (bit 0) | -// | | - is_immutable_proto (bit 1) | -// | | - unused bit (bit 2) | -// | | - elements_kind (bits 3..7) | -// +----+----------+---------------------------------------------+ -// | Int | [bit_field3] | -// | | - enum_length (bit 0..9) | -// | | - number_of_own_descriptors (bit 10..19) | -// | | - is_prototype_map (bit 20) | -// | | - is_dictionary_map (bit 21) | -// | | - owns_descriptors (bit 22) | -// | | - is_in_retained_map_list (bit 23) | -// | | - is_deprecated (bit 24) | -// | | - is_unstable (bit 25) | -// | | - is_migration_target (bit 26) | -// | | - is_extensible (bit 28) | -// | | - may_have_interesting_symbols (bit 28) | -// | | - construction_counter (bit 29..31) | -// | | | -// +*************************************************************+ -// | Int | On systems with 64bit pointer types, there | -// | | is an unused 32bits after bit_field3 | -// +*************************************************************+ -// | TaggedPointer | [prototype] | -// +---------------+---------------------------------------------+ -// | TaggedPointer | [constructor_or_backpointer] | -// +---------------+---------------------------------------------+ -// | TaggedPointer | [instance_descriptors] | -// +*************************************************************+ -// ! TaggedPointer ! [layout_descriptors] ! -// ! ! Field is only present if compile-time flag ! -// ! ! FLAG_unbox_double_fields is enabled ! -// ! ! (basically on 64 bit architectures) ! -// +*************************************************************+ -// | TaggedPointer | [dependent_code] | -// +---------------+---------------------------------------------+ -// | TaggedPointer | [prototype_validity_cell] | -// +---------------+---------------------------------------------+ -// | TaggedPointer | If Map is a prototype map: | -// | | [prototype_info] | -// | | Else: | -// | | [raw_transitions] | -// +---------------+---------------------------------------------+ +// +---------------+------------------------------------------------+ +// | _ Type _ | _ Description _ | +// +---------------+------------------------------------------------+ +// | TaggedPointer | map - Always a pointer to the MetaMap root | +// +---------------+------------------------------------------------+ +// | Int | The first int field | +// `---+----------+------------------------------------------------+ +// | Byte | [instance_size] | +// +----------+------------------------------------------------+ +// | Byte | If Map for a primitive type: | +// | | native context index for constructor fn | +// | | If Map for an Object type: | +// | | inobject properties start offset in words | +// +----------+------------------------------------------------+ +// | Byte | [used_or_unused_instance_size_in_words] | +// | | For JSObject in fast mode this byte encodes | +// | | the size of the object that includes only | +// | | the used property fields or the slack size | +// | | in properties backing store. | +// +----------+------------------------------------------------+ +// | Byte | [visitor_id] | +// +----+----------+------------------------------------------------+ +// | Int | The second int field | +// `---+----------+------------------------------------------------+ +// | Short | [instance_type] | +// +----------+------------------------------------------------+ +// | Byte | [bit_field] | +// | | - has_non_instance_prototype (bit 0) | +// | | - is_callable (bit 1) | +// | | - has_named_interceptor (bit 2) | +// | | - has_indexed_interceptor (bit 3) | +// | | - is_undetectable (bit 4) | +// | | - is_access_check_needed (bit 5) | +// | | - is_constructor (bit 6) | +// | | - has_prototype_slot (bit 7) | +// +----------+------------------------------------------------+ +// | Byte | [bit_field2] | +// | | - new_target_is_base (bit 0) | +// | | - is_immutable_proto (bit 1) | +// | | - unused bit (bit 2) | +// | | - elements_kind (bits 3..7) | +// +----+----------+------------------------------------------------+ +// | Int | [bit_field3] | +// | | - enum_length (bit 0..9) | +// | | - number_of_own_descriptors (bit 10..19) | +// | | - is_prototype_map (bit 20) | +// | | - is_dictionary_map (bit 21) | +// | | - owns_descriptors (bit 22) | +// | | - is_in_retained_map_list (bit 23) | +// | | - is_deprecated (bit 24) | +// | | - is_unstable (bit 25) | +// | | - is_migration_target (bit 26) | +// | | - is_extensible (bit 28) | +// | | - may_have_interesting_symbols (bit 28) | +// | | - construction_counter (bit 29..31) | +// | | | +// +****************************************************************+ +// | Int | On systems with 64bit pointer types, there | +// | | is an unused 32bits after bit_field3 | +// +****************************************************************+ +// | TaggedPointer | [prototype] | +// +---------------+------------------------------------------------+ +// | TaggedPointer | [constructor_or_backpointer_or_native_context] | +// +---------------+------------------------------------------------+ +// | TaggedPointer | [instance_descriptors] | +// +****************************************************************+ +// ! TaggedPointer ! [layout_descriptors] ! +// ! ! Field is only present if compile-time flag ! +// ! ! FLAG_unbox_double_fields is enabled ! +// ! ! (basically on 64 bit architectures) ! +// +****************************************************************+ +// | TaggedPointer | [dependent_code] | +// +---------------+------------------------------------------------+ +// | TaggedPointer | [prototype_validity_cell] | +// +---------------+------------------------------------------------+ +// | TaggedPointer | If Map is a prototype map: | +// | | [prototype_info] | +// | | Else: | +// | | [raw_transitions] | +// +---------------+------------------------------------------------+ class Map : public HeapObject { public: @@ -581,7 +581,9 @@ class Map : public HeapObject { // back pointer chain until they find the map holding their constructor. // Returns null_value if there's neither a constructor function nor a // FunctionTemplateInfo available. + // The field also overlaps with the native context pointer for context maps. DECL_ACCESSORS(constructor_or_backpointer, Object) + DECL_ACCESSORS(native_context, NativeContext) DECL_GETTER(GetConstructor, Object) DECL_GETTER(GetFunctionTemplateInfo, FunctionTemplateInfo) inline void SetConstructor(Object constructor, diff --git a/src/profiler/heap-snapshot-generator.cc b/src/profiler/heap-snapshot-generator.cc index 42e7220702..b11f2822c9 100644 --- a/src/profiler/heap-snapshot-generator.cc +++ b/src/profiler/heap-snapshot-generator.cc @@ -992,9 +992,6 @@ void V8HeapExplorer::ExtractContextReferences(HeapEntry* entry, SetInternalReference(entry, "extension", context.get(Context::EXTENSION_INDEX), FixedArray::OffsetOfElementAt(Context::EXTENSION_INDEX)); - SetInternalReference( - entry, "native_context", context.get(Context::NATIVE_CONTEXT_INDEX), - FixedArray::OffsetOfElementAt(Context::NATIVE_CONTEXT_INDEX)); if (context.IsNativeContext()) { TagObject(context.normalized_map_cache(), "(context norm. map cache)"); @@ -1064,19 +1061,26 @@ void V8HeapExplorer::ExtractMapReferences(HeapEntry* entry, Map map) { SetInternalReference(entry, "layout_descriptor", map.layout_descriptor(), Map::kLayoutDescriptorOffset); } - Object constructor_or_backpointer = map.constructor_or_backpointer(); - if (constructor_or_backpointer.IsMap()) { - TagObject(constructor_or_backpointer, "(back pointer)"); - SetInternalReference(entry, "back_pointer", constructor_or_backpointer, - Map::kConstructorOrBackPointerOffset); - } else if (constructor_or_backpointer.IsFunctionTemplateInfo()) { - TagObject(constructor_or_backpointer, "(constructor function data)"); - SetInternalReference(entry, "constructor_function_data", - constructor_or_backpointer, - Map::kConstructorOrBackPointerOffset); + if (map.IsContextMap()) { + Object native_context = map.native_context(); + TagObject(native_context, "(native context)"); + SetInternalReference(entry, "native_context", native_context, + Map::kConstructorOrBackPointerOrNativeContextOffset); } else { - SetInternalReference(entry, "constructor", constructor_or_backpointer, - Map::kConstructorOrBackPointerOffset); + Object constructor_or_backpointer = map.constructor_or_backpointer(); + if (constructor_or_backpointer.IsMap()) { + TagObject(constructor_or_backpointer, "(back pointer)"); + SetInternalReference(entry, "back_pointer", constructor_or_backpointer, + Map::kConstructorOrBackPointerOrNativeContextOffset); + } else if (constructor_or_backpointer.IsFunctionTemplateInfo()) { + TagObject(constructor_or_backpointer, "(constructor function data)"); + SetInternalReference(entry, "constructor_function_data", + constructor_or_backpointer, + Map::kConstructorOrBackPointerOrNativeContextOffset); + } else { + SetInternalReference(entry, "constructor", constructor_or_backpointer, + Map::kConstructorOrBackPointerOrNativeContextOffset); + } } TagObject(map.dependent_code(), "(dependent code)"); SetInternalReference(entry, "dependent_code", map.dependent_code(), diff --git a/src/profiler/tick-sample.cc b/src/profiler/tick-sample.cc index 5c2f2d63ce..6e2b322e9b 100644 --- a/src/profiler/tick-sample.cc +++ b/src/profiler/tick-sample.cc @@ -148,35 +148,17 @@ bool SimulatorHelper::FillRegisters(Isolate* isolate, // context is in an inconsistent state. Address ScrapeNativeContextAddress(Heap* heap, Address context_address) { DCHECK_EQ(heap->gc_state(), Heap::NOT_IN_GC); - - if (!HAS_STRONG_HEAP_OBJECT_TAG(context_address)) return kNullAddress; - - if (heap->memory_allocator()->IsOutsideAllocatedSpace(context_address)) - return kNullAddress; - - // Note that once a native context has been assigned to a context, the slot - // is no longer mutated except during pointer updates / evictions. Since - // pointer updates exclusively occur on the main thread, and we don't record - // TickSamples when the main thread's VM state is GC, the only other - // situation where the address here would be invalid is if it's being - // reassigned -- which isn't possible. - int native_context_offset = - i::Context::SlotOffset(i::Context::NATIVE_CONTEXT_INDEX); - i::Address native_context_slot_address = - context_address + native_context_offset; - - // By the prior hypothesis, the indirect native context address should always - // be valid. - if (heap->memory_allocator()->IsOutsideAllocatedSpace( - native_context_slot_address)) { - DCHECK(false); - return kNullAddress; - } - - i::ObjectSlot native_context_slot(native_context_slot_address); - i::Object native_context = native_context_slot.Relaxed_Load(); - - return native_context.ptr(); +#if !defined(V8_TARGET_ARCH_X64) && !defined(V8_TARGET_ARCH_IA32) + // Only on x64 and ia32 are we sure that we're not setting up a frame when + // this function is called. + return kNullAddress; +#else + i::Object object(context_address); + // The context slot may contain a smi-ish value as a frame marker. + if (!object.IsHeapObject()) return kNullAddress; + i::Context context = i::Context::cast(object); + return context.map().native_context().ptr(); +#endif } } // namespace diff --git a/src/roots/roots.h b/src/roots/roots.h index c262f63928..c57f26441d 100644 --- a/src/roots/roots.h +++ b/src/roots/roots.h @@ -54,12 +54,12 @@ class Symbol; V(Map, scope_info_map, ScopeInfoMap) \ V(Map, shared_function_info_map, SharedFunctionInfoMap) \ V(Map, code_map, CodeMap) \ - V(Map, function_context_map, FunctionContextMap) \ V(Map, cell_map, CellMap) \ V(Map, global_property_cell_map, GlobalPropertyCellMap) \ V(Map, foreign_map, ForeignMap) \ V(Map, heap_number_map, HeapNumberMap) \ V(Map, transition_array_map, TransitionArrayMap) \ + V(Map, thin_one_byte_string_map, ThinOneByteStringMap) \ /* TODO(mythria): Once lazy feedback lands, check if feedback vector map */ \ /* is still a popular map */ \ V(Map, feedback_vector_map, FeedbackVectorMap) \ @@ -73,18 +73,8 @@ class Symbol; V(Oddball, termination_exception, TerminationException) \ V(Oddball, optimized_out, OptimizedOut) \ V(Oddball, stale_register, StaleRegister) \ - /* Context maps */ \ - V(Map, native_context_map, NativeContextMap) \ - V(Map, module_context_map, ModuleContextMap) \ - V(Map, eval_context_map, EvalContextMap) \ - V(Map, script_context_map, ScriptContextMap) \ - V(Map, await_context_map, AwaitContextMap) \ - V(Map, block_context_map, BlockContextMap) \ - V(Map, catch_context_map, CatchContextMap) \ - V(Map, with_context_map, WithContextMap) \ - V(Map, debug_evaluate_context_map, DebugEvaluateContextMap) \ - V(Map, script_context_table_map, ScriptContextTableMap) \ /* Maps */ \ + V(Map, script_context_table_map, ScriptContextTableMap) \ V(Map, closure_feedback_cell_array_map, ClosureFeedbackCellArrayMap) \ V(Map, feedback_metadata_map, FeedbackMetadataArrayMap) \ V(Map, array_list_map, ArrayListMap) \ @@ -133,7 +123,6 @@ class Symbol; V(Map, string_map, StringMap) \ V(Map, cons_one_byte_string_map, ConsOneByteStringMap) \ V(Map, cons_string_map, ConsStringMap) \ - V(Map, thin_one_byte_string_map, ThinOneByteStringMap) \ V(Map, thin_string_map, ThinStringMap) \ V(Map, sliced_string_map, SlicedStringMap) \ V(Map, sliced_one_byte_string_map, SlicedOneByteStringMap) \ diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status index 430ca647b7..830db79282 100644 --- a/test/cctest/cctest.status +++ b/test/cctest/cctest.status @@ -122,6 +122,14 @@ 'test-parsing/ObjectRestNegativeTestSlow': [PASS, ['mode == debug', SKIP]], }], # ALWAYS +############################################################################## +['arch != ia32 and arch != x64', { + # BUG(v8:9860). We can only safely read the native context for a frame on + # ia32 and x64. + 'test-cpu-profiler/ContextFilterMovedNativeContext': [FAIL], + 'test-cpu-profiler/ContextIsolation': [FAIL], +}], + ############################################################################## ['arch == arm64', { 'test-api/Bug618': [PASS], diff --git a/test/cctest/compiler/test-js-context-specialization.cc b/test/cctest/compiler/test-js-context-specialization.cc index 1b136873b5..a2513be9c2 100644 --- a/test/cctest/compiler/test-js-context-specialization.cc +++ b/test/cctest/compiler/test-js-context-specialization.cc @@ -110,7 +110,7 @@ void ContextSpecializationTester::CheckContextInputAndDepthChanges( CHECK_EQ(new_access.immutable(), access.immutable()); } -static const int slot_index = Context::NATIVE_CONTEXT_INDEX; +static const int slot_index = Context::PREVIOUS_INDEX; TEST(ReduceJSLoadContext0) { ContextSpecializationTester t(Nothing()); @@ -125,7 +125,7 @@ TEST(ReduceJSLoadContext0) { subcontext2->set_previous(*subcontext1); subcontext1->set_previous(*native); Handle expected = t.factory()->InternalizeUtf8String("gboy!"); - const int slot = Context::NATIVE_CONTEXT_INDEX; + const int slot = Context::PREVIOUS_INDEX; native->set(slot, *expected); Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native)); @@ -269,8 +269,8 @@ TEST(ReduceJSLoadContext2) { Handle context_object0 = t.factory()->NewNativeContext(); Handle context_object1 = t.factory()->NewNativeContext(); context_object1->set_previous(*context_object0); - context_object0->set(slot_index, *slot_value0); - context_object1->set(slot_index, *slot_value1); + context_object0->set(Context::EXTENSION_INDEX, *slot_value0); + context_object1->set(Context::EXTENSION_INDEX, *slot_value1); Node* context0 = t.jsgraph()->Constant(ObjectRef(t.broker(), context_object1)); @@ -311,7 +311,8 @@ TEST(ReduceJSLoadContext2) { { Node* load = t.graph()->NewNode( - t.javascript()->LoadContext(2, slot_index, true), context2, start); + t.javascript()->LoadContext(2, Context::EXTENSION_INDEX, true), + context2, start); t.CheckChangesToValue(load, slot_value1); } @@ -323,7 +324,8 @@ TEST(ReduceJSLoadContext2) { { Node* load = t.graph()->NewNode( - t.javascript()->LoadContext(3, slot_index, true), context2, start); + t.javascript()->LoadContext(3, Context::EXTENSION_INDEX, true), + context2, start); t.CheckChangesToValue(load, slot_value0); } } @@ -344,8 +346,8 @@ TEST(ReduceJSLoadContext3) { Handle context_object0 = factory->NewNativeContext(); Handle context_object1 = factory->NewNativeContext(); context_object1->set_previous(*context_object0); - context_object0->set(slot_index, *slot_value0); - context_object1->set(slot_index, *slot_value1); + context_object0->set(Context::EXTENSION_INDEX, *slot_value0); + context_object1->set(Context::EXTENSION_INDEX, *slot_value1); ContextSpecializationTester t(Just(OuterContext(context_object1, 0))); @@ -394,7 +396,8 @@ TEST(ReduceJSLoadContext3) { { Node* load = t.graph()->NewNode( - t.javascript()->LoadContext(2, slot_index, true), context2, start); + t.javascript()->LoadContext(2, Context::EXTENSION_INDEX, true), + context2, start); t.CheckChangesToValue(load, slot_value1); } @@ -406,7 +409,8 @@ TEST(ReduceJSLoadContext3) { { Node* load = t.graph()->NewNode( - t.javascript()->LoadContext(3, slot_index, true), context2, start); + t.javascript()->LoadContext(3, Context::EXTENSION_INDEX, true), + context2, start); t.CheckChangesToValue(load, slot_value0); } } @@ -424,7 +428,7 @@ TEST(ReduceJSStoreContext0) { subcontext2->set_previous(*subcontext1); subcontext1->set_previous(*native); Handle expected = t.factory()->InternalizeUtf8String("gboy!"); - const int slot = Context::NATIVE_CONTEXT_INDEX; + const int slot = Context::PREVIOUS_INDEX; native->set(slot, *expected); Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native)); @@ -533,8 +537,8 @@ TEST(ReduceJSStoreContext2) { Handle context_object0 = t.factory()->NewNativeContext(); Handle context_object1 = t.factory()->NewNativeContext(); context_object1->set_previous(*context_object0); - context_object0->set(slot_index, *slot_value0); - context_object1->set(slot_index, *slot_value1); + context_object0->set(Context::EXTENSION_INDEX, *slot_value0); + context_object1->set(Context::EXTENSION_INDEX, *slot_value1); Node* context0 = t.jsgraph()->Constant(ObjectRef(t.broker(), context_object1)); @@ -544,30 +548,30 @@ TEST(ReduceJSStoreContext2) { t.graph()->NewNode(create_function_context, context1, start, start); { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(0, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(0, Context::EXTENSION_INDEX), context2, + context2, start, start); CHECK(!t.spec()->Reduce(store).Changed()); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(1, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(1, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context1, 0); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(2, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(2, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context0, 0); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(3, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(3, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context_object0, 0); } } @@ -582,8 +586,8 @@ TEST(ReduceJSStoreContext3) { Handle context_object0 = factory->NewNativeContext(); Handle context_object1 = factory->NewNativeContext(); context_object1->set_previous(*context_object0); - context_object0->set(slot_index, *slot_value0); - context_object1->set(slot_index, *slot_value1); + context_object0->set(Context::EXTENSION_INDEX, *slot_value0); + context_object1->set(Context::EXTENSION_INDEX, *slot_value1); ContextSpecializationTester t(Just(OuterContext(context_object1, 0))); @@ -601,30 +605,30 @@ TEST(ReduceJSStoreContext3) { t.graph()->NewNode(create_function_context, context1, start, start); { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(0, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(0, Context::EXTENSION_INDEX), context2, + context2, start, start); CHECK(!t.spec()->Reduce(store).Changed()); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(1, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(1, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context1, 0); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(2, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(2, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context_object1, 0); } { - Node* store = - t.graph()->NewNode(t.javascript()->StoreContext(3, slot_index), - context2, context2, start, start); + Node* store = t.graph()->NewNode( + t.javascript()->StoreContext(3, Context::EXTENSION_INDEX), context2, + context2, start, start); t.CheckContextInputAndDepthChanges(store, context_object0, 0); } } diff --git a/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden b/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden index 0e7cac1ad9..8540fedc43 100644 --- a/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden +++ b/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden @@ -45,7 +45,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(Mov), R(0), R(6), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), @@ -152,7 +152,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(Mov), R(0), R(6), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), @@ -332,7 +332,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(7), B(PushContext), R(8), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(10), B(Mov), R(0), R(9), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(9), U8(2), @@ -553,7 +553,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(Mov), R(0), R(6), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), diff --git a/test/cctest/interpreter/bytecode_expectations/AsyncModules.golden b/test/cctest/interpreter/bytecode_expectations/AsyncModules.golden index 7cbe661b94..2702336be4 100644 --- a/test/cctest/interpreter/bytecode_expectations/AsyncModules.golden +++ b/test/cctest/interpreter/bytecode_expectations/AsyncModules.golden @@ -67,7 +67,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(3), B(PushContext), R(4), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(6), B(LdaTrue), B(Star), R(7), @@ -149,7 +149,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(3), B(PushContext), R(4), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(6), B(LdaTrue), B(Star), R(7), @@ -237,7 +237,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), @@ -326,7 +326,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), diff --git a/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden b/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden index 488f7a7ebd..58c2a86420 100644 --- a/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden +++ b/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden @@ -703,19 +703,19 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(2), /* 73 S> */ B(LdaSmi), I8(1), - /* 73 E> */ B(StaCurrentContextSlot), U8(4), + /* 73 E> */ B(StaCurrentContextSlot), U8(3), /* 102 S> */ B(Mov), R(2), R(1), - /* 106 S> */ B(LdaCurrentContextSlot), U8(4), + /* 106 S> */ B(LdaCurrentContextSlot), U8(3), B(JumpIfToBooleanFalse), U8(6), /* 113 S> */ B(PopContext), R(3), B(Jump), U8(10), - /* 126 S> */ B(LdaCurrentContextSlot), U8(4), + /* 126 S> */ B(LdaCurrentContextSlot), U8(3), B(Inc), U8(0), - /* 127 E> */ B(StaCurrentContextSlot), U8(4), + /* 127 E> */ B(StaCurrentContextSlot), U8(3), B(PopContext), R(3), B(JumpLoop), U8(41), I8(0), B(LdaUndefined), diff --git a/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden b/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden index b6184f084f..4bc0b3aad7 100644 --- a/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden +++ b/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden @@ -107,11 +107,11 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(1), /* 53 S> */ B(LdaSmi), I8(10), - /* 53 E> */ B(StaCurrentContextSlot), U8(4), + /* 53 E> */ B(StaCurrentContextSlot), U8(3), /* 85 S> */ B(Mov), R(1), R(0), B(Ldar), R(1), /* 88 S> */ B(Jump), U8(2), @@ -146,28 +146,28 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), B(CreateBlockContext), U8(1), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateClosure), U8(2), U8(0), U8(2), B(Star), R(1), /* 76 S> */ B(LdaSmi), I8(2), - /* 76 E> */ B(StaCurrentContextSlot), U8(4), + /* 76 E> */ B(StaCurrentContextSlot), U8(3), /* 113 S> */ B(Mov), R(1), R(0), - /* 118 S> */ B(LdaCurrentContextSlot), U8(4), + /* 118 S> */ B(LdaCurrentContextSlot), U8(3), B(JumpIfToBooleanFalse), U8(6), /* 125 S> */ B(PopContext), R(3), B(Jump), U8(8), /* 142 S> */ B(LdaSmi), I8(3), - /* 144 E> */ B(StaCurrentContextSlot), U8(4), + /* 144 E> */ B(StaCurrentContextSlot), U8(3), B(PopContext), R(3), /* 155 S> */ B(LdaSmi), I8(4), - /* 157 E> */ B(StaCurrentContextSlot), U8(4), + /* 157 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 162 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden b/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden index b06520351b..fcad4894f0 100644 --- a/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden +++ b/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden @@ -16,11 +16,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 36 E> */ B(StaLookupSlot), U8(2), U8(0), diff --git a/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden b/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden index cd439d5d14..74db94f43f 100644 --- a/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden +++ b/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden @@ -100,9 +100,9 @@ bytecodes: [ B(PushContext), R(1), /* 30 E> */ B(StackCheck), /* 43 S> */ B(LdaConstant), U8(1), - /* 43 E> */ B(StaCurrentContextSlot), U8(4), + /* 43 E> */ B(StaCurrentContextSlot), U8(3), /* 57 S> */ B(LdaConstant), U8(2), - /* 57 E> */ B(StaCurrentContextSlot), U8(5), + /* 57 E> */ B(StaCurrentContextSlot), U8(4), B(CreateBlockContext), U8(3), B(PushContext), R(2), B(LdaTheHole), @@ -111,11 +111,11 @@ bytecodes: [ B(Star), R(3), B(LdaConstant), U8(4), B(Star), R(4), - /* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(4), U8(0), + /* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(3), U8(0), B(ToName), R(7), B(CreateClosure), U8(6), U8(1), U8(2), B(Star), R(8), - /* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(5), U8(0), + /* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(4), U8(0), B(ToName), R(9), B(LdaConstant), U8(7), B(TestEqualStrict), R(9), U8(0), @@ -159,7 +159,7 @@ bytecodes: [ B(PushContext), R(1), /* 30 E> */ B(StackCheck), /* 46 S> */ B(LdaZero), - /* 46 E> */ B(StaCurrentContextSlot), U8(4), + /* 46 E> */ B(StaCurrentContextSlot), U8(3), B(CreateBlockContext), U8(1), B(PushContext), R(2), B(LdaTheHole), diff --git a/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden b/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden index c4b600629c..0901d36522 100644 --- a/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden +++ b/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden @@ -108,11 +108,11 @@ bytecodes: [ B(PushContext), R(0), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2), - /* 75 S> */ B(LdaCurrentContextSlot), U8(4), + /* 75 S> */ B(LdaCurrentContextSlot), U8(3), B(BitwiseOrSmi), I8(24), U8(0), - /* 77 E> */ B(StaCurrentContextSlot), U8(4), + /* 77 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 84 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden b/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden index f35ff24b39..1f632e5910 100644 --- a/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden +++ b/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden @@ -16,10 +16,10 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 44 S> */ B(LdaSmi), I8(10), - /* 44 E> */ B(StaCurrentContextSlot), U8(4), + /* 44 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 74 S> */ B(Return), ] @@ -40,11 +40,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 44 S> */ B(LdaSmi), I8(10), - /* 44 E> */ B(StaCurrentContextSlot), U8(4), - /* 74 S> */ B(LdaImmutableCurrentContextSlot), U8(4), + /* 44 E> */ B(StaCurrentContextSlot), U8(3), + /* 74 S> */ B(LdaImmutableCurrentContextSlot), U8(3), /* 83 S> */ B(Return), ] constant pool: [ @@ -64,14 +64,14 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 44 S> */ B(LdaSmi), I8(20), B(Star), R(1), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), /* 47 E> */ B(ThrowReferenceErrorIfHole), U8(1), B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), - /* 44 E> */ B(StaCurrentContextSlot), U8(4), + /* 44 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 80 S> */ B(Return), ] @@ -93,10 +93,10 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 44 S> */ B(LdaSmi), I8(10), - /* 44 E> */ B(StaCurrentContextSlot), U8(4), + /* 44 E> */ B(StaCurrentContextSlot), U8(3), /* 48 S> */ B(LdaSmi), I8(20), /* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), B(LdaUndefined), diff --git a/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden b/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden index 6e9969db07..5ba5df57c2 100644 --- a/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden +++ b/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden @@ -18,7 +18,7 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 10 E> */ B(StackCheck), /* 19 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 51 S> */ B(Return), @@ -42,11 +42,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(1), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 10 E> */ B(StackCheck), /* 27 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(0), - /* 53 S> */ B(LdaCurrentContextSlot), U8(4), + /* 53 S> */ B(LdaCurrentContextSlot), U8(3), /* 65 S> */ B(Return), ] constant pool: [ @@ -68,9 +68,9 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(2), B(PushContext), R(0), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(5), - B(Ldar), R(arg2), B(StaCurrentContextSlot), U8(4), + B(Ldar), R(arg2), + B(StaCurrentContextSlot), U8(3), /* 10 E> */ B(StackCheck), /* 29 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 60 S> */ B(Return), @@ -95,7 +95,7 @@ bytecodes: [ B(PushContext), R(0), /* 10 E> */ B(StackCheck), /* 26 S> */ B(Ldar), R(this), - /* 26 E> */ B(StaCurrentContextSlot), U8(4), + /* 26 E> */ B(StaCurrentContextSlot), U8(3), /* 32 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 64 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden b/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden index 2161a38a50..b3549da48f 100644 --- a/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden +++ b/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden @@ -38,7 +38,7 @@ bytecodes: [ B(PushContext), R(0), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 74 S> */ B(Return), ] @@ -61,9 +61,9 @@ bytecodes: [ B(PushContext), R(0), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 53 S> */ B(LdaSmi), I8(2), - /* 53 E> */ B(StaCurrentContextSlot), U8(5), + /* 53 E> */ B(StaCurrentContextSlot), U8(4), /* 56 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 91 S> */ B(Return), ] @@ -88,7 +88,7 @@ bytecodes: [ /* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(1), /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0), - /* 68 S> */ B(LdaCurrentContextSlot), U8(4), + /* 68 S> */ B(LdaCurrentContextSlot), U8(3), /* 77 S> */ B(Return), ] constant pool: [ @@ -111,16 +111,16 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 56 S> */ B(LdaSmi), I8(1), - /* 56 E> */ B(StaCurrentContextSlot), U8(4), + /* 56 E> */ B(StaCurrentContextSlot), U8(3), B(CreateBlockContext), U8(1), B(PushContext), R(1), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 69 S> */ B(LdaSmi), I8(2), - /* 69 E> */ B(StaCurrentContextSlot), U8(4), + /* 69 E> */ B(StaCurrentContextSlot), U8(3), /* 72 S> */ B(CreateClosure), U8(2), U8(0), U8(2), /* 101 S> */ B(Return), ] @@ -385,530 +385,533 @@ snippet: " var a1143 = 0; var a1144 = 0; var a1145 = 0; + var a1146 = 0; eval(); var b = 100; return b " frame size: 3 parameter count: 1 -bytecode array length: 788 +bytecode array length: 791 bytecodes: [ - B(CreateFunctionContext), U8(0), U8(254), + B(CreateFunctionContext), U8(0), U8(255), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateUnmappedArguments), B(Wide), B(StaCurrentContextSlot), U16(257), B(Ldar), R(0), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 30 E> */ B(StackCheck), /* 59 S> */ B(LdaZero), - /* 59 E> */ B(StaCurrentContextSlot), U8(6), + /* 59 E> */ B(StaCurrentContextSlot), U8(5), /* 73 S> */ B(LdaZero), - /* 73 E> */ B(StaCurrentContextSlot), U8(7), + /* 73 E> */ B(StaCurrentContextSlot), U8(6), /* 87 S> */ B(LdaZero), - /* 87 E> */ B(StaCurrentContextSlot), U8(8), + /* 87 E> */ B(StaCurrentContextSlot), U8(7), /* 101 S> */ B(LdaZero), - /* 101 E> */ B(StaCurrentContextSlot), U8(9), + /* 101 E> */ B(StaCurrentContextSlot), U8(8), /* 115 S> */ B(LdaZero), - /* 115 E> */ B(StaCurrentContextSlot), U8(10), + /* 115 E> */ B(StaCurrentContextSlot), U8(9), /* 129 S> */ B(LdaZero), - /* 129 E> */ B(StaCurrentContextSlot), U8(11), + /* 129 E> */ B(StaCurrentContextSlot), U8(10), /* 143 S> */ B(LdaZero), - /* 143 E> */ B(StaCurrentContextSlot), U8(12), + /* 143 E> */ B(StaCurrentContextSlot), U8(11), /* 157 S> */ B(LdaZero), - /* 157 E> */ B(StaCurrentContextSlot), U8(13), + /* 157 E> */ B(StaCurrentContextSlot), U8(12), /* 171 S> */ B(LdaZero), - /* 171 E> */ B(StaCurrentContextSlot), U8(14), + /* 171 E> */ B(StaCurrentContextSlot), U8(13), /* 185 S> */ B(LdaZero), - /* 185 E> */ B(StaCurrentContextSlot), U8(15), + /* 185 E> */ B(StaCurrentContextSlot), U8(14), /* 199 S> */ B(LdaZero), - /* 199 E> */ B(StaCurrentContextSlot), U8(16), + /* 199 E> */ B(StaCurrentContextSlot), U8(15), /* 213 S> */ B(LdaZero), - /* 213 E> */ B(StaCurrentContextSlot), U8(17), + /* 213 E> */ B(StaCurrentContextSlot), U8(16), /* 227 S> */ B(LdaZero), - /* 227 E> */ B(StaCurrentContextSlot), U8(18), + /* 227 E> */ B(StaCurrentContextSlot), U8(17), /* 241 S> */ B(LdaZero), - /* 241 E> */ B(StaCurrentContextSlot), U8(19), + /* 241 E> */ B(StaCurrentContextSlot), U8(18), /* 255 S> */ B(LdaZero), - /* 255 E> */ B(StaCurrentContextSlot), U8(20), + /* 255 E> */ B(StaCurrentContextSlot), U8(19), /* 269 S> */ B(LdaZero), - /* 269 E> */ B(StaCurrentContextSlot), U8(21), + /* 269 E> */ B(StaCurrentContextSlot), U8(20), /* 283 S> */ B(LdaZero), - /* 283 E> */ B(StaCurrentContextSlot), U8(22), + /* 283 E> */ B(StaCurrentContextSlot), U8(21), /* 297 S> */ B(LdaZero), - /* 297 E> */ B(StaCurrentContextSlot), U8(23), + /* 297 E> */ B(StaCurrentContextSlot), U8(22), /* 311 S> */ B(LdaZero), - /* 311 E> */ B(StaCurrentContextSlot), U8(24), + /* 311 E> */ B(StaCurrentContextSlot), U8(23), /* 325 S> */ B(LdaZero), - /* 325 E> */ B(StaCurrentContextSlot), U8(25), + /* 325 E> */ B(StaCurrentContextSlot), U8(24), /* 339 S> */ B(LdaZero), - /* 339 E> */ B(StaCurrentContextSlot), U8(26), + /* 339 E> */ B(StaCurrentContextSlot), U8(25), /* 353 S> */ B(LdaZero), - /* 353 E> */ B(StaCurrentContextSlot), U8(27), + /* 353 E> */ B(StaCurrentContextSlot), U8(26), /* 367 S> */ B(LdaZero), - /* 367 E> */ B(StaCurrentContextSlot), U8(28), + /* 367 E> */ B(StaCurrentContextSlot), U8(27), /* 381 S> */ B(LdaZero), - /* 381 E> */ B(StaCurrentContextSlot), U8(29), + /* 381 E> */ B(StaCurrentContextSlot), U8(28), /* 395 S> */ B(LdaZero), - /* 395 E> */ B(StaCurrentContextSlot), U8(30), + /* 395 E> */ B(StaCurrentContextSlot), U8(29), /* 409 S> */ B(LdaZero), - /* 409 E> */ B(StaCurrentContextSlot), U8(31), + /* 409 E> */ B(StaCurrentContextSlot), U8(30), /* 423 S> */ B(LdaZero), - /* 423 E> */ B(StaCurrentContextSlot), U8(32), + /* 423 E> */ B(StaCurrentContextSlot), U8(31), /* 437 S> */ B(LdaZero), - /* 437 E> */ B(StaCurrentContextSlot), U8(33), + /* 437 E> */ B(StaCurrentContextSlot), U8(32), /* 451 S> */ B(LdaZero), - /* 451 E> */ B(StaCurrentContextSlot), U8(34), + /* 451 E> */ B(StaCurrentContextSlot), U8(33), /* 465 S> */ B(LdaZero), - /* 465 E> */ B(StaCurrentContextSlot), U8(35), + /* 465 E> */ B(StaCurrentContextSlot), U8(34), /* 479 S> */ B(LdaZero), - /* 479 E> */ B(StaCurrentContextSlot), U8(36), + /* 479 E> */ B(StaCurrentContextSlot), U8(35), /* 493 S> */ B(LdaZero), - /* 493 E> */ B(StaCurrentContextSlot), U8(37), + /* 493 E> */ B(StaCurrentContextSlot), U8(36), /* 507 S> */ B(LdaZero), - /* 507 E> */ B(StaCurrentContextSlot), U8(38), + /* 507 E> */ B(StaCurrentContextSlot), U8(37), /* 521 S> */ B(LdaZero), - /* 521 E> */ B(StaCurrentContextSlot), U8(39), + /* 521 E> */ B(StaCurrentContextSlot), U8(38), /* 535 S> */ B(LdaZero), - /* 535 E> */ B(StaCurrentContextSlot), U8(40), + /* 535 E> */ B(StaCurrentContextSlot), U8(39), /* 549 S> */ B(LdaZero), - /* 549 E> */ B(StaCurrentContextSlot), U8(41), + /* 549 E> */ B(StaCurrentContextSlot), U8(40), /* 563 S> */ B(LdaZero), - /* 563 E> */ B(StaCurrentContextSlot), U8(42), + /* 563 E> */ B(StaCurrentContextSlot), U8(41), /* 577 S> */ B(LdaZero), - /* 577 E> */ B(StaCurrentContextSlot), U8(43), + /* 577 E> */ B(StaCurrentContextSlot), U8(42), /* 591 S> */ B(LdaZero), - /* 591 E> */ B(StaCurrentContextSlot), U8(44), + /* 591 E> */ B(StaCurrentContextSlot), U8(43), /* 605 S> */ B(LdaZero), - /* 605 E> */ B(StaCurrentContextSlot), U8(45), + /* 605 E> */ B(StaCurrentContextSlot), U8(44), /* 619 S> */ B(LdaZero), - /* 619 E> */ B(StaCurrentContextSlot), U8(46), + /* 619 E> */ B(StaCurrentContextSlot), U8(45), /* 633 S> */ B(LdaZero), - /* 633 E> */ B(StaCurrentContextSlot), U8(47), + /* 633 E> */ B(StaCurrentContextSlot), U8(46), /* 647 S> */ B(LdaZero), - /* 647 E> */ B(StaCurrentContextSlot), U8(48), + /* 647 E> */ B(StaCurrentContextSlot), U8(47), /* 661 S> */ B(LdaZero), - /* 661 E> */ B(StaCurrentContextSlot), U8(49), + /* 661 E> */ B(StaCurrentContextSlot), U8(48), /* 675 S> */ B(LdaZero), - /* 675 E> */ B(StaCurrentContextSlot), U8(50), + /* 675 E> */ B(StaCurrentContextSlot), U8(49), /* 689 S> */ B(LdaZero), - /* 689 E> */ B(StaCurrentContextSlot), U8(51), + /* 689 E> */ B(StaCurrentContextSlot), U8(50), /* 703 S> */ B(LdaZero), - /* 703 E> */ B(StaCurrentContextSlot), U8(52), + /* 703 E> */ B(StaCurrentContextSlot), U8(51), /* 717 S> */ B(LdaZero), - /* 717 E> */ B(StaCurrentContextSlot), U8(53), + /* 717 E> */ B(StaCurrentContextSlot), U8(52), /* 731 S> */ B(LdaZero), - /* 731 E> */ B(StaCurrentContextSlot), U8(54), + /* 731 E> */ B(StaCurrentContextSlot), U8(53), /* 745 S> */ B(LdaZero), - /* 745 E> */ B(StaCurrentContextSlot), U8(55), + /* 745 E> */ B(StaCurrentContextSlot), U8(54), /* 759 S> */ B(LdaZero), - /* 759 E> */ B(StaCurrentContextSlot), U8(56), + /* 759 E> */ B(StaCurrentContextSlot), U8(55), /* 773 S> */ B(LdaZero), - /* 773 E> */ B(StaCurrentContextSlot), U8(57), + /* 773 E> */ B(StaCurrentContextSlot), U8(56), /* 787 S> */ B(LdaZero), - /* 787 E> */ B(StaCurrentContextSlot), U8(58), + /* 787 E> */ B(StaCurrentContextSlot), U8(57), /* 801 S> */ B(LdaZero), - /* 801 E> */ B(StaCurrentContextSlot), U8(59), + /* 801 E> */ B(StaCurrentContextSlot), U8(58), /* 815 S> */ B(LdaZero), - /* 815 E> */ B(StaCurrentContextSlot), U8(60), + /* 815 E> */ B(StaCurrentContextSlot), U8(59), /* 829 S> */ B(LdaZero), - /* 829 E> */ B(StaCurrentContextSlot), U8(61), + /* 829 E> */ B(StaCurrentContextSlot), U8(60), /* 843 S> */ B(LdaZero), - /* 843 E> */ B(StaCurrentContextSlot), U8(62), + /* 843 E> */ B(StaCurrentContextSlot), U8(61), /* 857 S> */ B(LdaZero), - /* 857 E> */ B(StaCurrentContextSlot), U8(63), + /* 857 E> */ B(StaCurrentContextSlot), U8(62), /* 871 S> */ B(LdaZero), - /* 871 E> */ B(StaCurrentContextSlot), U8(64), + /* 871 E> */ B(StaCurrentContextSlot), U8(63), /* 885 S> */ B(LdaZero), - /* 885 E> */ B(StaCurrentContextSlot), U8(65), + /* 885 E> */ B(StaCurrentContextSlot), U8(64), /* 899 S> */ B(LdaZero), - /* 899 E> */ B(StaCurrentContextSlot), U8(66), + /* 899 E> */ B(StaCurrentContextSlot), U8(65), /* 913 S> */ B(LdaZero), - /* 913 E> */ B(StaCurrentContextSlot), U8(67), + /* 913 E> */ B(StaCurrentContextSlot), U8(66), /* 927 S> */ B(LdaZero), - /* 927 E> */ B(StaCurrentContextSlot), U8(68), + /* 927 E> */ B(StaCurrentContextSlot), U8(67), /* 941 S> */ B(LdaZero), - /* 941 E> */ B(StaCurrentContextSlot), U8(69), + /* 941 E> */ B(StaCurrentContextSlot), U8(68), /* 955 S> */ B(LdaZero), - /* 955 E> */ B(StaCurrentContextSlot), U8(70), + /* 955 E> */ B(StaCurrentContextSlot), U8(69), /* 969 S> */ B(LdaZero), - /* 969 E> */ B(StaCurrentContextSlot), U8(71), + /* 969 E> */ B(StaCurrentContextSlot), U8(70), /* 983 S> */ B(LdaZero), - /* 983 E> */ B(StaCurrentContextSlot), U8(72), + /* 983 E> */ B(StaCurrentContextSlot), U8(71), /* 997 S> */ B(LdaZero), - /* 997 E> */ B(StaCurrentContextSlot), U8(73), + /* 997 E> */ B(StaCurrentContextSlot), U8(72), /* 1011 S> */ B(LdaZero), - /* 1011 E> */ B(StaCurrentContextSlot), U8(74), + /* 1011 E> */ B(StaCurrentContextSlot), U8(73), /* 1025 S> */ B(LdaZero), - /* 1025 E> */ B(StaCurrentContextSlot), U8(75), + /* 1025 E> */ B(StaCurrentContextSlot), U8(74), /* 1039 S> */ B(LdaZero), - /* 1039 E> */ B(StaCurrentContextSlot), U8(76), + /* 1039 E> */ B(StaCurrentContextSlot), U8(75), /* 1053 S> */ B(LdaZero), - /* 1053 E> */ B(StaCurrentContextSlot), U8(77), + /* 1053 E> */ B(StaCurrentContextSlot), U8(76), /* 1067 S> */ B(LdaZero), - /* 1067 E> */ B(StaCurrentContextSlot), U8(78), + /* 1067 E> */ B(StaCurrentContextSlot), U8(77), /* 1081 S> */ B(LdaZero), - /* 1081 E> */ B(StaCurrentContextSlot), U8(79), + /* 1081 E> */ B(StaCurrentContextSlot), U8(78), /* 1095 S> */ B(LdaZero), - /* 1095 E> */ B(StaCurrentContextSlot), U8(80), + /* 1095 E> */ B(StaCurrentContextSlot), U8(79), /* 1109 S> */ B(LdaZero), - /* 1109 E> */ B(StaCurrentContextSlot), U8(81), + /* 1109 E> */ B(StaCurrentContextSlot), U8(80), /* 1123 S> */ B(LdaZero), - /* 1123 E> */ B(StaCurrentContextSlot), U8(82), + /* 1123 E> */ B(StaCurrentContextSlot), U8(81), /* 1137 S> */ B(LdaZero), - /* 1137 E> */ B(StaCurrentContextSlot), U8(83), + /* 1137 E> */ B(StaCurrentContextSlot), U8(82), /* 1151 S> */ B(LdaZero), - /* 1151 E> */ B(StaCurrentContextSlot), U8(84), + /* 1151 E> */ B(StaCurrentContextSlot), U8(83), /* 1165 S> */ B(LdaZero), - /* 1165 E> */ B(StaCurrentContextSlot), U8(85), + /* 1165 E> */ B(StaCurrentContextSlot), U8(84), /* 1179 S> */ B(LdaZero), - /* 1179 E> */ B(StaCurrentContextSlot), U8(86), + /* 1179 E> */ B(StaCurrentContextSlot), U8(85), /* 1193 S> */ B(LdaZero), - /* 1193 E> */ B(StaCurrentContextSlot), U8(87), + /* 1193 E> */ B(StaCurrentContextSlot), U8(86), /* 1207 S> */ B(LdaZero), - /* 1207 E> */ B(StaCurrentContextSlot), U8(88), + /* 1207 E> */ B(StaCurrentContextSlot), U8(87), /* 1221 S> */ B(LdaZero), - /* 1221 E> */ B(StaCurrentContextSlot), U8(89), + /* 1221 E> */ B(StaCurrentContextSlot), U8(88), /* 1235 S> */ B(LdaZero), - /* 1235 E> */ B(StaCurrentContextSlot), U8(90), + /* 1235 E> */ B(StaCurrentContextSlot), U8(89), /* 1249 S> */ B(LdaZero), - /* 1249 E> */ B(StaCurrentContextSlot), U8(91), + /* 1249 E> */ B(StaCurrentContextSlot), U8(90), /* 1263 S> */ B(LdaZero), - /* 1263 E> */ B(StaCurrentContextSlot), U8(92), + /* 1263 E> */ B(StaCurrentContextSlot), U8(91), /* 1277 S> */ B(LdaZero), - /* 1277 E> */ B(StaCurrentContextSlot), U8(93), + /* 1277 E> */ B(StaCurrentContextSlot), U8(92), /* 1291 S> */ B(LdaZero), - /* 1291 E> */ B(StaCurrentContextSlot), U8(94), + /* 1291 E> */ B(StaCurrentContextSlot), U8(93), /* 1305 S> */ B(LdaZero), - /* 1305 E> */ B(StaCurrentContextSlot), U8(95), + /* 1305 E> */ B(StaCurrentContextSlot), U8(94), /* 1319 S> */ B(LdaZero), - /* 1319 E> */ B(StaCurrentContextSlot), U8(96), + /* 1319 E> */ B(StaCurrentContextSlot), U8(95), /* 1333 S> */ B(LdaZero), - /* 1333 E> */ B(StaCurrentContextSlot), U8(97), + /* 1333 E> */ B(StaCurrentContextSlot), U8(96), /* 1347 S> */ B(LdaZero), - /* 1347 E> */ B(StaCurrentContextSlot), U8(98), + /* 1347 E> */ B(StaCurrentContextSlot), U8(97), /* 1361 S> */ B(LdaZero), - /* 1361 E> */ B(StaCurrentContextSlot), U8(99), + /* 1361 E> */ B(StaCurrentContextSlot), U8(98), /* 1375 S> */ B(LdaZero), - /* 1375 E> */ B(StaCurrentContextSlot), U8(100), + /* 1375 E> */ B(StaCurrentContextSlot), U8(99), /* 1389 S> */ B(LdaZero), - /* 1389 E> */ B(StaCurrentContextSlot), U8(101), + /* 1389 E> */ B(StaCurrentContextSlot), U8(100), /* 1403 S> */ B(LdaZero), - /* 1403 E> */ B(StaCurrentContextSlot), U8(102), + /* 1403 E> */ B(StaCurrentContextSlot), U8(101), /* 1417 S> */ B(LdaZero), - /* 1417 E> */ B(StaCurrentContextSlot), U8(103), + /* 1417 E> */ B(StaCurrentContextSlot), U8(102), /* 1431 S> */ B(LdaZero), - /* 1431 E> */ B(StaCurrentContextSlot), U8(104), + /* 1431 E> */ B(StaCurrentContextSlot), U8(103), /* 1445 S> */ B(LdaZero), - /* 1445 E> */ B(StaCurrentContextSlot), U8(105), + /* 1445 E> */ B(StaCurrentContextSlot), U8(104), /* 1459 S> */ B(LdaZero), - /* 1459 E> */ B(StaCurrentContextSlot), U8(106), + /* 1459 E> */ B(StaCurrentContextSlot), U8(105), /* 1473 S> */ B(LdaZero), - /* 1473 E> */ B(StaCurrentContextSlot), U8(107), + /* 1473 E> */ B(StaCurrentContextSlot), U8(106), /* 1487 S> */ B(LdaZero), - /* 1487 E> */ B(StaCurrentContextSlot), U8(108), + /* 1487 E> */ B(StaCurrentContextSlot), U8(107), /* 1501 S> */ B(LdaZero), - /* 1501 E> */ B(StaCurrentContextSlot), U8(109), + /* 1501 E> */ B(StaCurrentContextSlot), U8(108), /* 1516 S> */ B(LdaZero), - /* 1516 E> */ B(StaCurrentContextSlot), U8(110), + /* 1516 E> */ B(StaCurrentContextSlot), U8(109), /* 1531 S> */ B(LdaZero), - /* 1531 E> */ B(StaCurrentContextSlot), U8(111), + /* 1531 E> */ B(StaCurrentContextSlot), U8(110), /* 1546 S> */ B(LdaZero), - /* 1546 E> */ B(StaCurrentContextSlot), U8(112), + /* 1546 E> */ B(StaCurrentContextSlot), U8(111), /* 1561 S> */ B(LdaZero), - /* 1561 E> */ B(StaCurrentContextSlot), U8(113), + /* 1561 E> */ B(StaCurrentContextSlot), U8(112), /* 1576 S> */ B(LdaZero), - /* 1576 E> */ B(StaCurrentContextSlot), U8(114), + /* 1576 E> */ B(StaCurrentContextSlot), U8(113), /* 1591 S> */ B(LdaZero), - /* 1591 E> */ B(StaCurrentContextSlot), U8(115), + /* 1591 E> */ B(StaCurrentContextSlot), U8(114), /* 1606 S> */ B(LdaZero), - /* 1606 E> */ B(StaCurrentContextSlot), U8(116), + /* 1606 E> */ B(StaCurrentContextSlot), U8(115), /* 1621 S> */ B(LdaZero), - /* 1621 E> */ B(StaCurrentContextSlot), U8(117), + /* 1621 E> */ B(StaCurrentContextSlot), U8(116), /* 1636 S> */ B(LdaZero), - /* 1636 E> */ B(StaCurrentContextSlot), U8(118), + /* 1636 E> */ B(StaCurrentContextSlot), U8(117), /* 1651 S> */ B(LdaZero), - /* 1651 E> */ B(StaCurrentContextSlot), U8(119), + /* 1651 E> */ B(StaCurrentContextSlot), U8(118), /* 1666 S> */ B(LdaZero), - /* 1666 E> */ B(StaCurrentContextSlot), U8(120), + /* 1666 E> */ B(StaCurrentContextSlot), U8(119), /* 1681 S> */ B(LdaZero), - /* 1681 E> */ B(StaCurrentContextSlot), U8(121), + /* 1681 E> */ B(StaCurrentContextSlot), U8(120), /* 1696 S> */ B(LdaZero), - /* 1696 E> */ B(StaCurrentContextSlot), U8(122), + /* 1696 E> */ B(StaCurrentContextSlot), U8(121), /* 1711 S> */ B(LdaZero), - /* 1711 E> */ B(StaCurrentContextSlot), U8(123), + /* 1711 E> */ B(StaCurrentContextSlot), U8(122), /* 1726 S> */ B(LdaZero), - /* 1726 E> */ B(StaCurrentContextSlot), U8(124), + /* 1726 E> */ B(StaCurrentContextSlot), U8(123), /* 1741 S> */ B(LdaZero), - /* 1741 E> */ B(StaCurrentContextSlot), U8(125), + /* 1741 E> */ B(StaCurrentContextSlot), U8(124), /* 1756 S> */ B(LdaZero), - /* 1756 E> */ B(StaCurrentContextSlot), U8(126), + /* 1756 E> */ B(StaCurrentContextSlot), U8(125), /* 1771 S> */ B(LdaZero), - /* 1771 E> */ B(StaCurrentContextSlot), U8(127), + /* 1771 E> */ B(StaCurrentContextSlot), U8(126), /* 1786 S> */ B(LdaZero), - /* 1786 E> */ B(StaCurrentContextSlot), U8(128), + /* 1786 E> */ B(StaCurrentContextSlot), U8(127), /* 1801 S> */ B(LdaZero), - /* 1801 E> */ B(StaCurrentContextSlot), U8(129), + /* 1801 E> */ B(StaCurrentContextSlot), U8(128), /* 1816 S> */ B(LdaZero), - /* 1816 E> */ B(StaCurrentContextSlot), U8(130), + /* 1816 E> */ B(StaCurrentContextSlot), U8(129), /* 1831 S> */ B(LdaZero), - /* 1831 E> */ B(StaCurrentContextSlot), U8(131), + /* 1831 E> */ B(StaCurrentContextSlot), U8(130), /* 1846 S> */ B(LdaZero), - /* 1846 E> */ B(StaCurrentContextSlot), U8(132), + /* 1846 E> */ B(StaCurrentContextSlot), U8(131), /* 1861 S> */ B(LdaZero), - /* 1861 E> */ B(StaCurrentContextSlot), U8(133), + /* 1861 E> */ B(StaCurrentContextSlot), U8(132), /* 1876 S> */ B(LdaZero), - /* 1876 E> */ B(StaCurrentContextSlot), U8(134), + /* 1876 E> */ B(StaCurrentContextSlot), U8(133), /* 1891 S> */ B(LdaZero), - /* 1891 E> */ B(StaCurrentContextSlot), U8(135), + /* 1891 E> */ B(StaCurrentContextSlot), U8(134), /* 1906 S> */ B(LdaZero), - /* 1906 E> */ B(StaCurrentContextSlot), U8(136), + /* 1906 E> */ B(StaCurrentContextSlot), U8(135), /* 1921 S> */ B(LdaZero), - /* 1921 E> */ B(StaCurrentContextSlot), U8(137), + /* 1921 E> */ B(StaCurrentContextSlot), U8(136), /* 1936 S> */ B(LdaZero), - /* 1936 E> */ B(StaCurrentContextSlot), U8(138), + /* 1936 E> */ B(StaCurrentContextSlot), U8(137), /* 1951 S> */ B(LdaZero), - /* 1951 E> */ B(StaCurrentContextSlot), U8(139), + /* 1951 E> */ B(StaCurrentContextSlot), U8(138), /* 1966 S> */ B(LdaZero), - /* 1966 E> */ B(StaCurrentContextSlot), U8(140), + /* 1966 E> */ B(StaCurrentContextSlot), U8(139), /* 1981 S> */ B(LdaZero), - /* 1981 E> */ B(StaCurrentContextSlot), U8(141), + /* 1981 E> */ B(StaCurrentContextSlot), U8(140), /* 1996 S> */ B(LdaZero), - /* 1996 E> */ B(StaCurrentContextSlot), U8(142), + /* 1996 E> */ B(StaCurrentContextSlot), U8(141), /* 2011 S> */ B(LdaZero), - /* 2011 E> */ B(StaCurrentContextSlot), U8(143), + /* 2011 E> */ B(StaCurrentContextSlot), U8(142), /* 2026 S> */ B(LdaZero), - /* 2026 E> */ B(StaCurrentContextSlot), U8(144), + /* 2026 E> */ B(StaCurrentContextSlot), U8(143), /* 2041 S> */ B(LdaZero), - /* 2041 E> */ B(StaCurrentContextSlot), U8(145), + /* 2041 E> */ B(StaCurrentContextSlot), U8(144), /* 2056 S> */ B(LdaZero), - /* 2056 E> */ B(StaCurrentContextSlot), U8(146), + /* 2056 E> */ B(StaCurrentContextSlot), U8(145), /* 2071 S> */ B(LdaZero), - /* 2071 E> */ B(StaCurrentContextSlot), U8(147), + /* 2071 E> */ B(StaCurrentContextSlot), U8(146), /* 2086 S> */ B(LdaZero), - /* 2086 E> */ B(StaCurrentContextSlot), U8(148), + /* 2086 E> */ B(StaCurrentContextSlot), U8(147), /* 2101 S> */ B(LdaZero), - /* 2101 E> */ B(StaCurrentContextSlot), U8(149), + /* 2101 E> */ B(StaCurrentContextSlot), U8(148), /* 2116 S> */ B(LdaZero), - /* 2116 E> */ B(StaCurrentContextSlot), U8(150), + /* 2116 E> */ B(StaCurrentContextSlot), U8(149), /* 2131 S> */ B(LdaZero), - /* 2131 E> */ B(StaCurrentContextSlot), U8(151), + /* 2131 E> */ B(StaCurrentContextSlot), U8(150), /* 2146 S> */ B(LdaZero), - /* 2146 E> */ B(StaCurrentContextSlot), U8(152), + /* 2146 E> */ B(StaCurrentContextSlot), U8(151), /* 2161 S> */ B(LdaZero), - /* 2161 E> */ B(StaCurrentContextSlot), U8(153), + /* 2161 E> */ B(StaCurrentContextSlot), U8(152), /* 2176 S> */ B(LdaZero), - /* 2176 E> */ B(StaCurrentContextSlot), U8(154), + /* 2176 E> */ B(StaCurrentContextSlot), U8(153), /* 2191 S> */ B(LdaZero), - /* 2191 E> */ B(StaCurrentContextSlot), U8(155), + /* 2191 E> */ B(StaCurrentContextSlot), U8(154), /* 2206 S> */ B(LdaZero), - /* 2206 E> */ B(StaCurrentContextSlot), U8(156), + /* 2206 E> */ B(StaCurrentContextSlot), U8(155), /* 2221 S> */ B(LdaZero), - /* 2221 E> */ B(StaCurrentContextSlot), U8(157), + /* 2221 E> */ B(StaCurrentContextSlot), U8(156), /* 2236 S> */ B(LdaZero), - /* 2236 E> */ B(StaCurrentContextSlot), U8(158), + /* 2236 E> */ B(StaCurrentContextSlot), U8(157), /* 2251 S> */ B(LdaZero), - /* 2251 E> */ B(StaCurrentContextSlot), U8(159), + /* 2251 E> */ B(StaCurrentContextSlot), U8(158), /* 2266 S> */ B(LdaZero), - /* 2266 E> */ B(StaCurrentContextSlot), U8(160), + /* 2266 E> */ B(StaCurrentContextSlot), U8(159), /* 2281 S> */ B(LdaZero), - /* 2281 E> */ B(StaCurrentContextSlot), U8(161), + /* 2281 E> */ B(StaCurrentContextSlot), U8(160), /* 2296 S> */ B(LdaZero), - /* 2296 E> */ B(StaCurrentContextSlot), U8(162), + /* 2296 E> */ B(StaCurrentContextSlot), U8(161), /* 2311 S> */ B(LdaZero), - /* 2311 E> */ B(StaCurrentContextSlot), U8(163), + /* 2311 E> */ B(StaCurrentContextSlot), U8(162), /* 2326 S> */ B(LdaZero), - /* 2326 E> */ B(StaCurrentContextSlot), U8(164), + /* 2326 E> */ B(StaCurrentContextSlot), U8(163), /* 2341 S> */ B(LdaZero), - /* 2341 E> */ B(StaCurrentContextSlot), U8(165), + /* 2341 E> */ B(StaCurrentContextSlot), U8(164), /* 2356 S> */ B(LdaZero), - /* 2356 E> */ B(StaCurrentContextSlot), U8(166), + /* 2356 E> */ B(StaCurrentContextSlot), U8(165), /* 2371 S> */ B(LdaZero), - /* 2371 E> */ B(StaCurrentContextSlot), U8(167), + /* 2371 E> */ B(StaCurrentContextSlot), U8(166), /* 2386 S> */ B(LdaZero), - /* 2386 E> */ B(StaCurrentContextSlot), U8(168), + /* 2386 E> */ B(StaCurrentContextSlot), U8(167), /* 2401 S> */ B(LdaZero), - /* 2401 E> */ B(StaCurrentContextSlot), U8(169), + /* 2401 E> */ B(StaCurrentContextSlot), U8(168), /* 2416 S> */ B(LdaZero), - /* 2416 E> */ B(StaCurrentContextSlot), U8(170), + /* 2416 E> */ B(StaCurrentContextSlot), U8(169), /* 2431 S> */ B(LdaZero), - /* 2431 E> */ B(StaCurrentContextSlot), U8(171), + /* 2431 E> */ B(StaCurrentContextSlot), U8(170), /* 2446 S> */ B(LdaZero), - /* 2446 E> */ B(StaCurrentContextSlot), U8(172), + /* 2446 E> */ B(StaCurrentContextSlot), U8(171), /* 2461 S> */ B(LdaZero), - /* 2461 E> */ B(StaCurrentContextSlot), U8(173), + /* 2461 E> */ B(StaCurrentContextSlot), U8(172), /* 2476 S> */ B(LdaZero), - /* 2476 E> */ B(StaCurrentContextSlot), U8(174), + /* 2476 E> */ B(StaCurrentContextSlot), U8(173), /* 2491 S> */ B(LdaZero), - /* 2491 E> */ B(StaCurrentContextSlot), U8(175), + /* 2491 E> */ B(StaCurrentContextSlot), U8(174), /* 2506 S> */ B(LdaZero), - /* 2506 E> */ B(StaCurrentContextSlot), U8(176), + /* 2506 E> */ B(StaCurrentContextSlot), U8(175), /* 2521 S> */ B(LdaZero), - /* 2521 E> */ B(StaCurrentContextSlot), U8(177), + /* 2521 E> */ B(StaCurrentContextSlot), U8(176), /* 2536 S> */ B(LdaZero), - /* 2536 E> */ B(StaCurrentContextSlot), U8(178), + /* 2536 E> */ B(StaCurrentContextSlot), U8(177), /* 2551 S> */ B(LdaZero), - /* 2551 E> */ B(StaCurrentContextSlot), U8(179), + /* 2551 E> */ B(StaCurrentContextSlot), U8(178), /* 2566 S> */ B(LdaZero), - /* 2566 E> */ B(StaCurrentContextSlot), U8(180), + /* 2566 E> */ B(StaCurrentContextSlot), U8(179), /* 2581 S> */ B(LdaZero), - /* 2581 E> */ B(StaCurrentContextSlot), U8(181), + /* 2581 E> */ B(StaCurrentContextSlot), U8(180), /* 2596 S> */ B(LdaZero), - /* 2596 E> */ B(StaCurrentContextSlot), U8(182), + /* 2596 E> */ B(StaCurrentContextSlot), U8(181), /* 2611 S> */ B(LdaZero), - /* 2611 E> */ B(StaCurrentContextSlot), U8(183), + /* 2611 E> */ B(StaCurrentContextSlot), U8(182), /* 2626 S> */ B(LdaZero), - /* 2626 E> */ B(StaCurrentContextSlot), U8(184), + /* 2626 E> */ B(StaCurrentContextSlot), U8(183), /* 2641 S> */ B(LdaZero), - /* 2641 E> */ B(StaCurrentContextSlot), U8(185), + /* 2641 E> */ B(StaCurrentContextSlot), U8(184), /* 2656 S> */ B(LdaZero), - /* 2656 E> */ B(StaCurrentContextSlot), U8(186), + /* 2656 E> */ B(StaCurrentContextSlot), U8(185), /* 2671 S> */ B(LdaZero), - /* 2671 E> */ B(StaCurrentContextSlot), U8(187), + /* 2671 E> */ B(StaCurrentContextSlot), U8(186), /* 2686 S> */ B(LdaZero), - /* 2686 E> */ B(StaCurrentContextSlot), U8(188), + /* 2686 E> */ B(StaCurrentContextSlot), U8(187), /* 2701 S> */ B(LdaZero), - /* 2701 E> */ B(StaCurrentContextSlot), U8(189), + /* 2701 E> */ B(StaCurrentContextSlot), U8(188), /* 2716 S> */ B(LdaZero), - /* 2716 E> */ B(StaCurrentContextSlot), U8(190), + /* 2716 E> */ B(StaCurrentContextSlot), U8(189), /* 2731 S> */ B(LdaZero), - /* 2731 E> */ B(StaCurrentContextSlot), U8(191), + /* 2731 E> */ B(StaCurrentContextSlot), U8(190), /* 2746 S> */ B(LdaZero), - /* 2746 E> */ B(StaCurrentContextSlot), U8(192), + /* 2746 E> */ B(StaCurrentContextSlot), U8(191), /* 2761 S> */ B(LdaZero), - /* 2761 E> */ B(StaCurrentContextSlot), U8(193), + /* 2761 E> */ B(StaCurrentContextSlot), U8(192), /* 2776 S> */ B(LdaZero), - /* 2776 E> */ B(StaCurrentContextSlot), U8(194), + /* 2776 E> */ B(StaCurrentContextSlot), U8(193), /* 2791 S> */ B(LdaZero), - /* 2791 E> */ B(StaCurrentContextSlot), U8(195), + /* 2791 E> */ B(StaCurrentContextSlot), U8(194), /* 2806 S> */ B(LdaZero), - /* 2806 E> */ B(StaCurrentContextSlot), U8(196), + /* 2806 E> */ B(StaCurrentContextSlot), U8(195), /* 2821 S> */ B(LdaZero), - /* 2821 E> */ B(StaCurrentContextSlot), U8(197), + /* 2821 E> */ B(StaCurrentContextSlot), U8(196), /* 2836 S> */ B(LdaZero), - /* 2836 E> */ B(StaCurrentContextSlot), U8(198), + /* 2836 E> */ B(StaCurrentContextSlot), U8(197), /* 2851 S> */ B(LdaZero), - /* 2851 E> */ B(StaCurrentContextSlot), U8(199), + /* 2851 E> */ B(StaCurrentContextSlot), U8(198), /* 2866 S> */ B(LdaZero), - /* 2866 E> */ B(StaCurrentContextSlot), U8(200), + /* 2866 E> */ B(StaCurrentContextSlot), U8(199), /* 2881 S> */ B(LdaZero), - /* 2881 E> */ B(StaCurrentContextSlot), U8(201), + /* 2881 E> */ B(StaCurrentContextSlot), U8(200), /* 2896 S> */ B(LdaZero), - /* 2896 E> */ B(StaCurrentContextSlot), U8(202), + /* 2896 E> */ B(StaCurrentContextSlot), U8(201), /* 2911 S> */ B(LdaZero), - /* 2911 E> */ B(StaCurrentContextSlot), U8(203), + /* 2911 E> */ B(StaCurrentContextSlot), U8(202), /* 2926 S> */ B(LdaZero), - /* 2926 E> */ B(StaCurrentContextSlot), U8(204), + /* 2926 E> */ B(StaCurrentContextSlot), U8(203), /* 2941 S> */ B(LdaZero), - /* 2941 E> */ B(StaCurrentContextSlot), U8(205), + /* 2941 E> */ B(StaCurrentContextSlot), U8(204), /* 2956 S> */ B(LdaZero), - /* 2956 E> */ B(StaCurrentContextSlot), U8(206), + /* 2956 E> */ B(StaCurrentContextSlot), U8(205), /* 2971 S> */ B(LdaZero), - /* 2971 E> */ B(StaCurrentContextSlot), U8(207), + /* 2971 E> */ B(StaCurrentContextSlot), U8(206), /* 2986 S> */ B(LdaZero), - /* 2986 E> */ B(StaCurrentContextSlot), U8(208), + /* 2986 E> */ B(StaCurrentContextSlot), U8(207), /* 3001 S> */ B(LdaZero), - /* 3001 E> */ B(StaCurrentContextSlot), U8(209), + /* 3001 E> */ B(StaCurrentContextSlot), U8(208), /* 3016 S> */ B(LdaZero), - /* 3016 E> */ B(StaCurrentContextSlot), U8(210), + /* 3016 E> */ B(StaCurrentContextSlot), U8(209), /* 3031 S> */ B(LdaZero), - /* 3031 E> */ B(StaCurrentContextSlot), U8(211), + /* 3031 E> */ B(StaCurrentContextSlot), U8(210), /* 3046 S> */ B(LdaZero), - /* 3046 E> */ B(StaCurrentContextSlot), U8(212), + /* 3046 E> */ B(StaCurrentContextSlot), U8(211), /* 3061 S> */ B(LdaZero), - /* 3061 E> */ B(StaCurrentContextSlot), U8(213), + /* 3061 E> */ B(StaCurrentContextSlot), U8(212), /* 3076 S> */ B(LdaZero), - /* 3076 E> */ B(StaCurrentContextSlot), U8(214), + /* 3076 E> */ B(StaCurrentContextSlot), U8(213), /* 3091 S> */ B(LdaZero), - /* 3091 E> */ B(StaCurrentContextSlot), U8(215), + /* 3091 E> */ B(StaCurrentContextSlot), U8(214), /* 3106 S> */ B(LdaZero), - /* 3106 E> */ B(StaCurrentContextSlot), U8(216), + /* 3106 E> */ B(StaCurrentContextSlot), U8(215), /* 3121 S> */ B(LdaZero), - /* 3121 E> */ B(StaCurrentContextSlot), U8(217), + /* 3121 E> */ B(StaCurrentContextSlot), U8(216), /* 3136 S> */ B(LdaZero), - /* 3136 E> */ B(StaCurrentContextSlot), U8(218), + /* 3136 E> */ B(StaCurrentContextSlot), U8(217), /* 3151 S> */ B(LdaZero), - /* 3151 E> */ B(StaCurrentContextSlot), U8(219), + /* 3151 E> */ B(StaCurrentContextSlot), U8(218), /* 3166 S> */ B(LdaZero), - /* 3166 E> */ B(StaCurrentContextSlot), U8(220), + /* 3166 E> */ B(StaCurrentContextSlot), U8(219), /* 3181 S> */ B(LdaZero), - /* 3181 E> */ B(StaCurrentContextSlot), U8(221), + /* 3181 E> */ B(StaCurrentContextSlot), U8(220), /* 3196 S> */ B(LdaZero), - /* 3196 E> */ B(StaCurrentContextSlot), U8(222), + /* 3196 E> */ B(StaCurrentContextSlot), U8(221), /* 3211 S> */ B(LdaZero), - /* 3211 E> */ B(StaCurrentContextSlot), U8(223), + /* 3211 E> */ B(StaCurrentContextSlot), U8(222), /* 3226 S> */ B(LdaZero), - /* 3226 E> */ B(StaCurrentContextSlot), U8(224), + /* 3226 E> */ B(StaCurrentContextSlot), U8(223), /* 3241 S> */ B(LdaZero), - /* 3241 E> */ B(StaCurrentContextSlot), U8(225), + /* 3241 E> */ B(StaCurrentContextSlot), U8(224), /* 3256 S> */ B(LdaZero), - /* 3256 E> */ B(StaCurrentContextSlot), U8(226), + /* 3256 E> */ B(StaCurrentContextSlot), U8(225), /* 3271 S> */ B(LdaZero), - /* 3271 E> */ B(StaCurrentContextSlot), U8(227), + /* 3271 E> */ B(StaCurrentContextSlot), U8(226), /* 3286 S> */ B(LdaZero), - /* 3286 E> */ B(StaCurrentContextSlot), U8(228), + /* 3286 E> */ B(StaCurrentContextSlot), U8(227), /* 3301 S> */ B(LdaZero), - /* 3301 E> */ B(StaCurrentContextSlot), U8(229), + /* 3301 E> */ B(StaCurrentContextSlot), U8(228), /* 3316 S> */ B(LdaZero), - /* 3316 E> */ B(StaCurrentContextSlot), U8(230), + /* 3316 E> */ B(StaCurrentContextSlot), U8(229), /* 3331 S> */ B(LdaZero), - /* 3331 E> */ B(StaCurrentContextSlot), U8(231), + /* 3331 E> */ B(StaCurrentContextSlot), U8(230), /* 3346 S> */ B(LdaZero), - /* 3346 E> */ B(StaCurrentContextSlot), U8(232), + /* 3346 E> */ B(StaCurrentContextSlot), U8(231), /* 3361 S> */ B(LdaZero), - /* 3361 E> */ B(StaCurrentContextSlot), U8(233), + /* 3361 E> */ B(StaCurrentContextSlot), U8(232), /* 3376 S> */ B(LdaZero), - /* 3376 E> */ B(StaCurrentContextSlot), U8(234), + /* 3376 E> */ B(StaCurrentContextSlot), U8(233), /* 3391 S> */ B(LdaZero), - /* 3391 E> */ B(StaCurrentContextSlot), U8(235), + /* 3391 E> */ B(StaCurrentContextSlot), U8(234), /* 3406 S> */ B(LdaZero), - /* 3406 E> */ B(StaCurrentContextSlot), U8(236), + /* 3406 E> */ B(StaCurrentContextSlot), U8(235), /* 3421 S> */ B(LdaZero), - /* 3421 E> */ B(StaCurrentContextSlot), U8(237), + /* 3421 E> */ B(StaCurrentContextSlot), U8(236), /* 3436 S> */ B(LdaZero), - /* 3436 E> */ B(StaCurrentContextSlot), U8(238), + /* 3436 E> */ B(StaCurrentContextSlot), U8(237), /* 3451 S> */ B(LdaZero), - /* 3451 E> */ B(StaCurrentContextSlot), U8(239), + /* 3451 E> */ B(StaCurrentContextSlot), U8(238), /* 3466 S> */ B(LdaZero), - /* 3466 E> */ B(StaCurrentContextSlot), U8(240), + /* 3466 E> */ B(StaCurrentContextSlot), U8(239), /* 3481 S> */ B(LdaZero), - /* 3481 E> */ B(StaCurrentContextSlot), U8(241), + /* 3481 E> */ B(StaCurrentContextSlot), U8(240), /* 3496 S> */ B(LdaZero), - /* 3496 E> */ B(StaCurrentContextSlot), U8(242), + /* 3496 E> */ B(StaCurrentContextSlot), U8(241), /* 3511 S> */ B(LdaZero), - /* 3511 E> */ B(StaCurrentContextSlot), U8(243), + /* 3511 E> */ B(StaCurrentContextSlot), U8(242), /* 3526 S> */ B(LdaZero), - /* 3526 E> */ B(StaCurrentContextSlot), U8(244), + /* 3526 E> */ B(StaCurrentContextSlot), U8(243), /* 3541 S> */ B(LdaZero), - /* 3541 E> */ B(StaCurrentContextSlot), U8(245), + /* 3541 E> */ B(StaCurrentContextSlot), U8(244), /* 3556 S> */ B(LdaZero), - /* 3556 E> */ B(StaCurrentContextSlot), U8(246), + /* 3556 E> */ B(StaCurrentContextSlot), U8(245), /* 3571 S> */ B(LdaZero), - /* 3571 E> */ B(StaCurrentContextSlot), U8(247), + /* 3571 E> */ B(StaCurrentContextSlot), U8(246), /* 3586 S> */ B(LdaZero), - /* 3586 E> */ B(StaCurrentContextSlot), U8(248), + /* 3586 E> */ B(StaCurrentContextSlot), U8(247), /* 3601 S> */ B(LdaZero), - /* 3601 E> */ B(StaCurrentContextSlot), U8(249), + /* 3601 E> */ B(StaCurrentContextSlot), U8(248), /* 3616 S> */ B(LdaZero), - /* 3616 E> */ B(StaCurrentContextSlot), U8(250), + /* 3616 E> */ B(StaCurrentContextSlot), U8(249), /* 3631 S> */ B(LdaZero), - /* 3631 E> */ B(StaCurrentContextSlot), U8(251), + /* 3631 E> */ B(StaCurrentContextSlot), U8(250), /* 3646 S> */ B(LdaZero), - /* 3646 E> */ B(StaCurrentContextSlot), U8(252), + /* 3646 E> */ B(StaCurrentContextSlot), U8(251), /* 3661 S> */ B(LdaZero), - /* 3661 E> */ B(StaCurrentContextSlot), U8(253), + /* 3661 E> */ B(StaCurrentContextSlot), U8(252), /* 3676 S> */ B(LdaZero), - /* 3676 E> */ B(StaCurrentContextSlot), U8(254), + /* 3676 E> */ B(StaCurrentContextSlot), U8(253), /* 3691 S> */ B(LdaZero), - /* 3691 E> */ B(StaCurrentContextSlot), U8(255), - /* 3694 S> */ B(LdaGlobal), U8(1), U8(0), + /* 3691 E> */ B(StaCurrentContextSlot), U8(254), + /* 3706 S> */ B(LdaZero), + /* 3706 E> */ B(StaCurrentContextSlot), U8(255), + /* 3709 S> */ B(LdaGlobal), U8(1), U8(0), B(Star), R(2), - /* 3694 E> */ B(CallUndefinedReceiver0), R(2), U8(2), - /* 3710 S> */ B(LdaSmi), I8(100), - /* 3710 E> */ B(Wide), B(StaCurrentContextSlot), U16(256), - /* 3715 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256), - /* 3723 S> */ B(Return), + /* 3709 E> */ B(CallUndefinedReceiver0), R(2), U8(2), + /* 3725 S> */ B(LdaSmi), I8(100), + /* 3725 E> */ B(Wide), B(StaCurrentContextSlot), U16(256), + /* 3730 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256), + /* 3738 S> */ B(Return), ] constant pool: [ SCOPE_INFO_TYPE, diff --git a/test/cctest/interpreter/bytecode_expectations/CountOperators.golden b/test/cctest/interpreter/bytecode_expectations/CountOperators.golden index 8fdd8d4a18..6acb493766 100644 --- a/test/cctest/interpreter/bytecode_expectations/CountOperators.golden +++ b/test/cctest/interpreter/bytecode_expectations/CountOperators.golden @@ -213,12 +213,12 @@ bytecodes: [ B(PushContext), R(1), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(0), - /* 78 S> */ B(LdaCurrentContextSlot), U8(4), + /* 78 S> */ B(LdaCurrentContextSlot), U8(3), B(Inc), U8(0), - /* 87 E> */ B(StaCurrentContextSlot), U8(4), + /* 87 E> */ B(StaCurrentContextSlot), U8(3), /* 89 S> */ B(Return), ] constant pool: [ @@ -240,14 +240,14 @@ bytecodes: [ B(PushContext), R(1), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(0), - /* 78 S> */ B(LdaCurrentContextSlot), U8(4), + /* 78 S> */ B(LdaCurrentContextSlot), U8(3), B(ToNumeric), U8(0), B(Star), R(2), B(Dec), U8(0), - /* 86 E> */ B(StaCurrentContextSlot), U8(4), + /* 86 E> */ B(StaCurrentContextSlot), U8(3), B(Ldar), R(2), /* 89 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/CreateArguments.golden b/test/cctest/interpreter/bytecode_expectations/CreateArguments.golden index 8440089ec9..3c24990241 100644 --- a/test/cctest/interpreter/bytecode_expectations/CreateArguments.golden +++ b/test/cctest/interpreter/bytecode_expectations/CreateArguments.golden @@ -77,7 +77,7 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(1), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), B(Star), R(0), /* 10 E> */ B(StackCheck), @@ -103,11 +103,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(arg1), B(StaCurrentContextSlot), U8(5), - B(Ldar), R(arg2), + B(Ldar), R(arg1), B(StaCurrentContextSlot), U8(4), + B(Ldar), R(arg2), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), B(Star), R(0), /* 10 E> */ B(StackCheck), diff --git a/test/cctest/interpreter/bytecode_expectations/Delete.golden b/test/cctest/interpreter/bytecode_expectations/Delete.golden index 4af18ededd..b240dd242f 100644 --- a/test/cctest/interpreter/bytecode_expectations/Delete.golden +++ b/test/cctest/interpreter/bytecode_expectations/Delete.golden @@ -104,9 +104,9 @@ bytecodes: [ B(PushContext), R(0), /* 30 E> */ B(StackCheck), /* 56 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), - /* 56 E> */ B(StaCurrentContextSlot), U8(4), + /* 56 E> */ B(StaCurrentContextSlot), U8(3), /* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2), - /* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(4), + /* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(1), B(LdaSmi), I8(1), B(DeletePropertyStrict), R(1), diff --git a/test/cctest/interpreter/bytecode_expectations/Eval.golden b/test/cctest/interpreter/bytecode_expectations/Eval.golden index 6bd20762ab..22b17ec769 100644 --- a/test/cctest/interpreter/bytecode_expectations/Eval.golden +++ b/test/cctest/interpreter/bytecode_expectations/Eval.golden @@ -16,11 +16,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 30 E> */ B(StackCheck), /* 34 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), B(Star), R(2), diff --git a/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden b/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden index 43b6c0ed22..38ea92462a 100644 --- a/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden +++ b/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden @@ -145,7 +145,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), @@ -318,7 +318,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), @@ -495,7 +495,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), @@ -634,7 +634,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(2), B(PushContext), R(3), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(5), B(LdaFalse), B(Star), R(6), diff --git a/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden b/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden index c643232d4b..964d6a08c1 100644 --- a/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden +++ b/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden @@ -114,19 +114,19 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(4), B(PushContext), R(2), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(5), - B(Ldar), R(arg0), B(StaCurrentContextSlot), U8(4), + B(Ldar), R(arg0), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(7), - B(Ldar), R(1), B(StaCurrentContextSlot), U8(6), + B(Ldar), R(1), + B(StaCurrentContextSlot), U8(5), /* 10 E> */ B(StackCheck), B(CreateBlockContext), U8(1), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - /* 34 S> */ B(LdaContextSlot), R(3), U8(4), U8(0), + B(StaCurrentContextSlot), U8(3), + /* 34 S> */ B(LdaContextSlot), R(3), U8(3), U8(0), B(Star), R(6), B(GetIterator), R(6), U8(0), U8(2), B(Star), R(5), @@ -152,9 +152,9 @@ bytecodes: [ B(CreateBlockContext), U8(5), B(PushContext), R(11), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 29 S> */ B(Ldar), R(0), - /* 29 E> */ B(StaCurrentContextSlot), U8(4), + /* 29 E> */ B(StaCurrentContextSlot), U8(3), /* 41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(12), U8(3), B(Star), R(12), B(LdaConstant), U8(7), @@ -273,9 +273,9 @@ bytecodes: [ B(CreateBlockContext), U8(3), B(PushContext), R(9), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 29 S> */ B(Ldar), R(0), - /* 29 E> */ B(StaCurrentContextSlot), U8(4), + /* 29 E> */ B(StaCurrentContextSlot), U8(3), /* 41 S> */ B(CreateClosure), U8(4), U8(0), U8(2), B(Star), R(10), /* 67 E> */ B(CallUndefinedReceiver0), R(10), U8(12), @@ -782,7 +782,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(5), B(PushContext), R(6), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(8), B(LdaFalse), B(Star), R(9), @@ -915,7 +915,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(4), B(PushContext), R(5), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(7), B(LdaTrue), B(Star), R(8), diff --git a/test/cctest/interpreter/bytecode_expectations/IIFEWithOneshotOpt.golden b/test/cctest/interpreter/bytecode_expectations/IIFEWithOneshotOpt.golden index 9bffe3bf79..516ca89563 100644 --- a/test/cctest/interpreter/bytecode_expectations/IIFEWithOneshotOpt.golden +++ b/test/cctest/interpreter/bytecode_expectations/IIFEWithOneshotOpt.golden @@ -756,11 +756,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(1), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), B(Star), R(0), /* 46 E> */ B(StackCheck), - /* 53 S> */ B(LdaCurrentContextSlot), U8(4), + /* 53 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(2), B(LdaSmi), I8(3), /* 57 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0), @@ -789,11 +789,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(1), B(Ldar), R(arg0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), B(Star), R(0), /* 30 E> */ B(StackCheck), - /* 37 S> */ B(LdaCurrentContextSlot), U8(4), + /* 37 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(2), B(LdaSmi), I8(3), /* 41 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0), diff --git a/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden b/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden index e6bf0f717e..03b7f335c9 100644 --- a/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden +++ b/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden @@ -16,10 +16,10 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 72 S> */ B(Return), ] @@ -40,11 +40,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), - /* 72 S> */ B(LdaImmutableCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), + /* 72 S> */ B(LdaImmutableCurrentContextSlot), U8(3), /* 81 S> */ B(Return), ] constant pool: [ @@ -64,15 +64,15 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(20), B(Star), R(1), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), /* 45 E> */ B(ThrowReferenceErrorIfHole), U8(1), B(Ldar), R(1), - B(StaCurrentContextSlot), U8(4), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 78 S> */ B(Return), ] @@ -94,12 +94,12 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(1), B(PushContext), R(0), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), - /* 42 E> */ B(StaCurrentContextSlot), U8(4), + /* 42 E> */ B(StaCurrentContextSlot), U8(3), /* 46 S> */ B(LdaSmi), I8(20), - /* 48 E> */ B(StaCurrentContextSlot), U8(4), + /* 48 E> */ B(StaCurrentContextSlot), U8(3), B(LdaUndefined), /* 80 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden b/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden index 0d2e6ba7b2..051b819142 100644 --- a/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden +++ b/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden @@ -17,11 +17,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 10 E> */ B(StackCheck), /* 14 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), B(Star), R(2), @@ -62,11 +62,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 10 E> */ B(StackCheck), /* 14 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), B(Star), R(2), @@ -108,11 +108,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 10 E> */ B(StackCheck), /* 14 S> */ B(LdaSmi), I8(20), /* 16 E> */ B(StaLookupSlot), U8(1), U8(0), @@ -159,11 +159,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 38 E> */ B(StackCheck), /* 44 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), B(Star), R(2), @@ -181,7 +181,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), B(Star), R(2), /* 44 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2), - /* 66 S> */ B(LdaLookupContextSlot), U8(3), U8(6), U8(1), + /* 66 S> */ B(LdaLookupContextSlot), U8(3), U8(5), U8(1), /* 75 S> */ B(Return), ] constant pool: [ @@ -209,11 +209,11 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(1), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(0), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(0), + B(StaCurrentContextSlot), U8(4), /* 34 E> */ B(StackCheck), /* 40 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), B(Star), R(2), diff --git a/test/cctest/interpreter/bytecode_expectations/OuterContextVariables.golden b/test/cctest/interpreter/bytecode_expectations/OuterContextVariables.golden index c2aed3d158..626b3419fe 100644 --- a/test/cctest/interpreter/bytecode_expectations/OuterContextVariables.golden +++ b/test/cctest/interpreter/bytecode_expectations/OuterContextVariables.golden @@ -23,9 +23,9 @@ parameter count: 1 bytecode array length: 13 bytecodes: [ /* 97 E> */ B(StackCheck), - /* 102 S> */ B(LdaImmutableContextSlot), R(context), U8(4), U8(1), + /* 102 S> */ B(LdaImmutableContextSlot), R(context), U8(3), U8(1), B(Star), R(0), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), /* 118 E> */ B(Mul), R(0), U8(0), /* 129 S> */ B(Return), ] @@ -51,8 +51,8 @@ parameter count: 1 bytecode array length: 9 bytecodes: [ /* 97 E> */ B(StackCheck), - /* 102 S> */ B(LdaImmutableCurrentContextSlot), U8(4), - /* 111 E> */ B(StaContextSlot), R(context), U8(4), U8(1), + /* 102 S> */ B(LdaImmutableCurrentContextSlot), U8(3), + /* 111 E> */ B(StaContextSlot), R(context), U8(3), U8(1), B(LdaUndefined), /* 123 S> */ B(Return), ] diff --git a/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden b/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden index 6fc00999a5..4107aad7e3 100644 --- a/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden +++ b/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden @@ -27,13 +27,13 @@ parameter count: 1 bytecode array length: 95 bytecodes: [ /* 67 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), - /* 76 S> */ B(LdaCurrentContextSlot), U8(4), + /* 76 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(3), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 81 E> */ B(LdaKeyedProperty), R(this), U8(0), B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1), B(Star), R(4), @@ -45,16 +45,16 @@ bytecodes: [ B(CallProperty1), R(5), R(this), R(4), U8(5), /* 91 S> */ B(LdaSmi), I8(1), B(Star), R(2), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(4), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 96 E> */ B(LdaKeyedProperty), R(this), U8(7), B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(4), U8(1), B(Star), R(5), B(CallProperty1), R(5), R(this), R(2), U8(9), - /* 108 S> */ B(LdaCurrentContextSlot), U8(4), + /* 108 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(3), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 120 E> */ B(LdaKeyedProperty), R(this), U8(11), B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1), B(Star), R(4), @@ -80,7 +80,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 48 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), @@ -111,7 +111,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 41 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), @@ -142,7 +142,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 48 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), @@ -173,7 +173,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 41 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), diff --git a/test/cctest/interpreter/bytecode_expectations/PrivateAccessorDeclaration.golden b/test/cctest/interpreter/bytecode_expectations/PrivateAccessorDeclaration.golden index 2c0af93787..2a181fdb01 100644 --- a/test/cctest/interpreter/bytecode_expectations/PrivateAccessorDeclaration.golden +++ b/test/cctest/interpreter/bytecode_expectations/PrivateAccessorDeclaration.golden @@ -25,7 +25,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(3), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -40,7 +40,7 @@ bytecodes: [ B(CreateClosure), U8(5), U8(2), U8(2), B(Star), R(6), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -75,7 +75,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(3), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -90,7 +90,7 @@ bytecodes: [ B(LdaNull), B(Star), R(6), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -124,7 +124,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(3), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -139,7 +139,7 @@ bytecodes: [ B(CreateClosure), U8(4), U8(1), U8(2), B(Star), R(6), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -179,7 +179,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(7), B(CreateClosure), U8(3), U8(0), U8(2), @@ -194,7 +194,7 @@ bytecodes: [ B(CreateClosure), U8(5), U8(2), U8(2), B(Star), R(7), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(3), R(0), /* 38 E> */ B(CreateBlockContext), U8(6), @@ -202,7 +202,7 @@ bytecodes: [ B(LdaConstant), U8(8), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 118 E> */ B(CreateClosure), U8(9), U8(3), U8(2), B(Star), R(3), B(LdaConstant), U8(7), @@ -216,7 +216,7 @@ bytecodes: [ B(CreateClosure), U8(11), U8(5), U8(2), B(Star), R(7), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(3), R(1), B(LdaUndefined), @@ -274,7 +274,7 @@ bytecodes: [ B(LdaConstant), U8(6), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2), B(Star), R(3), B(LdaConstant), U8(5), @@ -290,7 +290,7 @@ bytecodes: [ B(LdaNull), B(Star), R(7), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(3), R(1), /* 122 S> */ B(Ldar), R(1), @@ -348,7 +348,7 @@ bytecodes: [ B(LdaConstant), U8(6), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 80 E> */ B(CreateClosure), U8(7), U8(2), U8(2), B(Star), R(3), B(LdaConstant), U8(5), @@ -364,7 +364,7 @@ bytecodes: [ B(Ldar), R(5), B(StaNamedProperty), R(7), U8(9), U8(0), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(3), R(1), /* 126 S> */ B(Ldar), R(1), diff --git a/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden b/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden index 62603a93f8..7ef39c30ab 100644 --- a/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden +++ b/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden @@ -34,7 +34,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -56,7 +56,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(8), U8(2), U8(2), @@ -140,7 +140,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(4), U8(0), U8(2), @@ -170,13 +170,13 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaConstant), U8(10), B(Star), R(5), B(LdaConstant), U8(10), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(12), U8(3), U8(2), @@ -210,7 +210,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 356 E> */ B(CreateClosure), U8(19), U8(8), U8(2), B(Star), R(4), B(LdaConstant), U8(18), diff --git a/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden b/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden index d41b342187..3d0e1fb6bf 100644 --- a/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden +++ b/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden @@ -22,13 +22,13 @@ parameter count: 1 bytecode array length: 28 bytecodes: [ /* 44 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), - /* 49 S> */ B(LdaCurrentContextSlot), U8(5), + /* 49 S> */ B(LdaCurrentContextSlot), U8(4), /* 61 E> */ B(LdaKeyedProperty), R(this), U8(0), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(2), /* 63 E> */ B(CallAnyReceiver), R(2), R(this), U8(1), U8(2), /* 66 S> */ B(Return), @@ -53,7 +53,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 44 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), @@ -85,7 +85,7 @@ parameter count: 1 bytecode array length: 29 bytecodes: [ /* 44 E> */ B(StackCheck), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), B(Star), R(1), B(Mov), R(this), R(0), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), diff --git a/test/cctest/interpreter/bytecode_expectations/PrivateMethodDeclaration.golden b/test/cctest/interpreter/bytecode_expectations/PrivateMethodDeclaration.golden index 6456245741..388269d88b 100644 --- a/test/cctest/interpreter/bytecode_expectations/PrivateMethodDeclaration.golden +++ b/test/cctest/interpreter/bytecode_expectations/PrivateMethodDeclaration.golden @@ -24,7 +24,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(3), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -35,7 +35,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3), B(Star), R(4), B(CreateClosure), U8(4), U8(1), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(5), R(0), B(LdaUndefined), @@ -72,7 +72,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(7), B(CreateClosure), U8(3), U8(0), U8(2), @@ -83,7 +83,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(Star), R(5), B(CreateClosure), U8(4), U8(1), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(6), R(0), /* 38 E> */ B(CreateBlockContext), U8(5), @@ -91,7 +91,7 @@ bytecodes: [ B(LdaConstant), U8(7), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 93 E> */ B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(3), B(LdaConstant), U8(6), @@ -101,7 +101,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(Star), R(5), B(CreateClosure), U8(9), U8(3), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(2), B(Mov), R(6), R(1), B(LdaUndefined), @@ -156,7 +156,7 @@ bytecodes: [ B(LdaConstant), U8(6), B(Star), R(4), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2), B(Star), R(3), B(LdaConstant), U8(5), @@ -166,7 +166,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(Star), R(5), B(CreateClosure), U8(8), U8(3), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(6), B(Ldar), R(5), B(StaNamedProperty), R(6), U8(9), U8(0), diff --git a/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden b/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden index 4b893861bf..93e3eaed6a 100644 --- a/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden +++ b/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden @@ -29,7 +29,7 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(2), U8(0), U8(2), @@ -37,7 +37,7 @@ bytecodes: [ B(LdaConstant), U8(1), B(Star), R(4), /* 60 S> */ B(LdaConstant), U8(3), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(7), B(Mov), R(3), R(5), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4), @@ -50,7 +50,7 @@ bytecodes: [ /* 38 E> */ B(CreateBlockContext), U8(6), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(8), U8(2), U8(2), @@ -58,7 +58,7 @@ bytecodes: [ B(LdaConstant), U8(7), B(Star), R(4), /* 99 S> */ B(LdaConstant), U8(3), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(7), B(Mov), R(3), R(5), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4), @@ -128,7 +128,7 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(3), U8(0), U8(2), @@ -143,7 +143,7 @@ bytecodes: [ B(LdaConstant), U8(1), B(Star), R(5), /* 77 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), B(Mov), R(4), R(6), B(Mov), R(10), R(7), @@ -157,7 +157,7 @@ bytecodes: [ /* 38 E> */ B(CreateBlockContext), U8(8), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(11), U8(3), U8(2), @@ -172,7 +172,7 @@ bytecodes: [ B(LdaConstant), U8(9), B(Star), R(5), /* 133 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), B(CreateClosure), U8(13), U8(5), U8(2), B(Star), R(9), @@ -188,13 +188,13 @@ bytecodes: [ /* 90 E> */ B(CreateBlockContext), U8(15), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 236 E> */ B(CreateClosure), U8(17), U8(7), U8(2), B(Star), R(4), B(LdaConstant), U8(16), B(Star), R(5), /* 256 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), B(Mov), R(4), R(6), B(Mov), R(1), R(7), diff --git a/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden b/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden index 1a4ad60629..cdb05253af 100644 --- a/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden +++ b/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden @@ -51,19 +51,19 @@ bytecodes: [ B(CreateFunctionContext), U8(0), U8(3), B(PushContext), R(4), B(Ldar), R(this), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateMappedArguments), - B(StaCurrentContextSlot), U8(6), - B(Ldar), R(3), B(StaCurrentContextSlot), U8(5), + B(Ldar), R(3), + B(StaCurrentContextSlot), U8(4), /* 10 E> */ B(StackCheck), B(CreateBlockContext), U8(1), B(PushContext), R(5), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), /* 30 S> */ B(LdaZero), - /* 30 E> */ B(StaCurrentContextSlot), U8(4), - B(LdaCurrentContextSlot), U8(4), + /* 30 E> */ B(StaCurrentContextSlot), U8(3), + B(LdaCurrentContextSlot), U8(3), B(Star), R(0), B(LdaSmi), I8(1), B(Star), R(1), @@ -71,21 +71,21 @@ bytecodes: [ B(CreateBlockContext), U8(2), B(PushContext), R(6), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Ldar), R(0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaSmi), I8(1), B(TestEqual), R(1), U8(0), B(JumpIfFalse), U8(7), B(LdaZero), B(Star), R(1), B(Jump), U8(8), - /* 43 S> */ B(LdaCurrentContextSlot), U8(4), + /* 43 S> */ B(LdaCurrentContextSlot), U8(3), B(Inc), U8(1), - /* 43 E> */ B(StaCurrentContextSlot), U8(4), + /* 43 E> */ B(StaCurrentContextSlot), U8(3), B(LdaSmi), I8(1), B(Star), R(2), - /* 35 S> */ B(LdaCurrentContextSlot), U8(4), + /* 35 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(7), B(LdaSmi), I8(10), /* 35 E> */ B(TestLessThan), R(7), U8(2), @@ -115,7 +115,7 @@ bytecodes: [ /* 48 E> */ B(CallUndefinedReceiver1), R(7), R(8), U8(6), B(LdaZero), B(Star), R(2), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(0), B(JumpLoop), U8(56), I8(1), B(LdaSmi), I8(1), @@ -160,21 +160,21 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(4), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Ldar), R(0), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaSmi), I8(1), B(TestEqual), R(1), U8(0), B(JumpIfFalse), U8(7), B(LdaZero), B(Star), R(1), B(Jump), U8(8), - /* 43 S> */ B(LdaCurrentContextSlot), U8(4), + /* 43 S> */ B(LdaCurrentContextSlot), U8(3), B(Inc), U8(1), - /* 43 E> */ B(StaCurrentContextSlot), U8(4), + /* 43 E> */ B(StaCurrentContextSlot), U8(3), B(LdaSmi), I8(1), B(Star), R(2), - /* 35 S> */ B(LdaCurrentContextSlot), U8(4), + /* 35 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(5), B(LdaSmi), I8(10), /* 35 E> */ B(TestLessThan), R(5), U8(2), @@ -191,7 +191,7 @@ bytecodes: [ /* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(4), B(LdaZero), B(Star), R(2), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(0), B(JumpLoop), U8(24), I8(1), B(LdaSmi), I8(1), @@ -404,7 +404,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(3), B(PushContext), R(4), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(6), B(LdaFalse), B(Star), R(7), @@ -474,7 +474,7 @@ bytecodes: [ B(SetPendingMessage), B(Ldar), R(2), B(PushContext), R(3), - B(LdaImmutableCurrentContextSlot), U8(4), + B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(5), B(LdaTrue), B(Star), R(6), diff --git a/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden b/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden index f47a701358..9d436d364b 100644 --- a/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden +++ b/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden @@ -33,9 +33,9 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(2), U8(0), U8(2), @@ -43,7 +43,7 @@ bytecodes: [ B(LdaConstant), U8(1), B(Star), R(4), /* 60 S> */ B(LdaConstant), U8(3), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(7), /* 92 S> */ B(LdaConstant), U8(4), B(Star), R(8), @@ -53,7 +53,7 @@ bytecodes: [ B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(8), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5), B(Star), R(4), B(CreateClosure), U8(6), U8(1), U8(2), @@ -67,9 +67,9 @@ bytecodes: [ /* 38 E> */ B(CreateBlockContext), U8(9), B(PushContext), R(2), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(11), U8(3), U8(2), @@ -77,7 +77,7 @@ bytecodes: [ B(LdaConstant), U8(10), B(Star), R(4), /* 131 S> */ B(LdaConstant), U8(3), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(7), /* 176 S> */ B(LdaConstant), U8(4), B(Star), R(8), @@ -87,7 +87,7 @@ bytecodes: [ B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(8), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5), B(Star), R(4), B(CreateClosure), U8(12), U8(4), U8(2), @@ -168,9 +168,9 @@ bytecodes: [ B(CreateBlockContext), U8(0), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(3), U8(0), U8(2), @@ -185,7 +185,7 @@ bytecodes: [ B(LdaConstant), U8(1), B(Star), R(5), /* 77 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), /* 109 S> */ B(LdaConstant), U8(6), B(Star), R(9), @@ -196,7 +196,7 @@ bytecodes: [ B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(9), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5), B(Star), R(5), B(CreateClosure), U8(8), U8(2), U8(2), @@ -210,9 +210,9 @@ bytecodes: [ /* 38 E> */ B(CreateBlockContext), U8(11), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(11), B(CreateClosure), U8(14), U8(4), U8(2), @@ -227,7 +227,7 @@ bytecodes: [ B(LdaConstant), U8(12), B(Star), R(5), /* 165 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), /* 210 S> */ B(LdaConstant), U8(6), B(Star), R(9), @@ -238,7 +238,7 @@ bytecodes: [ B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(9), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(CreateClosure), U8(16), U8(6), U8(2), B(Star), R(10), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(6), @@ -254,15 +254,15 @@ bytecodes: [ /* 122 E> */ B(CreateBlockContext), U8(19), B(PushContext), R(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), /* 313 E> */ B(CreateClosure), U8(21), U8(9), U8(2), B(Star), R(4), B(LdaConstant), U8(20), B(Star), R(5), /* 333 S> */ B(LdaConstant), U8(5), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(Star), R(8), /* 378 S> */ B(LdaConstant), U8(6), B(Star), R(9), @@ -273,7 +273,7 @@ bytecodes: [ B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(9), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5), B(Star), R(5), B(CreateClosure), U8(22), U8(10), U8(2), diff --git a/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden b/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden index 888fca1cf8..969599e5fa 100644 --- a/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden +++ b/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden @@ -22,7 +22,7 @@ parameter count: 1 bytecode array length: 36 bytecodes: [ /* 51 E> */ B(StackCheck), - /* 56 S> */ B(LdaCurrentContextSlot), U8(5), + /* 56 S> */ B(LdaCurrentContextSlot), U8(4), B(TestReferenceEqual), R(this), B(Mov), R(this), R(1), B(JumpIfTrue), U8(18), @@ -32,7 +32,7 @@ bytecodes: [ B(Star), R(3), B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2), B(Throw), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(0), /* 70 E> */ B(CallAnyReceiver), R(0), R(1), U8(1), U8(0), /* 73 S> */ B(Return), @@ -120,9 +120,9 @@ parameter count: 1 bytecode array length: 143 bytecodes: [ /* 81 E> */ B(StackCheck), - /* 90 S> */ B(LdaCurrentContextSlot), U8(4), + /* 90 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(1), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 94 E> */ B(TestReferenceEqual), R(this), B(Mov), R(this), R(0), B(JumpIfTrue), U8(18), @@ -142,9 +142,9 @@ bytecodes: [ B(CallProperty1), R(3), R(0), R(2), U8(3), /* 105 S> */ B(LdaSmi), I8(1), B(Star), R(0), - B(LdaCurrentContextSlot), U8(4), + B(LdaCurrentContextSlot), U8(3), B(Star), R(2), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 109 E> */ B(TestReferenceEqual), R(this), B(Mov), R(this), R(1), B(JumpIfTrue), U8(18), @@ -157,9 +157,9 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(2), U8(1), B(Star), R(3), B(CallProperty1), R(3), R(1), R(0), U8(5), - /* 122 S> */ B(LdaCurrentContextSlot), U8(4), + /* 122 S> */ B(LdaCurrentContextSlot), U8(3), B(Star), R(1), - B(LdaCurrentContextSlot), U8(5), + B(LdaCurrentContextSlot), U8(4), /* 133 E> */ B(TestReferenceEqual), R(this), B(Mov), R(this), R(0), B(JumpIfTrue), U8(18), diff --git a/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodDeclaration.golden b/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodDeclaration.golden index fda73f08d2..1211a83d3e 100644 --- a/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodDeclaration.golden +++ b/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodDeclaration.golden @@ -31,7 +31,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(3), B(Star), R(3), B(CreateClosure), U8(3), U8(1), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(4), R(0), B(LdaUndefined), @@ -75,7 +75,7 @@ bytecodes: [ B(LdaNull), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -119,7 +119,7 @@ bytecodes: [ B(CreateClosure), U8(3), U8(1), U8(2), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -164,7 +164,7 @@ bytecodes: [ B(CreateClosure), U8(4), U8(2), U8(2), B(Star), R(5), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(PopContext), R(1), B(Mov), R(2), R(0), B(LdaUndefined), @@ -199,7 +199,7 @@ bytecodes: [ B(LdaConstant), U8(2), B(Star), R(3), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), - B(StaCurrentContextSlot), U8(6), + B(StaCurrentContextSlot), U8(5), B(LdaTheHole), B(Star), R(6), B(CreateClosure), U8(3), U8(0), U8(2), @@ -210,9 +210,9 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3), B(Star), R(4), B(CreateClosure), U8(4), U8(1), U8(2), - B(StaCurrentContextSlot), U8(4), + B(StaCurrentContextSlot), U8(3), B(CreateClosure), U8(5), U8(2), U8(2), - B(StaCurrentContextSlot), U8(5), + B(StaCurrentContextSlot), U8(4), B(PopContext), R(1), B(Mov), R(5), R(0), B(LdaUndefined), diff --git a/test/cctest/interpreter/test-bytecode-generator.cc b/test/cctest/interpreter/test-bytecode-generator.cc index be0b129418..0043a07505 100644 --- a/test/cctest/interpreter/test-bytecode-generator.cc +++ b/test/cctest/interpreter/test-bytecode-generator.cc @@ -59,13 +59,14 @@ namespace interpreter { #define REPEAT_64_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS() #define REPEAT_128_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS() -#define REPEAT_250_UNIQUE_VARS() \ +#define REPEAT_251_UNIQUE_VARS() \ REPEAT_128_UNIQUE_VARS() \ REPEAT_64_UNIQUE_VARS() \ REPEAT_32_UNIQUE_VARS() \ REPEAT_16_UNIQUE_VARS() \ REPEAT_8_UNIQUE_VARS() \ UNIQUE_VAR() \ + UNIQUE_VAR() \ UNIQUE_VAR() #define REPEAT_2_LOAD_UNIQUE_PROPERTY() \ @@ -1736,10 +1737,10 @@ TEST(CallNew) { } TEST(ContextVariables) { - // The wide check below relies on MIN_CONTEXT_SLOTS + 3 + 249 == 256, if this + // The wide check below relies on MIN_CONTEXT_SLOTS + 3 + 250 == 256, if this // ever changes, the REPEAT_XXX should be changed to output the correct number // of unique variables to trigger the wide slot load / store. - STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS + 3 + 249 == 256); + STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS + 3 + 250 == 256); InitializedIgnitionHandleScope scope; BytecodeExpectationsPrinter printer(CcTest::isolate()); @@ -1757,7 +1758,7 @@ TEST(ContextVariables) { "{ let b = 2; return function() { a + b; }; }\n", "'use strict';\n" - REPEAT_250_UNIQUE_VARS() + REPEAT_251_UNIQUE_VARS() "eval();\n" "var b = 100;\n" "return b\n", @@ -3548,7 +3549,7 @@ TEST(TemplateLiterals) { #undef REPEAT_32_UNIQUE_VARS #undef REPEAT_64_UNIQUE_VARS #undef REPEAT_128_UNIQUE_VARS -#undef REPEAT_250_UNIQUE_VARS +#undef REPEAT_251_UNIQUE_VARS #undef LOAD_UNIQUE_PROPERTY #undef REPEAT_2_LOAD_UNIQUE_PROPERTY #undef REPEAT_4_LOAD_UNIQUE_PROPERTY diff --git a/tools/gen-postmortem-metadata.py b/tools/gen-postmortem-metadata.py index ffdc30b106..0dcbf5d0f3 100644 --- a/tools/gen-postmortem-metadata.py +++ b/tools/gen-postmortem-metadata.py @@ -193,8 +193,6 @@ consts_misc = [ { 'name': 'context_idx_scope_info', 'value': 'Context::SCOPE_INFO_INDEX' }, - { 'name': 'context_idx_native', - 'value': 'Context::NATIVE_CONTEXT_INDEX' }, { 'name': 'context_idx_prev', 'value': 'Context::PREVIOUS_INDEX' }, { 'name': 'context_idx_ext', diff --git a/tools/v8heapconst.py b/tools/v8heapconst.py index 102f5a0753..119a27c1ce 100644 --- a/tools/v8heapconst.py +++ b/tools/v8heapconst.py @@ -212,133 +212,123 @@ KNOWN_MAPS = { ("read_only_space", 0x00929): (131, "ScopeInfoMap"), ("read_only_space", 0x00979): (166, "SharedFunctionInfoMap"), ("read_only_space", 0x009c9): (154, "CodeMap"), - ("read_only_space", 0x00a19): (141, "FunctionContextMap"), - ("read_only_space", 0x00a69): (153, "CellMap"), - ("read_only_space", 0x00ab9): (165, "GlobalPropertyCellMap"), - ("read_only_space", 0x00b09): (70, "ForeignMap"), - ("read_only_space", 0x00b59): (152, "TransitionArrayMap"), + ("read_only_space", 0x00a19): (153, "CellMap"), + ("read_only_space", 0x00a69): (165, "GlobalPropertyCellMap"), + ("read_only_space", 0x00ab9): (70, "ForeignMap"), + ("read_only_space", 0x00b09): (152, "TransitionArrayMap"), + ("read_only_space", 0x00b59): (45, "ThinOneByteStringMap"), ("read_only_space", 0x00ba9): (159, "FeedbackVectorMap"), ("read_only_space", 0x00c49): (67, "ArgumentsMarkerMap"), ("read_only_space", 0x00ce9): (67, "ExceptionMap"), ("read_only_space", 0x00d89): (67, "TerminationExceptionMap"), ("read_only_space", 0x00e31): (67, "OptimizedOutMap"), ("read_only_space", 0x00ed1): (67, "StaleRegisterMap"), - ("read_only_space", 0x00f41): (143, "NativeContextMap"), - ("read_only_space", 0x00f91): (142, "ModuleContextMap"), - ("read_only_space", 0x00fe1): (140, "EvalContextMap"), - ("read_only_space", 0x01031): (144, "ScriptContextMap"), - ("read_only_space", 0x01081): (136, "AwaitContextMap"), - ("read_only_space", 0x010d1): (137, "BlockContextMap"), - ("read_only_space", 0x01121): (138, "CatchContextMap"), - ("read_only_space", 0x01171): (145, "WithContextMap"), - ("read_only_space", 0x011c1): (139, "DebugEvaluateContextMap"), - ("read_only_space", 0x01211): (132, "ScriptContextTableMap"), - ("read_only_space", 0x01261): (129, "ClosureFeedbackCellArrayMap"), - ("read_only_space", 0x012b1): (158, "FeedbackMetadataArrayMap"), - ("read_only_space", 0x01301): (118, "ArrayListMap"), - ("read_only_space", 0x01351): (65, "BigIntMap"), - ("read_only_space", 0x013a1): (130, "ObjectBoilerplateDescriptionMap"), - ("read_only_space", 0x013f1): (134, "BytecodeArrayMap"), - ("read_only_space", 0x01441): (155, "CodeDataContainerMap"), - ("read_only_space", 0x01491): (135, "FixedDoubleArrayMap"), - ("read_only_space", 0x014e1): (121, "GlobalDictionaryMap"), - ("read_only_space", 0x01531): (95, "ManyClosuresCellMap"), - ("read_only_space", 0x01581): (118, "ModuleInfoMap"), - ("read_only_space", 0x015d1): (122, "NameDictionaryMap"), - ("read_only_space", 0x01621): (95, "NoClosuresCellMap"), - ("read_only_space", 0x01671): (123, "NumberDictionaryMap"), - ("read_only_space", 0x016c1): (95, "OneClosureCellMap"), - ("read_only_space", 0x01711): (124, "OrderedHashMapMap"), - ("read_only_space", 0x01761): (125, "OrderedHashSetMap"), - ("read_only_space", 0x017b1): (126, "OrderedNameDictionaryMap"), - ("read_only_space", 0x01801): (163, "PreparseDataMap"), - ("read_only_space", 0x01851): (164, "PropertyArrayMap"), - ("read_only_space", 0x018a1): (91, "SideEffectCallHandlerInfoMap"), - ("read_only_space", 0x018f1): (91, "SideEffectFreeCallHandlerInfoMap"), - ("read_only_space", 0x01941): (91, "NextCallSideEffectFreeCallHandlerInfoMap"), - ("read_only_space", 0x01991): (127, "SimpleNumberDictionaryMap"), - ("read_only_space", 0x019e1): (118, "SloppyArgumentsElementsMap"), - ("read_only_space", 0x01a31): (146, "SmallOrderedHashMapMap"), - ("read_only_space", 0x01a81): (147, "SmallOrderedHashSetMap"), - ("read_only_space", 0x01ad1): (148, "SmallOrderedNameDictionaryMap"), - ("read_only_space", 0x01b21): (68, "SourceTextModuleMap"), - ("read_only_space", 0x01b71): (128, "StringTableMap"), - ("read_only_space", 0x01bc1): (69, "SyntheticModuleMap"), - ("read_only_space", 0x01c11): (150, "UncompiledDataWithoutPreparseDataMap"), - ("read_only_space", 0x01c61): (149, "UncompiledDataWithPreparseDataMap"), - ("read_only_space", 0x01cb1): (167, "WeakArrayListMap"), - ("read_only_space", 0x01d01): (120, "EphemeronHashTableMap"), - ("read_only_space", 0x01d51): (157, "EmbedderDataArrayMap"), - ("read_only_space", 0x01da1): (168, "WeakCellMap"), - ("read_only_space", 0x01df1): (58, "NativeSourceStringMap"), - ("read_only_space", 0x01e41): (32, "StringMap"), - ("read_only_space", 0x01e91): (41, "ConsOneByteStringMap"), - ("read_only_space", 0x01ee1): (33, "ConsStringMap"), - ("read_only_space", 0x01f31): (45, "ThinOneByteStringMap"), - ("read_only_space", 0x01f81): (37, "ThinStringMap"), - ("read_only_space", 0x01fd1): (35, "SlicedStringMap"), - ("read_only_space", 0x02021): (43, "SlicedOneByteStringMap"), - ("read_only_space", 0x02071): (34, "ExternalStringMap"), - ("read_only_space", 0x020c1): (42, "ExternalOneByteStringMap"), - ("read_only_space", 0x02111): (50, "UncachedExternalStringMap"), - ("read_only_space", 0x02161): (0, "InternalizedStringMap"), - ("read_only_space", 0x021b1): (2, "ExternalInternalizedStringMap"), - ("read_only_space", 0x02201): (10, "ExternalOneByteInternalizedStringMap"), - ("read_only_space", 0x02251): (18, "UncachedExternalInternalizedStringMap"), - ("read_only_space", 0x022a1): (26, "UncachedExternalOneByteInternalizedStringMap"), - ("read_only_space", 0x022f1): (58, "UncachedExternalOneByteStringMap"), - ("read_only_space", 0x02341): (67, "SelfReferenceMarkerMap"), - ("read_only_space", 0x023a9): (94, "EnumCacheMap"), - ("read_only_space", 0x02449): (88, "ArrayBoilerplateDescriptionMap"), - ("read_only_space", 0x02639): (97, "InterceptorInfoMap"), - ("read_only_space", 0x04f79): (71, "PromiseFulfillReactionJobTaskMap"), - ("read_only_space", 0x04fc9): (72, "PromiseRejectReactionJobTaskMap"), - ("read_only_space", 0x05019): (73, "CallableTaskMap"), - ("read_only_space", 0x05069): (74, "CallbackTaskMap"), - ("read_only_space", 0x050b9): (75, "PromiseResolveThenableJobTaskMap"), - ("read_only_space", 0x05109): (78, "FunctionTemplateInfoMap"), - ("read_only_space", 0x05159): (79, "ObjectTemplateInfoMap"), - ("read_only_space", 0x051a9): (80, "Tuple2Map"), - ("read_only_space", 0x051f9): (81, "Tuple3Map"), - ("read_only_space", 0x05249): (82, "AccessCheckInfoMap"), - ("read_only_space", 0x05299): (83, "AccessorInfoMap"), - ("read_only_space", 0x052e9): (84, "AccessorPairMap"), - ("read_only_space", 0x05339): (85, "AliasedArgumentsEntryMap"), - ("read_only_space", 0x05389): (86, "AllocationMementoMap"), - ("read_only_space", 0x053d9): (89, "AsmWasmDataMap"), - ("read_only_space", 0x05429): (90, "AsyncGeneratorRequestMap"), - ("read_only_space", 0x05479): (92, "ClassPositionsMap"), - ("read_only_space", 0x054c9): (93, "DebugInfoMap"), - ("read_only_space", 0x05519): (96, "FunctionTemplateRareDataMap"), - ("read_only_space", 0x05569): (99, "InterpreterDataMap"), - ("read_only_space", 0x055b9): (100, "PromiseCapabilityMap"), - ("read_only_space", 0x05609): (101, "PromiseReactionMap"), - ("read_only_space", 0x05659): (102, "PrototypeInfoMap"), - ("read_only_space", 0x056a9): (103, "ScriptMap"), - ("read_only_space", 0x056f9): (107, "SourcePositionTableWithFrameCacheMap"), - ("read_only_space", 0x05749): (108, "SourceTextModuleInfoEntryMap"), - ("read_only_space", 0x05799): (109, "StackFrameInfoMap"), - ("read_only_space", 0x057e9): (110, "StackTraceFrameMap"), - ("read_only_space", 0x05839): (111, "TemplateObjectDescriptionMap"), - ("read_only_space", 0x05889): (112, "WasmCapiFunctionDataMap"), - ("read_only_space", 0x058d9): (113, "WasmDebugInfoMap"), - ("read_only_space", 0x05929): (114, "WasmExceptionTagMap"), - ("read_only_space", 0x05979): (115, "WasmExportedFunctionDataMap"), - ("read_only_space", 0x059c9): (116, "WasmIndirectFunctionTableMap"), - ("read_only_space", 0x05a19): (117, "WasmJSFunctionDataMap"), - ("read_only_space", 0x05a69): (98, "InternalClassMap"), - ("read_only_space", 0x05ab9): (105, "SmiPairMap"), - ("read_only_space", 0x05b09): (104, "SmiBoxMap"), - ("read_only_space", 0x05b59): (106, "SortStateMap"), - ("read_only_space", 0x05ba9): (87, "AllocationSiteWithWeakNextMap"), - ("read_only_space", 0x05bf9): (87, "AllocationSiteWithoutWeakNextMap"), - ("read_only_space", 0x05c49): (76, "LoadHandler1Map"), - ("read_only_space", 0x05c99): (76, "LoadHandler2Map"), - ("read_only_space", 0x05ce9): (76, "LoadHandler3Map"), - ("read_only_space", 0x05d39): (77, "StoreHandler0Map"), - ("read_only_space", 0x05d89): (77, "StoreHandler1Map"), - ("read_only_space", 0x05dd9): (77, "StoreHandler2Map"), - ("read_only_space", 0x05e29): (77, "StoreHandler3Map"), + ("read_only_space", 0x00f41): (132, "ScriptContextTableMap"), + ("read_only_space", 0x00f91): (129, "ClosureFeedbackCellArrayMap"), + ("read_only_space", 0x00fe1): (158, "FeedbackMetadataArrayMap"), + ("read_only_space", 0x01031): (118, "ArrayListMap"), + ("read_only_space", 0x01081): (65, "BigIntMap"), + ("read_only_space", 0x010d1): (130, "ObjectBoilerplateDescriptionMap"), + ("read_only_space", 0x01121): (134, "BytecodeArrayMap"), + ("read_only_space", 0x01171): (155, "CodeDataContainerMap"), + ("read_only_space", 0x011c1): (135, "FixedDoubleArrayMap"), + ("read_only_space", 0x01211): (121, "GlobalDictionaryMap"), + ("read_only_space", 0x01261): (95, "ManyClosuresCellMap"), + ("read_only_space", 0x012b1): (118, "ModuleInfoMap"), + ("read_only_space", 0x01301): (122, "NameDictionaryMap"), + ("read_only_space", 0x01351): (95, "NoClosuresCellMap"), + ("read_only_space", 0x013a1): (123, "NumberDictionaryMap"), + ("read_only_space", 0x013f1): (95, "OneClosureCellMap"), + ("read_only_space", 0x01441): (124, "OrderedHashMapMap"), + ("read_only_space", 0x01491): (125, "OrderedHashSetMap"), + ("read_only_space", 0x014e1): (126, "OrderedNameDictionaryMap"), + ("read_only_space", 0x01531): (163, "PreparseDataMap"), + ("read_only_space", 0x01581): (164, "PropertyArrayMap"), + ("read_only_space", 0x015d1): (91, "SideEffectCallHandlerInfoMap"), + ("read_only_space", 0x01621): (91, "SideEffectFreeCallHandlerInfoMap"), + ("read_only_space", 0x01671): (91, "NextCallSideEffectFreeCallHandlerInfoMap"), + ("read_only_space", 0x016c1): (127, "SimpleNumberDictionaryMap"), + ("read_only_space", 0x01711): (118, "SloppyArgumentsElementsMap"), + ("read_only_space", 0x01761): (146, "SmallOrderedHashMapMap"), + ("read_only_space", 0x017b1): (147, "SmallOrderedHashSetMap"), + ("read_only_space", 0x01801): (148, "SmallOrderedNameDictionaryMap"), + ("read_only_space", 0x01851): (68, "SourceTextModuleMap"), + ("read_only_space", 0x018a1): (128, "StringTableMap"), + ("read_only_space", 0x018f1): (69, "SyntheticModuleMap"), + ("read_only_space", 0x01941): (150, "UncompiledDataWithoutPreparseDataMap"), + ("read_only_space", 0x01991): (149, "UncompiledDataWithPreparseDataMap"), + ("read_only_space", 0x019e1): (167, "WeakArrayListMap"), + ("read_only_space", 0x01a31): (120, "EphemeronHashTableMap"), + ("read_only_space", 0x01a81): (157, "EmbedderDataArrayMap"), + ("read_only_space", 0x01ad1): (168, "WeakCellMap"), + ("read_only_space", 0x01b21): (58, "NativeSourceStringMap"), + ("read_only_space", 0x01b71): (32, "StringMap"), + ("read_only_space", 0x01bc1): (41, "ConsOneByteStringMap"), + ("read_only_space", 0x01c11): (33, "ConsStringMap"), + ("read_only_space", 0x01c61): (37, "ThinStringMap"), + ("read_only_space", 0x01cb1): (35, "SlicedStringMap"), + ("read_only_space", 0x01d01): (43, "SlicedOneByteStringMap"), + ("read_only_space", 0x01d51): (34, "ExternalStringMap"), + ("read_only_space", 0x01da1): (42, "ExternalOneByteStringMap"), + ("read_only_space", 0x01df1): (50, "UncachedExternalStringMap"), + ("read_only_space", 0x01e41): (0, "InternalizedStringMap"), + ("read_only_space", 0x01e91): (2, "ExternalInternalizedStringMap"), + ("read_only_space", 0x01ee1): (10, "ExternalOneByteInternalizedStringMap"), + ("read_only_space", 0x01f31): (18, "UncachedExternalInternalizedStringMap"), + ("read_only_space", 0x01f81): (26, "UncachedExternalOneByteInternalizedStringMap"), + ("read_only_space", 0x01fd1): (58, "UncachedExternalOneByteStringMap"), + ("read_only_space", 0x02021): (67, "SelfReferenceMarkerMap"), + ("read_only_space", 0x02089): (94, "EnumCacheMap"), + ("read_only_space", 0x02129): (88, "ArrayBoilerplateDescriptionMap"), + ("read_only_space", 0x02319): (97, "InterceptorInfoMap"), + ("read_only_space", 0x04c59): (71, "PromiseFulfillReactionJobTaskMap"), + ("read_only_space", 0x04ca9): (72, "PromiseRejectReactionJobTaskMap"), + ("read_only_space", 0x04cf9): (73, "CallableTaskMap"), + ("read_only_space", 0x04d49): (74, "CallbackTaskMap"), + ("read_only_space", 0x04d99): (75, "PromiseResolveThenableJobTaskMap"), + ("read_only_space", 0x04de9): (78, "FunctionTemplateInfoMap"), + ("read_only_space", 0x04e39): (79, "ObjectTemplateInfoMap"), + ("read_only_space", 0x04e89): (80, "Tuple2Map"), + ("read_only_space", 0x04ed9): (81, "Tuple3Map"), + ("read_only_space", 0x04f29): (82, "AccessCheckInfoMap"), + ("read_only_space", 0x04f79): (83, "AccessorInfoMap"), + ("read_only_space", 0x04fc9): (84, "AccessorPairMap"), + ("read_only_space", 0x05019): (85, "AliasedArgumentsEntryMap"), + ("read_only_space", 0x05069): (86, "AllocationMementoMap"), + ("read_only_space", 0x050b9): (89, "AsmWasmDataMap"), + ("read_only_space", 0x05109): (90, "AsyncGeneratorRequestMap"), + ("read_only_space", 0x05159): (92, "ClassPositionsMap"), + ("read_only_space", 0x051a9): (93, "DebugInfoMap"), + ("read_only_space", 0x051f9): (96, "FunctionTemplateRareDataMap"), + ("read_only_space", 0x05249): (99, "InterpreterDataMap"), + ("read_only_space", 0x05299): (100, "PromiseCapabilityMap"), + ("read_only_space", 0x052e9): (101, "PromiseReactionMap"), + ("read_only_space", 0x05339): (102, "PrototypeInfoMap"), + ("read_only_space", 0x05389): (103, "ScriptMap"), + ("read_only_space", 0x053d9): (107, "SourcePositionTableWithFrameCacheMap"), + ("read_only_space", 0x05429): (108, "SourceTextModuleInfoEntryMap"), + ("read_only_space", 0x05479): (109, "StackFrameInfoMap"), + ("read_only_space", 0x054c9): (110, "StackTraceFrameMap"), + ("read_only_space", 0x05519): (111, "TemplateObjectDescriptionMap"), + ("read_only_space", 0x05569): (112, "WasmCapiFunctionDataMap"), + ("read_only_space", 0x055b9): (113, "WasmDebugInfoMap"), + ("read_only_space", 0x05609): (114, "WasmExceptionTagMap"), + ("read_only_space", 0x05659): (115, "WasmExportedFunctionDataMap"), + ("read_only_space", 0x056a9): (116, "WasmIndirectFunctionTableMap"), + ("read_only_space", 0x056f9): (117, "WasmJSFunctionDataMap"), + ("read_only_space", 0x05749): (98, "InternalClassMap"), + ("read_only_space", 0x05799): (105, "SmiPairMap"), + ("read_only_space", 0x057e9): (104, "SmiBoxMap"), + ("read_only_space", 0x05839): (106, "SortStateMap"), + ("read_only_space", 0x05889): (87, "AllocationSiteWithWeakNextMap"), + ("read_only_space", 0x058d9): (87, "AllocationSiteWithoutWeakNextMap"), + ("read_only_space", 0x05929): (76, "LoadHandler1Map"), + ("read_only_space", 0x05979): (76, "LoadHandler2Map"), + ("read_only_space", 0x059c9): (76, "LoadHandler3Map"), + ("read_only_space", 0x05a19): (77, "StoreHandler0Map"), + ("read_only_space", 0x05a69): (77, "StoreHandler1Map"), + ("read_only_space", 0x05ab9): (77, "StoreHandler2Map"), + ("read_only_space", 0x05b09): (77, "StoreHandler3Map"), ("map_space", 0x00121): (1057, "ExternalMap"), ("map_space", 0x00171): (1072, "JSMessageObjectMap"), } @@ -363,31 +353,31 @@ KNOWN_OBJECTS = { ("read_only_space", 0x00d59): "TerminationException", ("read_only_space", 0x00e01): "OptimizedOut", ("read_only_space", 0x00ea1): "StaleRegister", - ("read_only_space", 0x02391): "EmptyEnumCache", - ("read_only_space", 0x023f9): "EmptyPropertyArray", - ("read_only_space", 0x02409): "EmptyByteArray", - ("read_only_space", 0x02419): "EmptyObjectBoilerplateDescription", - ("read_only_space", 0x02431): "EmptyArrayBoilerplateDescription", - ("read_only_space", 0x02499): "EmptyClosureFeedbackCellArray", - ("read_only_space", 0x024a9): "EmptySloppyArgumentsElements", - ("read_only_space", 0x024c9): "EmptySlowElementDictionary", - ("read_only_space", 0x02511): "EmptyOrderedHashMap", - ("read_only_space", 0x02539): "EmptyOrderedHashSet", - ("read_only_space", 0x02561): "EmptyFeedbackMetadata", - ("read_only_space", 0x02571): "EmptyPropertyCell", - ("read_only_space", 0x02599): "EmptyPropertyDictionary", - ("read_only_space", 0x025e9): "NoOpInterceptorInfo", - ("read_only_space", 0x02689): "EmptyWeakArrayList", - ("read_only_space", 0x026a1): "InfinityValue", - ("read_only_space", 0x026b1): "MinusZeroValue", - ("read_only_space", 0x026c1): "MinusInfinityValue", - ("read_only_space", 0x026d1): "SelfReferenceMarker", - ("read_only_space", 0x02729): "OffHeapTrampolineRelocationInfo", - ("read_only_space", 0x02741): "TrampolineTrivialCodeDataContainer", - ("read_only_space", 0x02759): "TrampolinePromiseRejectionCodeDataContainer", - ("read_only_space", 0x02771): "GlobalThisBindingScopeInfo", - ("read_only_space", 0x027d9): "EmptyFunctionScopeInfo", - ("read_only_space", 0x02829): "HashSeed", + ("read_only_space", 0x02071): "EmptyEnumCache", + ("read_only_space", 0x020d9): "EmptyPropertyArray", + ("read_only_space", 0x020e9): "EmptyByteArray", + ("read_only_space", 0x020f9): "EmptyObjectBoilerplateDescription", + ("read_only_space", 0x02111): "EmptyArrayBoilerplateDescription", + ("read_only_space", 0x02179): "EmptyClosureFeedbackCellArray", + ("read_only_space", 0x02189): "EmptySloppyArgumentsElements", + ("read_only_space", 0x021a9): "EmptySlowElementDictionary", + ("read_only_space", 0x021f1): "EmptyOrderedHashMap", + ("read_only_space", 0x02219): "EmptyOrderedHashSet", + ("read_only_space", 0x02241): "EmptyFeedbackMetadata", + ("read_only_space", 0x02251): "EmptyPropertyCell", + ("read_only_space", 0x02279): "EmptyPropertyDictionary", + ("read_only_space", 0x022c9): "NoOpInterceptorInfo", + ("read_only_space", 0x02369): "EmptyWeakArrayList", + ("read_only_space", 0x02381): "InfinityValue", + ("read_only_space", 0x02391): "MinusZeroValue", + ("read_only_space", 0x023a1): "MinusInfinityValue", + ("read_only_space", 0x023b1): "SelfReferenceMarker", + ("read_only_space", 0x02409): "OffHeapTrampolineRelocationInfo", + ("read_only_space", 0x02421): "TrampolineTrivialCodeDataContainer", + ("read_only_space", 0x02439): "TrampolinePromiseRejectionCodeDataContainer", + ("read_only_space", 0x02451): "GlobalThisBindingScopeInfo", + ("read_only_space", 0x024b9): "EmptyFunctionScopeInfo", + ("read_only_space", 0x02509): "HashSeed", ("old_space", 0x00121): "ArgumentsIteratorAccessor", ("old_space", 0x00191): "ArrayLengthAccessor", ("old_space", 0x00201): "BoundFunctionLengthAccessor",