Reland "[runtime] Move Context::native_context to the map"

This is a reland of f05bae1e0d

Previously I presumed that the context read from a frame in the profiler was
a valid context. Turns out that on non-intel we're not guaranteed that the
frame is properly set up. In the case we looked at, the profiler took a
sample right before writing the frame marker indicating a builtin frame,
causing the "context" pointer from that frame to be a bytecode array. Since
we'll read random garbage on the stack as a possible context pointer, I made
the code reading the native context from it a little more defensive.

Bug: v8:9860

Original change's description:
> [runtime] Move Context::native_context to the map
>
> Remove the native context slot from contexts by making context maps
> native-context-specific. Now we require 2 loads to go from a context to the
> native context, but we have 1 field fewer to store when creating contexts.
>
> Change-Id: I3c0d7c50c94060c4129db684f46a567de6f30e8d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1859629
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> Reviewed-by: Maya Lekova <mslekova@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#64296}

Change-Id: If9461e9b21d35a260d71c79d7f95e518cc429e09
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1864930
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64314}
This commit is contained in:
Toon Verwaest 2019-10-16 13:10:21 +02:00 committed by Commit Bot
parent b38dfaf3a6
commit c7c47c68f2
73 changed files with 1042 additions and 1068 deletions

View File

@ -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;

View File

@ -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<Context>';
extern class BlockContext extends Context generates 'TNode<Context>';
@ -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;

View File

@ -45,7 +45,9 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOld(
TNode<Context> closure_context = UncheckedCast<Context>(base);
{
// Initialize the await context, storing the {generator} as extension.
StoreMapNoWriteBarrier(closure_context, RootIndex::kAwaitContextMap);
TNode<Map> 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<Object> const empty_scope_info =
@ -56,8 +58,6 @@ TNode<Object> 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<Object> AsyncBuiltinsAssembler::AwaitOptimized(
TNode<Context> closure_context = UncheckedCast<Context>(base);
{
// Initialize the await context, storing the {generator} as extension.
StoreMapNoWriteBarrier(closure_context, RootIndex::kAwaitContextMap);
TNode<Map> 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<Object> const empty_scope_info =
@ -149,8 +151,6 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOptimized(
native_context);
StoreContextElementNoWriteBarrier(closure_context, Context::EXTENSION_INDEX,
generator);
StoreContextElementNoWriteBarrier(
closure_context, Context::NATIVE_CONTEXT_INDEX, native_context);
}
// Initialize resolve handler

View File

@ -412,8 +412,9 @@ TNode<JSReceiver> 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<Object> constructor = LoadObjectField(
var_template.value(), Map::kConstructorOrBackPointerOffset);
TNode<Object> constructor =
LoadObjectField(var_template.value(),
Map::kConstructorOrBackPointerOrNativeContextOffset);
GotoIf(TaggedIsSmi(constructor), &holder_next);
// Now there are three cases for {constructor} that we care

View File

@ -196,8 +196,8 @@ TNode<JSObject> ConstructorBuiltinsAssembler::EmitFastNewObject(
// Fall back to runtime if the target differs from the new target's
// initial map constructor.
TNode<Object> new_target_constructor =
LoadObjectField(initial_map, Map::kConstructorOrBackPointerOffset);
TNode<Object> new_target_constructor = LoadObjectField(
initial_map, Map::kConstructorOrBackPointerOrNativeContextOffset);
GotoIf(TaggedNotEqual(target, new_target_constructor), call_runtime);
TVARIABLE(HeapObject, properties);
@ -230,19 +230,21 @@ TNode<Context> ConstructorBuiltinsAssembler::EmitFastNewFunctionContext(
TNode<Context> function_context =
UncheckedCast<Context>(AllocateInNewSpace(size));
RootIndex context_type;
TNode<NativeContext> 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> map = CAST(LoadContextElement(native_context, index));
// Set up the header.
StoreMapNoWriteBarrier(function_context, context_type);
StoreMapNoWriteBarrier(function_context, map);
TNode<IntPtrT> min_context_slots = IntPtrConstant(Context::MIN_CONTEXT_SLOTS);
// TODO(ishell): for now, length also includes MIN_CONTEXT_SLOTS.
TNode<IntPtrT> length = IntPtrAdd(slots_intptr, min_context_slots);
@ -254,9 +256,6 @@ TNode<Context> ConstructorBuiltinsAssembler::EmitFastNewFunctionContext(
context);
StoreObjectFieldNoWriteBarrier(function_context, Context::kExtensionOffset,
TheHoleConstant());
TNode<NativeContext> native_context = LoadNativeContext(context);
StoreObjectFieldNoWriteBarrier(function_context,
Context::kNativeContextOffset, native_context);
// Initialize the varrest of the slots to undefined.
TNode<Oddball> undefined = UndefinedConstant();

View File

@ -119,7 +119,9 @@ Node* ProxiesCodeStubAssembler::CreateProxyRevokeFunctionContext(
Node* proxy, Node* native_context) {
TNode<HeapObject> const context =
Allocate(FixedArray::SizeFor(kProxyContextLength));
StoreMapNoWriteBarrier(context, RootIndex::kFunctionContextMap);
TNode<Map> 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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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

View File

@ -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());

View File

@ -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

View File

@ -1835,7 +1835,8 @@ TNode<IntPtrT> CodeStubAssembler::LoadMapConstructorFunctionIndex(
TNode<Object> CodeStubAssembler::LoadMapConstructor(SloppyTNode<Map> 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<Object> CodeStubAssembler::LoadMapConstructor(SloppyTNode<Map> map) {
TNode<BoolT> 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<WordT> CodeStubAssembler::LoadMapEnumLength(SloppyTNode<Map> map) {
}
TNode<Object> CodeStubAssembler::LoadMapBackPointer(SloppyTNode<Map> map) {
TNode<HeapObject> object =
CAST(LoadObjectField(map, Map::kConstructorOrBackPointerOffset));
TNode<HeapObject> object = CAST(LoadObjectField(
map, Map::kConstructorOrBackPointerOrNativeContextOffset));
return Select<Object>(
IsMap(object), [=] { return object; },
[=] { return UndefinedConstant(); });
@ -2732,15 +2734,17 @@ void CodeStubAssembler::StoreContextElementNoWriteBarrier(
TNode<NativeContext> CodeStubAssembler::LoadNativeContext(
SloppyTNode<Context> context) {
return UncheckedCast<NativeContext>(
LoadContextElement(context, Context::NATIVE_CONTEXT_INDEX));
TNode<Map> map = LoadMap(context);
return CAST(LoadObjectField(
map, Map::kConstructorOrBackPointerOrNativeContextOffset));
}
TNode<Context> CodeStubAssembler::LoadModuleContext(
SloppyTNode<Context> context) {
TNode<Map> module_map = ModuleContextMapConstant();
Variable cur_context(this, MachineRepresentation::kTaggedPointer);
cur_context.Bind(context);
TNode<NativeContext> native_context = LoadNativeContext(context);
TNode<Map> module_map = CAST(
LoadContextElement(native_context, Context::MODULE_CONTEXT_MAP_INDEX));
TVariable<Object> cur_context(context, this);
Label context_found(this);
@ -2751,12 +2755,13 @@ TNode<Context> 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<BoolT> CodeStubAssembler::IsPrivateName(SloppyTNode<Symbol> symbol) {
TNode<BoolT> CodeStubAssembler::IsNativeContext(
SloppyTNode<HeapObject> object) {
return TaggedEqual(LoadMap(object), NativeContextMapConstant());
return HasInstanceType(object, NATIVE_CONTEXT_TYPE);
}
TNode<BoolT> CodeStubAssembler::IsFixedDoubleArray(
@ -8699,8 +8704,9 @@ TNode<Object> CodeStubAssembler::GetConstructor(TNode<Map> 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> context) {
void CodeStubAssembler::InitializeFunctionContext(Node* native_context,
Node* context, int slots) {
DCHECK_GE(slots, Context::MIN_CONTEXT_SLOTS);
StoreMapNoWriteBarrier(context, RootIndex::kFunctionContextMap);
TNode<Map> 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<JSArray> CodeStubAssembler::ArrayCreate(TNode<Context> context,

View File

@ -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<Object> LoadConstructorOrBackPointer(TNode<Map> map) {
return LoadObjectField(map, Map::kConstructorOrBackPointerOffset);
return LoadObjectField(map,
Map::kConstructorOrBackPointerOrNativeContextOffset);
}
// Reference is the CSA-equivalent of a Torque reference value,

View File

@ -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) {

View File

@ -103,6 +103,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void Jump(Handle<Code> 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

View File

@ -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) {

View File

@ -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

View File

@ -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) \

View File

@ -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> 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());
}

View File

@ -1955,6 +1955,7 @@ void MapData::SerializeConstructor(JSHeapBroker* broker) {
TraceScope tracer(broker, this, "MapData::SerializeConstructor");
Handle<Map> map = Handle<Map>::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> map = Handle<Map>::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<NativeContext> context = Handle<NativeContext>::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)

View File

@ -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,

View File

@ -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);

View File

@ -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:

View File

@ -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++);

View File

@ -652,8 +652,12 @@ void Map::MapVerify(Isolate* isolate) {
CHECK(instance_size() == kVariableSizeSentinel ||
(kTaggedSize <= instance_size() &&
static_cast<size_t>(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(

View File

@ -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";

View File

@ -1410,20 +1410,20 @@ Handle<Symbol> Factory::NewPrivateNameSymbol(Handle<String> name) {
return symbol;
}
Handle<Context> Factory::NewContext(RootIndex map_root_index, int size,
Handle<Context> Factory::NewContext(Handle<Map> 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<Heap::kRetryOrFail>(size, allocation);
result.set_map_after_allocation(*map);
Handle<Context> 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<Context> Factory::NewContext(RootIndex map_root_index, int size,
}
Handle<NativeContext> Factory::NewNativeContext() {
Handle<Map> map = NewMap(NATIVE_CONTEXT_TYPE, kVariableSizeSentinel);
Handle<NativeContext> context = Handle<NativeContext>::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<Context> Factory::NewScriptContext(Handle<NativeContext> outer,
DCHECK_EQ(scope_info->scope_type(), SCRIPT_SCOPE);
int variadic_part_length = scope_info->ContextLength();
Handle<Context> 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<Context> Factory::NewModuleContext(Handle<SourceTextModule> module,
DCHECK_EQ(scope_info->scope_type(), MODULE_SCOPE);
int variadic_part_length = scope_info->ContextLength();
Handle<Context> 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<Context> Factory::NewFunctionContext(Handle<Context> outer,
Handle<ScopeInfo> scope_info) {
RootIndex mapRootIndex;
Handle<Map> 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> 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<Context> Factory::NewCatchContext(Handle<Context> previous,
// TODO(ishell): Take the details from CatchContext class.
int variadic_part_length = Context::MIN_CONTEXT_SLOTS + 1;
Handle<Context> 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<Context> Factory::NewDebugEvaluateContext(Handle<Context> previous,
: Handle<HeapObject>::cast(extension);
// TODO(ishell): Take the details from DebugEvaluateContextContext class.
int variadic_part_length = Context::MIN_CONTEXT_SLOTS + 2;
Handle<Context> c = NewContext(RootIndex::kDebugEvaluateContextMap,
Handle<Context> 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<Context> Factory::NewWithContext(Handle<Context> previous,
// TODO(ishell): Take the details from WithContext class.
int variadic_part_length = Context::MIN_CONTEXT_SLOTS;
Handle<Context> 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<Context> Factory::NewBlockContext(Handle<Context> previous,
scope_info->scope_type() == CLASS_SCOPE);
int variadic_part_length = scope_info->ContextLength();
Handle<Context> 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<Context> Factory::NewBuiltinContext(Handle<NativeContext> native_context,
int variadic_part_length) {
DCHECK_LE(Context::MIN_CONTEXT_SLOTS, variadic_part_length);
Handle<Context> 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;
}

View File

@ -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<Context> NewContext(RootIndex map_root_index, int size,
Handle<Context> NewContext(Handle<Map> map, int size,
int variadic_part_length,
AllocationType allocation);

View File

@ -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,

View File

@ -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<JSGlobalObject> global_object,
Factory* factory = isolate_->factory();
Handle<ScriptContextTable> script_context_table =
factory->NewScriptContextTable();
native_context()->set_script_context_table(*script_context_table);
InstallGlobalThisBinding();
{ // -- C o n t e x t
Handle<Map> 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<ScriptContextTable> script_context_table =
factory->NewScriptContextTable();
native_context()->set_script_context_table(*script_context_table);
InstallGlobalThisBinding();
}
{ // --- O b j e c t ---
Handle<String> object_name = factory->Object_string();

View File

@ -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 {

View File

@ -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));

View File

@ -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

View File

@ -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();

View File

@ -105,86 +105,86 @@ using MapHandles = std::vector<Handle<Map>>;
// - 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,

View File

@ -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(),

View File

@ -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

View File

@ -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) \

View File

@ -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],

View File

@ -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<OuterContext>());
@ -125,7 +125,7 @@ TEST(ReduceJSLoadContext0) {
subcontext2->set_previous(*subcontext1);
subcontext1->set_previous(*native);
Handle<Object> 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> context_object0 = t.factory()->NewNativeContext();
Handle<Context> 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> context_object0 = factory->NewNativeContext();
Handle<Context> 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<Object> 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> context_object0 = t.factory()->NewNativeContext();
Handle<Context> 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> context_object0 = factory->NewNativeContext();
Handle<Context> 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);
}
}

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),
]

View File

@ -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),

View File

@ -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),

View File

@ -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),
]

View File

@ -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),

View File

@ -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),
]

View File

@ -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,

View File

@ -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),
]

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),
]

View File

@ -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),

View File

@ -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),
]

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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

View File

@ -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',

View File

@ -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",