Revert "Reland "Reland "[runtime] Remove extension slots from context objects"""

This reverts commit 392a1217de.

Reason for revert: Several failures on mac64 gc stress: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/9747

Original change's description:
> Reland "Reland "[runtime] Remove extension slots from context objects""
> 
> This is a reland of c48096d442
> 
> Original change's description:
> > Reland "[runtime] Remove extension slots from context objects"
> >
> > This is a reland of c07c02e1c4
> >
> > Original change's description:
> > > [runtime] Remove extension slots from context objects
> > >
> > > Context objects have an extension slot, which contains further
> > > additional data that depends on the type of the context.
> > >
> > > This CL removes the extension slot from contexts that don't need
> > > them, hence reducing memory.
> > >
> > > The following contexts will still have an extension slot: native,
> > > module, await, block and with contexts. See objects/contexts.h for
> > > what the slot is used for.
> > > The following contexts will not have an extension slot anymore (they
> > > were not used before): script, catch and builtin contexts.
> > > Eval and function contexts only have the extension slot if they
> > > contain a sloppy eval.
> > >
> > > Bug: v8:9744
> > > Change-Id: I8ca56c22fa02437bbac392ea72174ebfca80e030
> > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1863191
> > > Commit-Queue: Victor Gomes <victorgomes@google.com>
> > > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> > > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> > > Auto-Submit: Victor Gomes <victorgomes@google.com>
> > > Cr-Commit-Position: refs/heads/master@{#64372}
> >
> > TBR=verwaest@chromium.org,jgruber@chromium.org,ulan@chromium.org,leszeks@chromium.org,petermarshall@chromium.org
> >
> > Bug: v8:9744
> > Change-Id: I0749cc2d8f59940c25841736634a70047116d647
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1869192
> > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> > Commit-Queue: Peter Marshall <petermarshall@chromium.org>
> > Auto-Submit: Victor Gomes <victorgomes@google.com>
> > Cr-Commit-Position: refs/heads/master@{#64380}
> 
> TBR=verwaest@chromium.org,jgruber@chromium.org,ulan@chromium.org,leszeks@chromium.org,petermarshall@chromium.org
> 
> Bug: v8:9744
> Change-Id: I621ffe98722f8c4defaf277b8d1666484ba2963f
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1872400
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> Commit-Queue: Victor Gomes <victorgomes@google.com>
> Cr-Commit-Position: refs/heads/master@{#64451}

TBR=ulan@chromium.org,jgruber@chromium.org,petermarshall@chromium.org,leszeks@chromium.org,verwaest@chromium.org,victorgomes@google.com

Change-Id: I99a71180c6a00a87478867a8210ff9ceb46cb3ee
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:9744
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1872405
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64453}
This commit is contained in:
Clemens Backes 2019-10-22 09:47:12 +00:00 committed by Commit Bot
parent a5a0eb8bf3
commit 725e7dd75a
72 changed files with 618 additions and 794 deletions

View File

@ -196,7 +196,8 @@ Scope::Scope(Zone* zone, ScopeType scope_type, Handle<ScopeInfo> scope_info)
already_resolved_ = true; already_resolved_ = true;
#endif #endif
set_language_mode(scope_info->language_mode()); set_language_mode(scope_info->language_mode());
DCHECK_EQ(ContextHeaderLength(), num_heap_slots_); num_heap_slots_ = scope_info->ContextLength();
DCHECK_LE(Context::MIN_CONTEXT_SLOTS, num_heap_slots_);
private_name_lookup_skips_outer_class_ = private_name_lookup_skips_outer_class_ =
scope_info->PrivateNameLookupSkipsOuterClass(); scope_info->PrivateNameLookupSkipsOuterClass();
// We don't really need to use the preparsed scope data; this is just to // We don't really need to use the preparsed scope data; this is just to
@ -287,6 +288,11 @@ void Scope::SetDefaults() {
start_position_ = kNoSourcePosition; start_position_ = kNoSourcePosition;
end_position_ = kNoSourcePosition; end_position_ = kNoSourcePosition;
num_stack_slots_ = 0;
num_heap_slots_ = Context::MIN_CONTEXT_SLOTS;
set_language_mode(LanguageMode::kSloppy);
calls_eval_ = false; calls_eval_ = false;
sloppy_eval_can_extend_vars_ = false; sloppy_eval_can_extend_vars_ = false;
scope_nonlinear_ = false; scope_nonlinear_ = false;
@ -301,11 +307,6 @@ void Scope::SetDefaults() {
private_name_lookup_skips_outer_class_ = false; private_name_lookup_skips_outer_class_ = false;
must_use_preparsed_scope_data_ = false; must_use_preparsed_scope_data_ = false;
num_stack_slots_ = 0;
num_heap_slots_ = ContextHeaderLength();
set_language_mode(LanguageMode::kSloppy);
} }
bool Scope::HasSimpleParameters() { bool Scope::HasSimpleParameters() {
@ -2288,7 +2289,7 @@ void Scope::AllocateVariablesRecursively() {
this->ForEach([](Scope* scope) -> Iteration { this->ForEach([](Scope* scope) -> Iteration {
DCHECK(!scope->already_resolved_); DCHECK(!scope->already_resolved_);
if (WasLazilyParsed(scope)) return Iteration::kContinue; if (WasLazilyParsed(scope)) return Iteration::kContinue;
DCHECK_EQ(scope->ContextHeaderLength(), scope->num_heap_slots_); DCHECK_EQ(Context::MIN_CONTEXT_SLOTS, scope->num_heap_slots_);
// Allocate variables for this scope. // Allocate variables for this scope.
// Parameters must be allocated first, if any. // Parameters must be allocated first, if any.
@ -2316,14 +2317,14 @@ void Scope::AllocateVariablesRecursively() {
// If we didn't allocate any locals in the local context, then we only // If we didn't allocate any locals in the local context, then we only
// need the minimal number of slots if we must have a context. // need the minimal number of slots if we must have a context.
if (scope->num_heap_slots_ == scope->ContextHeaderLength() && if (scope->num_heap_slots_ == Context::MIN_CONTEXT_SLOTS &&
!must_have_context) { !must_have_context) {
scope->num_heap_slots_ = 0; scope->num_heap_slots_ = 0;
} }
// Allocation done. // Allocation done.
DCHECK(scope->num_heap_slots_ == 0 || DCHECK(scope->num_heap_slots_ == 0 ||
scope->num_heap_slots_ >= scope->ContextHeaderLength()); scope->num_heap_slots_ >= Context::MIN_CONTEXT_SLOTS);
return Iteration::kDescend; return Iteration::kDescend;
}); });
} }
@ -2428,7 +2429,7 @@ int Scope::ContextLocalCount() const {
is_function_scope() ? AsDeclarationScope()->function_var() : nullptr; is_function_scope() ? AsDeclarationScope()->function_var() : nullptr;
bool is_function_var_in_context = bool is_function_var_in_context =
function != nullptr && function->IsContextSlot(); function != nullptr && function->IsContextSlot();
return num_heap_slots() - ContextHeaderLength() - return num_heap_slots() - Context::MIN_CONTEXT_SLOTS -
(is_function_var_in_context ? 1 : 0); (is_function_var_in_context ? 1 : 0);
} }

View File

@ -454,26 +454,6 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
int num_stack_slots() const { return num_stack_slots_; } int num_stack_slots() const { return num_stack_slots_; }
int num_heap_slots() const { return num_heap_slots_; } int num_heap_slots() const { return num_heap_slots_; }
bool HasContextExtension() const {
switch (scope_type_) {
case MODULE_SCOPE:
case WITH_SCOPE: // DebugEvaluateContext as well
return true;
default:
DCHECK_IMPLIES(sloppy_eval_can_extend_vars_,
scope_type_ == FUNCTION_SCOPE ||
scope_type_ == EVAL_SCOPE ||
scope_type_ == BLOCK_SCOPE);
DCHECK_IMPLIES(sloppy_eval_can_extend_vars_, is_declaration_scope());
return sloppy_eval_can_extend_vars_;
}
UNREACHABLE();
}
int ContextHeaderLength() const {
return HasContextExtension() ? Context::MIN_CONTEXT_EXTENDED_SLOTS
: Context::MIN_CONTEXT_SLOTS;
}
int ContextLocalCount() const; int ContextLocalCount() const;
// Determine if we can parse a function literal in this scope lazily without // Determine if we can parse a function literal in this scope lazily without
@ -767,8 +747,7 @@ class V8_EXPORT_PRIVATE DeclarationScope : public Scope {
return is_function_scope() && IsArrowFunction(function_kind_); return is_function_scope() && IsArrowFunction(function_kind_);
} }
// Inform the scope that the corresponding code uses // Inform the scope that the corresponding code uses "super".
// "super".ContextHeaderLength();
void RecordSuperPropertyUsage() { void RecordSuperPropertyUsage() {
DCHECK(IsConciseMethod(function_kind()) || DCHECK(IsConciseMethod(function_kind()) ||
IsAccessorFunction(function_kind()) || IsAccessorFunction(function_kind()) ||
@ -824,7 +803,6 @@ class V8_EXPORT_PRIVATE DeclarationScope : public Scope {
} }
sloppy_eval_can_extend_vars_ = true; sloppy_eval_can_extend_vars_ = true;
num_heap_slots_ = Context::MIN_CONTEXT_EXTENDED_SLOTS;
} }
bool sloppy_eval_can_extend_vars() const { bool sloppy_eval_can_extend_vars() const {

View File

@ -110,11 +110,13 @@ extern class NumberDictionary extends HashTable;
type RawPtr generates 'TNode<RawPtrT>' constexpr 'void*'; type RawPtr generates 'TNode<RawPtrT>' constexpr 'void*';
extern class Code extends HeapObject; extern class Code extends HeapObject;
type BuiltinPtr extends Smi generates 'TNode<BuiltinPtr>'; type BuiltinPtr extends Smi generates 'TNode<BuiltinPtr>';
@abstract @abstract
extern class Context extends HeapObject { extern class Context extends HeapObject {
length: Smi; length: Smi;
scope_info: ScopeInfo; scope_info: ScopeInfo;
previous: Object; previous: Object;
extension: Object;
} }
extern class AwaitContext extends Context generates 'TNode<Context>'; extern class AwaitContext extends Context generates 'TNode<Context>';
extern class BlockContext extends Context generates 'TNode<Context>'; extern class BlockContext extends Context generates 'TNode<Context>';

View File

@ -260,22 +260,15 @@ TNode<JSObject> ArgumentsBuiltinsAssembler::EmitFastNewSloppyArguments(
// Copy the parameter slots and the holes in the arguments. // Copy the parameter slots and the holes in the arguments.
// We need to fill in mapped_count slots. They index the context, // We need to fill in mapped_count slots. They index the context,
// where parameters are stored in reverse order, at // where parameters are stored in reverse order, at
// context_header_size .. context_header_size+argument_count-1 // MIN_CONTEXT_SLOTS .. MIN_CONTEXT_SLOTS+argument_count-1
// The mapped parameter thus need to get indices // The mapped parameter thus need to get indices
// context_header_size+parameter_count-1 .. // MIN_CONTEXT_SLOTS+parameter_count-1 ..
// context_header_size+argument_count-mapped_count // MIN_CONTEXT_SLOTS+argument_count-mapped_count
// We loop from right to left. // We loop from right to left.
Comment("Fill in mapped parameters"); Comment("Fill in mapped parameters");
STATIC_ASSERT(Context::MIN_CONTEXT_EXTENDED_SLOTS == TVARIABLE(
Context::MIN_CONTEXT_SLOTS + 1); BInt, context_index,
TNode<IntPtrT> flags = LoadAndUntagObjectField(LoadScopeInfo(context), IntPtrOrSmiSub(IntPtrOrSmiAdd(BIntConstant(Context::MIN_CONTEXT_SLOTS),
ScopeInfo::kFlagsOffset);
TNode<BInt> context_header_size = IntPtrOrSmiAdd(
IntPtrToBInt(
Signed(DecodeWord<ScopeInfo::HasContextExtensionField>(flags))),
BIntConstant(Context::MIN_CONTEXT_SLOTS));
TVARIABLE(BInt, context_index,
IntPtrOrSmiSub(IntPtrOrSmiAdd(context_header_size,
info.formal_parameter_count), info.formal_parameter_count),
mapped_count)); mapped_count));
TNode<Oddball> the_hole = TheHoleConstant(); TNode<Oddball> the_hole = TheHoleConstant();

View File

@ -33,7 +33,7 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOld(
TNode<NativeContext> const native_context = LoadNativeContext(context); TNode<NativeContext> const native_context = LoadNativeContext(context);
static const int kWrappedPromiseOffset = static const int kWrappedPromiseOffset =
FixedArray::SizeFor(Context::MIN_CONTEXT_EXTENDED_SLOTS); FixedArray::SizeFor(Context::MIN_CONTEXT_SLOTS);
static const int kResolveClosureOffset = static const int kResolveClosureOffset =
kWrappedPromiseOffset + JSPromise::kSizeWithEmbedderFields; kWrappedPromiseOffset + JSPromise::kSizeWithEmbedderFields;
static const int kRejectClosureOffset = static const int kRejectClosureOffset =
@ -48,9 +48,8 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOld(
TNode<Map> map = CAST( TNode<Map> map = CAST(
LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX)); LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX));
StoreMapNoWriteBarrier(closure_context, map); StoreMapNoWriteBarrier(closure_context, map);
StoreObjectFieldNoWriteBarrier( StoreObjectFieldNoWriteBarrier(closure_context, Context::kLengthOffset,
closure_context, Context::kLengthOffset, SmiConstant(Context::MIN_CONTEXT_SLOTS));
SmiConstant(Context::MIN_CONTEXT_EXTENDED_SLOTS));
TNode<Object> const empty_scope_info = TNode<Object> const empty_scope_info =
LoadContextElement(native_context, Context::SCOPE_INFO_INDEX); LoadContextElement(native_context, Context::SCOPE_INFO_INDEX);
StoreContextElementNoWriteBarrier( StoreContextElementNoWriteBarrier(
@ -125,7 +124,7 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOptimized(
TNode<NativeContext> const native_context = LoadNativeContext(context); TNode<NativeContext> const native_context = LoadNativeContext(context);
static const int kResolveClosureOffset = static const int kResolveClosureOffset =
FixedArray::SizeFor(Context::MIN_CONTEXT_EXTENDED_SLOTS); FixedArray::SizeFor(Context::MIN_CONTEXT_SLOTS);
static const int kRejectClosureOffset = static const int kRejectClosureOffset =
kResolveClosureOffset + JSFunction::kSizeWithoutPrototype; kResolveClosureOffset + JSFunction::kSizeWithoutPrototype;
static const int kTotalSize = static const int kTotalSize =
@ -142,9 +141,8 @@ TNode<Object> AsyncBuiltinsAssembler::AwaitOptimized(
TNode<Map> map = CAST( TNode<Map> map = CAST(
LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX)); LoadContextElement(native_context, Context::AWAIT_CONTEXT_MAP_INDEX));
StoreMapNoWriteBarrier(closure_context, map); StoreMapNoWriteBarrier(closure_context, map);
StoreObjectFieldNoWriteBarrier( StoreObjectFieldNoWriteBarrier(closure_context, Context::kLengthOffset,
closure_context, Context::kLengthOffset, SmiConstant(Context::MIN_CONTEXT_SLOTS));
SmiConstant(Context::MIN_CONTEXT_EXTENDED_SLOTS));
TNode<Object> const empty_scope_info = TNode<Object> const empty_scope_info =
LoadContextElement(native_context, Context::SCOPE_INFO_INDEX); LoadContextElement(native_context, Context::SCOPE_INFO_INDEX);
StoreContextElementNoWriteBarrier( StoreContextElementNoWriteBarrier(

View File

@ -254,6 +254,8 @@ TNode<Context> ConstructorBuiltinsAssembler::EmitFastNewFunctionContext(
scope_info); scope_info);
StoreObjectFieldNoWriteBarrier(function_context, Context::kPreviousOffset, StoreObjectFieldNoWriteBarrier(function_context, Context::kPreviousOffset,
context); context);
StoreObjectFieldNoWriteBarrier(function_context, Context::kExtensionOffset,
TheHoleConstant());
// Initialize the varrest of the slots to undefined. // Initialize the varrest of the slots to undefined.
TNode<Oddball> undefined = UndefinedConstant(); TNode<Oddball> undefined = UndefinedConstant();

View File

@ -267,7 +267,7 @@ TNode<Context> PromiseBuiltinsAssembler::CreatePromiseContext(
TNode<HeapObject> const context = TNode<HeapObject> const context =
AllocateInNewSpace(FixedArray::SizeFor(slots)); AllocateInNewSpace(FixedArray::SizeFor(slots));
InitializeSyntheticFunctionContext(native_context, context, slots); InitializeFunctionContext(native_context, context, slots);
return CAST(context); return CAST(context);
} }

View File

@ -122,8 +122,7 @@ Node* ProxiesCodeStubAssembler::CreateProxyRevokeFunctionContext(
TNode<Map> map = CAST( TNode<Map> map = CAST(
LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX)); LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX));
StoreMapNoWriteBarrier(context, map); StoreMapNoWriteBarrier(context, map);
InitializeSyntheticFunctionContext(native_context, context, InitializeFunctionContext(native_context, context, kProxyContextLength);
kProxyContextLength);
StoreContextElementNoWriteBarrier(CAST(context), kProxySlot, proxy); StoreContextElementNoWriteBarrier(CAST(context), kProxySlot, proxy);
return context; return context;
} }

View File

@ -2644,17 +2644,6 @@ TNode<Float64T> CodeStubAssembler::LoadDoubleWithHoleCheck(
return UncheckedCast<Float64T>(Load(machine_type, base, offset)); return UncheckedCast<Float64T>(Load(machine_type, base, offset));
} }
TNode<ScopeInfo> CodeStubAssembler::LoadScopeInfo(TNode<Context> context) {
return CAST(LoadContextElement(context, Context::SCOPE_INFO_INDEX));
}
TNode<BoolT> CodeStubAssembler::LoadScopeInfoHasExtensionField(
TNode<ScopeInfo> scope_info) {
TNode<IntPtrT> value =
LoadAndUntagObjectField(scope_info, ScopeInfo::kFlagsOffset);
return IsSetWord<ScopeInfo::HasContextExtensionField>(value);
}
TNode<BoolT> CodeStubAssembler::LoadContextHasExtensionField( TNode<BoolT> CodeStubAssembler::LoadContextHasExtensionField(
SloppyTNode<Context> context) { SloppyTNode<Context> context) {
TNode<IntPtrT> value = TNode<IntPtrT> value =
@ -13477,9 +13466,8 @@ void CodeStubAssembler::PerformStackCheck(TNode<Context> context) {
BIND(&ok); BIND(&ok);
} }
void CodeStubAssembler::InitializeSyntheticFunctionContext(Node* native_context, void CodeStubAssembler::InitializeFunctionContext(Node* native_context,
Node* context, Node* context, int slots) {
int slots) {
DCHECK_GE(slots, Context::MIN_CONTEXT_SLOTS); DCHECK_GE(slots, Context::MIN_CONTEXT_SLOTS);
TNode<Map> map = CAST( TNode<Map> map = CAST(
LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX)); LoadContextElement(native_context, Context::FUNCTION_CONTEXT_MAP_INDEX));
@ -13493,6 +13481,8 @@ void CodeStubAssembler::InitializeSyntheticFunctionContext(Node* native_context,
empty_scope_info); empty_scope_info);
StoreContextElementNoWriteBarrier(context, Context::PREVIOUS_INDEX, StoreContextElementNoWriteBarrier(context, Context::PREVIOUS_INDEX,
UndefinedConstant()); UndefinedConstant());
StoreContextElementNoWriteBarrier(context, Context::EXTENSION_INDEX,
TheHoleConstant());
} }
TNode<JSArray> CodeStubAssembler::ArrayCreate(TNode<Context> context, TNode<JSArray> CodeStubAssembler::ArrayCreate(TNode<Context> context,

View File

@ -1443,11 +1443,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
TNode<BigInt> BigIntFromInt32Pair(TNode<IntPtrT> low, TNode<IntPtrT> high); TNode<BigInt> BigIntFromInt32Pair(TNode<IntPtrT> low, TNode<IntPtrT> high);
TNode<BigInt> BigIntFromUint32Pair(TNode<UintPtrT> low, TNode<UintPtrT> high); TNode<BigInt> BigIntFromUint32Pair(TNode<UintPtrT> low, TNode<UintPtrT> high);
// ScopeInfo: // Context manipulation
TNode<ScopeInfo> LoadScopeInfo(TNode<Context> context);
TNode<BoolT> LoadScopeInfoHasExtensionField(TNode<ScopeInfo> scope_info);
// Context manipulation:
TNode<BoolT> LoadContextHasExtensionField(SloppyTNode<Context> context); TNode<BoolT> LoadContextHasExtensionField(SloppyTNode<Context> context);
TNode<Object> LoadContextElement(SloppyTNode<Context> context, TNode<Object> LoadContextElement(SloppyTNode<Context> context,
int slot_index); int slot_index);
@ -3693,7 +3689,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
Label* if_bailout = nullptr, Label* if_bailout = nullptr,
TVariable<Int32T>* var_instance_type = nullptr); TVariable<Int32T>* var_instance_type = nullptr);
void InitializeSyntheticFunctionContext(Node* native_context, Node* context, void InitializeFunctionContext(Node* native_context, Node* context,
int slots); int slots);
TNode<JSArray> ArrayCreate(TNode<Context> context, TNode<Number> length); TNode<JSArray> ArrayCreate(TNode<Context> context, TNode<Number> length);

View File

@ -849,16 +849,6 @@ FieldAccess AccessBuilder::ForCellValue() {
return access; return access;
} }
// static
FieldAccess AccessBuilder::ForScopeInfoFlags() {
FieldAccess access = {
kTaggedBase, ScopeInfo::kFlagsOffset,
MaybeHandle<Name>(), MaybeHandle<Map>(),
Type::SignedSmall(), MachineType::TypeCompressedTaggedSigned(),
kNoWriteBarrier};
return access;
}
// static // static
FieldAccess AccessBuilder::ForContextSlot(size_t index) { FieldAccess AccessBuilder::ForContextSlot(size_t index) {
int offset = Context::OffsetOfElementAt(static_cast<int>(index)); int offset = Context::OffsetOfElementAt(static_cast<int>(index));

View File

@ -268,9 +268,6 @@ class V8_EXPORT_PRIVATE AccessBuilder final
static FieldAccess ForFixedArraySlot( static FieldAccess ForFixedArraySlot(
size_t index, WriteBarrierKind write_barrier_kind = kFullWriteBarrier); size_t index, WriteBarrierKind write_barrier_kind = kFullWriteBarrier);
// Provides access to ScopeInfo flags.
static FieldAccess ForScopeInfoFlags();
// Provides access to Context slots. // Provides access to Context slots.
static FieldAccess ForContextSlot(size_t index); static FieldAccess ForContextSlot(size_t index);

View File

@ -1573,22 +1573,15 @@ BytecodeGraphBuilder::Environment* BytecodeGraphBuilder::CheckContextExtensions(
// We only need to check up to the last-but-one depth, because the an eval // We only need to check up to the last-but-one depth, because the an eval
// in the same scope as the variable itself has no way of shadowing it. // in the same scope as the variable itself has no way of shadowing it.
for (uint32_t d = 0; d < depth; d++) { for (uint32_t d = 0; d < depth; d++) {
Node* has_extension = NewNode(javascript()->HasContextExtension(d)); Node* extension_slot =
NewNode(javascript()->LoadContext(d, Context::EXTENSION_INDEX, false));
Environment* undefined_extension_env;
NewBranch(has_extension);
{
SubEnvironment sub_environment(this);
NewIfTrue();
Node* extension_slot = NewNode(
javascript()->LoadContext(d, Context::EXTENSION_INDEX, false));
Node* check_no_extension = Node* check_no_extension =
NewNode(simplified()->ReferenceEqual(), extension_slot, NewNode(simplified()->ReferenceEqual(), extension_slot,
jsgraph()->UndefinedConstant()); jsgraph()->TheHoleConstant());
NewBranch(check_no_extension); NewBranch(check_no_extension);
{ {
SubEnvironment sub_environment(this); SubEnvironment sub_environment(this);
@ -1603,14 +1596,8 @@ BytecodeGraphBuilder::Environment* BytecodeGraphBuilder::CheckContextExtensions(
bytecode_iterator().current_offset())); bytecode_iterator().current_offset()));
} }
} }
NewIfTrue(); NewIfTrue();
undefined_extension_env = environment();
}
NewIfFalse();
environment()->Merge(undefined_extension_env,
bytecode_analysis().GetInLivenessFor(
bytecode_iterator().current_offset()));
mark_as_needing_eager_checkpoint(true);
// Do nothing on if there is no extension, eventually falling through to // Do nothing on if there is no extension, eventually falling through to
// the fast path. // the fast path.
} }

View File

@ -759,7 +759,6 @@ class ScopeInfoRef : public HeapObjectRef {
Handle<ScopeInfo> object() const; Handle<ScopeInfo> object() const;
int ContextLength() const; int ContextLength() const;
int ContextHeaderLength() const;
}; };
#define BROKER_SFI_FIELDS(V) \ #define BROKER_SFI_FIELDS(V) \
@ -768,7 +767,6 @@ class ScopeInfoRef : public HeapObjectRef {
V(int, function_map_index) \ V(int, function_map_index) \
V(FunctionKind, kind) \ V(FunctionKind, kind) \
V(LanguageMode, language_mode) \ V(LanguageMode, language_mode) \
V(ScopeInfo, scope_info) \
V(bool, native) \ V(bool, native) \
V(bool, HasBreakInfo) \ V(bool, HasBreakInfo) \
V(bool, HasBuiltinId) \ V(bool, HasBuiltinId) \

View File

@ -1196,8 +1196,9 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) {
Node* effect = NodeProperties::GetEffectInput(node); Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node); Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node); Node* context = NodeProperties::GetContextInput(node);
Node* extension = jsgraph()->TheHoleConstant();
AllocationBuilder a(jsgraph(), effect, control); AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 2); // Ensure fully covered. STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered.
int context_length = slot_count + Context::MIN_CONTEXT_SLOTS; int context_length = slot_count + Context::MIN_CONTEXT_SLOTS;
switch (scope_type) { switch (scope_type) {
case EVAL_SCOPE: case EVAL_SCOPE:
@ -1213,6 +1214,7 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) {
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX),
scope_info); scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension);
for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) { for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) {
a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant()); a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant());
} }
@ -1233,9 +1235,8 @@ Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) {
Node* context = NodeProperties::GetContextInput(node); Node* context = NodeProperties::GetContextInput(node);
AllocationBuilder a(jsgraph(), effect, control); AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_EXTENDED_SLOTS == STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered.
3); // Ensure fully covered. a.AllocateContext(Context::MIN_CONTEXT_SLOTS,
a.AllocateContext(Context::MIN_CONTEXT_EXTENDED_SLOTS,
native_context().with_context_map()); native_context().with_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
@ -1252,13 +1253,15 @@ Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
Node* effect = NodeProperties::GetEffectInput(node); Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node); Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node); Node* context = NodeProperties::GetContextInput(node);
Node* extension = jsgraph()->TheHoleConstant();
AllocationBuilder a(jsgraph(), effect, control); AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 2); // Ensure fully covered. STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered.
a.AllocateContext(Context::MIN_CONTEXT_SLOTS + 1, a.AllocateContext(Context::MIN_CONTEXT_SLOTS + 1,
native_context().catch_context_map()); native_context().catch_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info); a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension);
a.Store(AccessBuilder::ForContextSlot(Context::THROWN_OBJECT_INDEX), a.Store(AccessBuilder::ForContextSlot(Context::THROWN_OBJECT_INDEX),
exception); exception);
RelaxControls(node); RelaxControls(node);
@ -1277,13 +1280,15 @@ Reduction JSCreateLowering::ReduceJSCreateBlockContext(Node* node) {
Node* effect = NodeProperties::GetEffectInput(node); Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node); Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node); Node* context = NodeProperties::GetContextInput(node);
Node* extension = jsgraph()->TheHoleConstant();
AllocationBuilder a(jsgraph(), effect, control); AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 2); // Ensure fully covered. STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3); // Ensure fully covered.
a.AllocateContext(context_length, native_context().block_context_map()); a.AllocateContext(context_length, native_context().block_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX),
scope_info); scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension);
for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) { for (int i = Context::MIN_CONTEXT_SLOTS; i < context_length; ++i) {
a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant()); a.Store(AccessBuilder::ForContextSlot(i), jsgraph()->UndefinedConstant());
} }
@ -1501,8 +1506,7 @@ Node* JSCreateLowering::AllocateAliasedArguments(
a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(1), a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(1),
arguments); arguments);
for (int i = 0; i < mapped_count; ++i) { for (int i = 0; i < mapped_count; ++i) {
int idx = int idx = Context::MIN_CONTEXT_SLOTS + parameter_count - 1 - i;
shared.scope_info().ContextHeaderLength() + parameter_count - 1 - i;
a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(i + 2), a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(i + 2),
jsgraph()->Constant(idx)); jsgraph()->Constant(idx));
} }
@ -1535,12 +1539,12 @@ Node* JSCreateLowering::AllocateAliasedArguments(
// The unmapped argument values are stored yet another indirection away and // The unmapped argument values are stored yet another indirection away and
// then linked into the parameter map below, whereas mapped argument values // then linked into the parameter map below, whereas mapped argument values
// (i.e. the first {mapped_count} elements) are replaced with a hole instead. // (i.e. the first {mapped_count} elements) are replaced with a hole instead.
Node* arguments = effect = Node* arguments =
graph()->NewNode(simplified()->NewArgumentsElements(mapped_count), graph()->NewNode(simplified()->NewArgumentsElements(mapped_count),
arguments_frame, arguments_length, effect); arguments_frame, arguments_length, effect);
// Actually allocate the backing store. // Actually allocate the backing store.
AllocationBuilder a(jsgraph(), effect, control); AllocationBuilder a(jsgraph(), arguments, control);
a.AllocateArray(mapped_count + 2, a.AllocateArray(mapped_count + 2,
MapRef(broker(), factory()->sloppy_arguments_elements_map())); MapRef(broker(), factory()->sloppy_arguments_elements_map()));
a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(0), a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(0),
@ -1548,8 +1552,7 @@ Node* JSCreateLowering::AllocateAliasedArguments(
a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(1), a.Store(AccessBuilder::ForFixedArrayElement(), jsgraph()->Constant(1),
arguments); arguments);
for (int i = 0; i < mapped_count; ++i) { for (int i = 0; i < mapped_count; ++i) {
int idx = int idx = Context::MIN_CONTEXT_SLOTS + parameter_count - 1 - i;
shared.scope_info().ContextHeaderLength() + parameter_count - 1 - i;
Node* value = graph()->NewNode( Node* value = graph()->NewNode(
common()->Select(MachineRepresentation::kTagged), common()->Select(MachineRepresentation::kTagged),
graph()->NewNode(simplified()->NumberLessThan(), jsgraph()->Constant(i), graph()->NewNode(simplified()->NumberLessThan(), jsgraph()->Constant(i),

View File

@ -378,10 +378,6 @@ void JSGenericLowering::LowerJSOrdinaryHasInstance(Node* node) {
ReplaceWithStubCall(node, callable, flags); ReplaceWithStubCall(node, callable, flags);
} }
void JSGenericLowering::LowerJSHasContextExtension(Node* node) {
UNREACHABLE(); // Eliminated in typed lowering.
}
void JSGenericLowering::LowerJSLoadContext(Node* node) { void JSGenericLowering::LowerJSLoadContext(Node* node) {
UNREACHABLE(); // Eliminated in typed lowering. UNREACHABLE(); // Eliminated in typed lowering.
} }

View File

@ -1613,18 +1613,15 @@ class ScopeInfoData : public HeapObjectData {
Handle<ScopeInfo> object); Handle<ScopeInfo> object);
int context_length() const { return context_length_; } int context_length() const { return context_length_; }
int context_header_length() const { return context_header_length_; }
private: private:
int const context_length_; int const context_length_;
int const context_header_length_;
}; };
ScopeInfoData::ScopeInfoData(JSHeapBroker* broker, ObjectData** storage, ScopeInfoData::ScopeInfoData(JSHeapBroker* broker, ObjectData** storage,
Handle<ScopeInfo> object) Handle<ScopeInfo> object)
: HeapObjectData(broker, storage, object), : HeapObjectData(broker, storage, object),
context_length_(object->ContextLength()), context_length_(object->ContextLength()) {}
context_header_length_(object->ContextHeaderLength()) {}
class SharedFunctionInfoData : public HeapObjectData { class SharedFunctionInfoData : public HeapObjectData {
public: public:
@ -3494,11 +3491,6 @@ int ScopeInfoRef::ContextLength() const {
return data()->AsScopeInfo()->context_length(); return data()->AsScopeInfo()->context_length();
} }
int ScopeInfoRef::ContextHeaderLength() const {
IF_BROKER_DISABLED_ACCESS_HANDLE_C(ScopeInfo, ContextHeaderLength);
return data()->AsScopeInfo()->context_header_length();
}
bool StringRef::IsExternalString() const { bool StringRef::IsExternalString() const {
IF_BROKER_DISABLED_ACCESS_HANDLE_C(String, IsExternalString); IF_BROKER_DISABLED_ACCESS_HANDLE_C(String, IsExternalString);
return data()->AsString()->is_external_string(); return data()->AsString()->is_external_string();

View File

@ -1153,15 +1153,6 @@ const Operator* JSOperatorBuilder::StoreGlobal(LanguageMode language_mode,
parameters); // parameter parameters); // parameter
} }
const Operator* JSOperatorBuilder::HasContextExtension(size_t depth) {
return new (zone()) Operator1<size_t>( // --
IrOpcode::kJSHasContextExtension, // opcode
Operator::kNoWrite | Operator::kNoThrow, // flags
"JSHasContextExtension", // name
0, 1, 0, 1, 1, 0, // counts
depth); // parameter
}
const Operator* JSOperatorBuilder::LoadContext(size_t depth, size_t index, const Operator* JSOperatorBuilder::LoadContext(size_t depth, size_t index,
bool immutable) { bool immutable) {
ContextAccess access(depth, index, immutable); ContextAccess access(depth, index, immutable);

View File

@ -862,7 +862,6 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
const Handle<Name>& name, const Handle<Name>& name,
const FeedbackSource& feedback); const FeedbackSource& feedback);
const Operator* HasContextExtension(size_t depth);
const Operator* LoadContext(size_t depth, size_t index, bool immutable); const Operator* LoadContext(size_t depth, size_t index, bool immutable);
const Operator* StoreContext(size_t depth, size_t index); const Operator* StoreContext(size_t depth, size_t index);

View File

@ -1313,36 +1313,6 @@ Reduction JSTypedLowering::ReduceJSOrdinaryHasInstance(Node* node) {
return NoChange(); return NoChange();
} }
Reduction JSTypedLowering::ReduceJSHasContextExtension(Node* node) {
DCHECK_EQ(IrOpcode::kJSHasContextExtension, node->opcode());
size_t depth = OpParameter<size_t>(node->op());
Node* effect = NodeProperties::GetEffectInput(node);
Node* context = NodeProperties::GetContextInput(node);
Node* control = graph()->start();
for (size_t i = 0; i < depth; ++i) {
context = effect = graph()->NewNode(
simplified()->LoadField(
AccessBuilder::ForContextSlotKnownPointer(Context::PREVIOUS_INDEX)),
context, effect, control);
}
Node* const scope_info = effect = graph()->NewNode(
simplified()->LoadField(
AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX)),
context, effect, control);
Node* scope_info_flags = effect = graph()->NewNode(
simplified()->LoadField(AccessBuilder::ForScopeInfoFlags()), scope_info,
effect, control);
Node* flags_masked = graph()->NewNode(
simplified()->NumberBitwiseAnd(), scope_info_flags,
jsgraph()->SmiConstant(ScopeInfo::HasContextExtensionField::kMask));
Node* no_extension = graph()->NewNode(
simplified()->NumberEqual(), flags_masked, jsgraph()->SmiConstant(0));
Node* has_extension =
graph()->NewNode(simplified()->BooleanNot(), no_extension);
ReplaceWithValue(node, has_extension, effect, control);
return Changed(node);
}
Reduction JSTypedLowering::ReduceJSLoadContext(Node* node) { Reduction JSTypedLowering::ReduceJSLoadContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSLoadContext, node->opcode()); DCHECK_EQ(IrOpcode::kJSLoadContext, node->opcode());
ContextAccess const& access = ContextAccessOf(node->op()); ContextAccess const& access = ContextAccessOf(node->op());
@ -2401,8 +2371,6 @@ Reduction JSTypedLowering::Reduce(Node* node) {
return ReduceJSForInPrepare(node); return ReduceJSForInPrepare(node);
case IrOpcode::kJSForInNext: case IrOpcode::kJSForInNext:
return ReduceJSForInNext(node); return ReduceJSForInNext(node);
case IrOpcode::kJSHasContextExtension:
return ReduceJSHasContextExtension(node);
case IrOpcode::kJSLoadMessage: case IrOpcode::kJSLoadMessage:
return ReduceJSLoadMessage(node); return ReduceJSLoadMessage(node);
case IrOpcode::kJSStoreMessage: case IrOpcode::kJSStoreMessage:

View File

@ -51,7 +51,6 @@ class V8_EXPORT_PRIVATE JSTypedLowering final
Reduction ReduceJSLoadNamed(Node* node); Reduction ReduceJSLoadNamed(Node* node);
Reduction ReduceJSHasInPrototypeChain(Node* node); Reduction ReduceJSHasInPrototypeChain(Node* node);
Reduction ReduceJSOrdinaryHasInstance(Node* node); Reduction ReduceJSOrdinaryHasInstance(Node* node);
Reduction ReduceJSHasContextExtension(Node* node);
Reduction ReduceJSLoadContext(Node* node); Reduction ReduceJSLoadContext(Node* node);
Reduction ReduceJSStoreContext(Node* node); Reduction ReduceJSStoreContext(Node* node);
Reduction ReduceJSLoadModule(Node* node); Reduction ReduceJSLoadModule(Node* node);

View File

@ -175,7 +175,6 @@
V(JSGetSuperConstructor) V(JSGetSuperConstructor)
#define JS_CONTEXT_OP_LIST(V) \ #define JS_CONTEXT_OP_LIST(V) \
V(JSHasContextExtension) \
V(JSLoadContext) \ V(JSLoadContext) \
V(JSStoreContext) \ V(JSStoreContext) \
V(JSCreateFunctionContext) \ V(JSCreateFunctionContext) \

View File

@ -76,7 +76,6 @@ bool OperatorProperties::NeedsExactContext(const Operator* op) {
case IrOpcode::kJSDeleteProperty: case IrOpcode::kJSDeleteProperty:
case IrOpcode::kJSGeneratorStore: case IrOpcode::kJSGeneratorStore:
case IrOpcode::kJSHasProperty: case IrOpcode::kJSHasProperty:
case IrOpcode::kJSHasContextExtension:
case IrOpcode::kJSLoadContext: case IrOpcode::kJSLoadContext:
case IrOpcode::kJSLoadModule: case IrOpcode::kJSLoadModule:
case IrOpcode::kJSLoadNamed: case IrOpcode::kJSLoadNamed:

View File

@ -1475,9 +1475,6 @@ Type Typer::Visitor::TypeJSGetSuperConstructor(Node* node) {
} }
// JS context operators. // JS context operators.
Type Typer::Visitor::TypeJSHasContextExtension(Node* node) {
return Type::Boolean();
}
Type Typer::Visitor::TypeJSLoadContext(Node* node) { Type Typer::Visitor::TypeJSLoadContext(Node* node) {
ContextAccess const& access = ContextAccessOf(node->op()); ContextAccess const& access = ContextAccessOf(node->op());

View File

@ -800,9 +800,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
CheckTypeIs(node, Type::Callable()); CheckTypeIs(node, Type::Callable());
break; break;
case IrOpcode::kJSHasContextExtension:
CheckTypeIs(node, Type::Boolean());
break;
case IrOpcode::kJSLoadContext: case IrOpcode::kJSLoadContext:
// Type can be anything. // Type can be anything.
CheckTypeIs(node, Type::Any()); CheckTypeIs(node, Type::Any());

View File

@ -722,7 +722,7 @@ bool ScopeIterator::VisitContextLocals(const Visitor& visitor,
for (int i = 0; i < scope_info->ContextLocalCount(); ++i) { for (int i = 0; i < scope_info->ContextLocalCount(); ++i) {
Handle<String> name(scope_info->ContextLocalName(i), isolate_); Handle<String> name(scope_info->ContextLocalName(i), isolate_);
if (ScopeInfo::VariableIsSynthetic(*name)) continue; if (ScopeInfo::VariableIsSynthetic(*name)) continue;
int context_index = scope_info->ContextHeaderLength() + i; int context_index = Context::MIN_CONTEXT_SLOTS + i;
Handle<Object> value(context->get(context_index), isolate_); Handle<Object> value(context->get(context_index), isolate_);
// Reflect variables under TDZ as undefined in scope object. // Reflect variables under TDZ as undefined in scope object.
if (value->IsTheHole(isolate_)) continue; if (value->IsTheHole(isolate_)) continue;

View File

@ -983,6 +983,7 @@ void PrintContextWithHeader(std::ostream& os, Context context,
os << "\n - length: " << context.length(); os << "\n - length: " << context.length();
os << "\n - scope_info: " << Brief(context.scope_info()); os << "\n - scope_info: " << Brief(context.scope_info());
os << "\n - previous: " << Brief(context.unchecked_previous()); os << "\n - previous: " << Brief(context.unchecked_previous());
os << "\n - extension: " << Brief(context.extension());
os << "\n - native_context: " << Brief(context.native_context()); os << "\n - native_context: " << Brief(context.native_context());
PrintFixedArrayElements(os, context); PrintFixedArrayElements(os, context);
os << "\n"; os << "\n";
@ -2302,9 +2303,6 @@ void ScopeInfo::ScopeInfoPrint(std::ostream& os) { // NOLINT
if (HasInferredFunctionName()) { if (HasInferredFunctionName()) {
os << "\n - inferred function name: " << Brief(InferredFunctionName()); os << "\n - inferred function name: " << Brief(InferredFunctionName());
} }
if (HasContextExtension()) {
os << "\n - has context extension field";
}
if (CanElideThisHoleChecks()) { if (CanElideThisHoleChecks()) {
os << "\n - can elide this hole checks"; os << "\n - can elide this hole checks";
} }

View File

@ -1444,6 +1444,7 @@ Handle<Context> Factory::NewScriptContext(Handle<NativeContext> outer,
variadic_part_length, AllocationType::kOld); variadic_part_length, AllocationType::kOld);
context->set_scope_info(*scope_info); context->set_scope_info(*scope_info);
context->set_previous(*outer); context->set_previous(*outer);
context->set_extension(*the_hole_value());
DCHECK(context->IsScriptContext()); DCHECK(context->IsScriptContext());
return context; return context;
} }
@ -1490,6 +1491,7 @@ Handle<Context> Factory::NewFunctionContext(Handle<Context> outer,
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
context->set_scope_info(*scope_info); context->set_scope_info(*scope_info);
context->set_previous(*outer); context->set_previous(*outer);
context->set_extension(*the_hole_value());
return context; return context;
} }
@ -1505,6 +1507,7 @@ Handle<Context> Factory::NewCatchContext(Handle<Context> previous,
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
context->set_scope_info(*scope_info); context->set_scope_info(*scope_info);
context->set_previous(*previous); context->set_previous(*previous);
context->set_extension(*the_hole_value());
context->set(Context::THROWN_OBJECT_INDEX, *thrown_object); context->set(Context::THROWN_OBJECT_INDEX, *thrown_object);
return context; return context;
} }
@ -1514,14 +1517,13 @@ Handle<Context> Factory::NewDebugEvaluateContext(Handle<Context> previous,
Handle<JSReceiver> extension, Handle<JSReceiver> extension,
Handle<Context> wrapped, Handle<Context> wrapped,
Handle<StringSet> blacklist) { Handle<StringSet> blacklist) {
STATIC_ASSERT(Context::BLACK_LIST_INDEX == STATIC_ASSERT(Context::BLACK_LIST_INDEX == Context::MIN_CONTEXT_SLOTS + 1);
Context::MIN_CONTEXT_EXTENDED_SLOTS + 1);
DCHECK(scope_info->IsDebugEvaluateScope()); DCHECK(scope_info->IsDebugEvaluateScope());
Handle<HeapObject> ext = extension.is_null() Handle<HeapObject> ext = extension.is_null()
? Handle<HeapObject>::cast(undefined_value()) ? Handle<HeapObject>::cast(the_hole_value())
: Handle<HeapObject>::cast(extension); : Handle<HeapObject>::cast(extension);
// TODO(ishell): Take the details from DebugEvaluateContextContext class. // TODO(ishell): Take the details from DebugEvaluateContextContext class.
int variadic_part_length = Context::MIN_CONTEXT_EXTENDED_SLOTS + 2; int variadic_part_length = Context::MIN_CONTEXT_SLOTS + 2;
Handle<Context> c = NewContext(isolate()->debug_evaluate_context_map(), Handle<Context> c = NewContext(isolate()->debug_evaluate_context_map(),
Context::SizeFor(variadic_part_length), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
@ -1538,7 +1540,7 @@ Handle<Context> Factory::NewWithContext(Handle<Context> previous,
Handle<JSReceiver> extension) { Handle<JSReceiver> extension) {
DCHECK_EQ(scope_info->scope_type(), WITH_SCOPE); DCHECK_EQ(scope_info->scope_type(), WITH_SCOPE);
// TODO(ishell): Take the details from WithContext class. // TODO(ishell): Take the details from WithContext class.
int variadic_part_length = Context::MIN_CONTEXT_EXTENDED_SLOTS; int variadic_part_length = Context::MIN_CONTEXT_SLOTS;
Handle<Context> context = NewContext( Handle<Context> context = NewContext(
isolate()->with_context_map(), Context::SizeFor(variadic_part_length), isolate()->with_context_map(), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
@ -1558,6 +1560,7 @@ Handle<Context> Factory::NewBlockContext(Handle<Context> previous,
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
context->set_scope_info(*scope_info); context->set_scope_info(*scope_info);
context->set_previous(*previous); context->set_previous(*previous);
context->set_extension(*the_hole_value());
return context; return context;
} }
@ -1569,6 +1572,7 @@ Handle<Context> Factory::NewBuiltinContext(Handle<NativeContext> native_context,
variadic_part_length, AllocationType::kYoung); variadic_part_length, AllocationType::kYoung);
context->set_scope_info(ReadOnlyRoots(isolate()).empty_scope_info()); context->set_scope_info(ReadOnlyRoots(isolate()).empty_scope_info());
context->set_previous(*native_context); context->set_previous(*native_context);
context->set_extension(*the_hole_value());
return context; return context;
} }

View File

@ -211,15 +211,15 @@ void InterpreterAssembler::GotoIfHasContextExtensionUpToDepth(
Goto(&context_search); Goto(&context_search);
BIND(&context_search); BIND(&context_search);
{ {
// Check if context has an extension slot. // Check if context has an extension slot
TNode<BoolT> has_extension = TNode<BoolT> has_extension =
LoadScopeInfoHasExtensionField(LoadScopeInfo(cur_context.value())); LoadContextHasExtensionField(cur_context.value());
GotoIfNot(has_extension, &no_extension); GotoIfNot(has_extension, &no_extension);
// Jump to the target if the extension slot is not an undefined value. // Jump to the target if the extension slot is not a hole.
TNode<Object> extension_slot = TNode<Object> extension_slot =
LoadContextElement(cur_context.value(), Context::EXTENSION_INDEX); LoadContextElement(cur_context.value(), Context::EXTENSION_INDEX);
Branch(TaggedNotEqual(extension_slot, UndefinedConstant()), target, Branch(TaggedNotEqual(extension_slot, TheHoleConstant()), target,
&no_extension); &no_extension);
BIND(&no_extension); BIND(&no_extension);

View File

@ -115,10 +115,9 @@ void Context::set_previous(Context context) { set(PREVIOUS_INDEX, context); }
Object Context::next_context_link() { return get(Context::NEXT_CONTEXT_LINK); } Object Context::next_context_link() { return get(Context::NEXT_CONTEXT_LINK); }
bool Context::has_extension() { bool Context::has_extension() {
return (scope_info().HasContextExtension() || return static_cast<bool>(
static_cast<bool>( HasExtensionField::decode(length_and_extension_flag())) &&
HasExtensionField::decode(length_and_extension_flag()))) && !extension().IsTheHole();
!extension().IsUndefined();
} }
HeapObject Context::extension() { HeapObject Context::extension() {

View File

@ -91,7 +91,7 @@ JSObject Context::extension_object() {
DCHECK(IsNativeContext() || IsFunctionContext() || IsBlockContext() || DCHECK(IsNativeContext() || IsFunctionContext() || IsBlockContext() ||
IsEvalContext() || IsCatchContext()); IsEvalContext() || IsCatchContext());
HeapObject object = extension(); HeapObject object = extension();
if (object.IsUndefined()) return JSObject(); if (object.IsTheHole()) return JSObject();
DCHECK(object.IsJSContextExtensionObject() || DCHECK(object.IsJSContextExtensionObject() ||
(IsNativeContext() && object.IsJSGlobalObject())); (IsNativeContext() && object.IsJSGlobalObject()));
return JSObject::cast(object); return JSObject::cast(object);
@ -197,11 +197,11 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
} }
// 1. Check global objects, subjects of with, and extension objects. // 1. Check global objects, subjects of with, and extension objects.
DCHECK_IMPLIES(context->IsEvalContext() && context->has_extension(), DCHECK_IMPLIES(context->IsEvalContext(),
context->extension().IsTheHole(isolate)); context->extension().IsTheHole(isolate));
if ((context->IsNativeContext() || context->IsWithContext() || if ((context->IsNativeContext() || context->IsWithContext() ||
context->IsFunctionContext() || context->IsBlockContext()) && context->IsFunctionContext() || context->IsBlockContext()) &&
context->has_extension() && !context->extension_receiver().is_null()) { !context->extension_receiver().is_null()) {
Handle<JSReceiver> object(context->extension_receiver(), isolate); Handle<JSReceiver> object(context->extension_receiver(), isolate);
if (context->IsNativeContext()) { if (context->IsNativeContext()) {
@ -467,8 +467,7 @@ void NativeContext::IncrementErrorsThrown() {
int NativeContext::GetErrorsThrown() { return errors_thrown().value(); } int NativeContext::GetErrorsThrown() { return errors_thrown().value(); }
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 2); STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 3);
STATIC_ASSERT(Context::MIN_CONTEXT_EXTENDED_SLOTS == 3);
STATIC_ASSERT(NativeContext::kScopeInfoOffset == STATIC_ASSERT(NativeContext::kScopeInfoOffset ==
Context::OffsetOfElementAt(NativeContext::SCOPE_INFO_INDEX)); Context::OffsetOfElementAt(NativeContext::SCOPE_INFO_INDEX));
STATIC_ASSERT(NativeContext::kPreviousOffset == STATIC_ASSERT(NativeContext::kPreviousOffset ==

View File

@ -429,14 +429,12 @@ class ScriptContextTable : public FixedArray {
// //
// [ previous ] A pointer to the previous context. // [ previous ] A pointer to the previous context.
// //
// [ extension ] Additional data. This slot is only available when // [ extension ] Additional data.
// extension_bit is set. Check using has_extension.
// //
// For native contexts, it contains the global object. // For native contexts, it contains the global object.
// For module contexts, it contains the module object. // For module contexts, it contains the module object.
// For await contexts, it contains the generator object. // For await contexts, it contains the generator object.
// For var block contexts, it may contain an "extension // For block contexts, it may contain an "extension object".
// object".
// For with contexts, it contains an "extension object". // For with contexts, it contains an "extension object".
// //
// An "extension object" is used to dynamically extend a // An "extension object" is used to dynamically extend a
@ -447,10 +445,9 @@ class ScriptContextTable : public FixedArray {
// extension object is the original purpose of this context // extension object is the original purpose of this context
// slot, hence the name.) // slot, hence the name.)
// //
// In addition, function contexts with sloppy eval may have statically // In addition, function contexts may have statically allocated context slots
// allocated context slots to store local variables/functions that are accessed // to store local variables/functions that are accessed from inner functions
// from inner functions (via static context addresses) or through 'eval' // (via static context addresses) or through 'eval' (dynamic context lookups).
// (dynamic context lookups).
// The native context contains additional slots for fast access to native // The native context contains additional slots for fast access to native
// properties. // properties.
// //
@ -488,8 +485,7 @@ class Context : public HeapObject {
DEFINE_FIELD_OFFSET_CONSTANTS(HeapObject::kHeaderSize, DEFINE_FIELD_OFFSET_CONSTANTS(HeapObject::kHeaderSize,
TORQUE_GENERATED_CONTEXT_FIELDS) TORQUE_GENERATED_CONTEXT_FIELDS)
// TODO(v8:8989): [torque] Support marker constants.
// TODO(v8:8989): [torque] Support marker constants
/* TODO(ishell): remove this fixedArray-like header size. */ /* TODO(ishell): remove this fixedArray-like header size. */
static const int kFixedArrayLikeHeaderSize = kScopeInfoOffset; static const int kFixedArrayLikeHeaderSize = kScopeInfoOffset;
static const int kStartOfTaggedFieldsOffset = kScopeInfoOffset; static const int kStartOfTaggedFieldsOffset = kScopeInfoOffset;
@ -498,11 +494,10 @@ class Context : public HeapObject {
/* is removed in favour of offset-based access to common fields. */ \ /* is removed in favour of offset-based access to common fields. */ \
static const int kTodoHeaderSize = kHeaderSize; static const int kTodoHeaderSize = kHeaderSize;
// If the extension slot exists, it is the first slot after the header.
static const int kExtensionOffset = kHeaderSize;
// Garbage collection support. // Garbage collection support.
V8_INLINE static constexpr int SizeFor(int length) { V8_INLINE static constexpr int SizeFor(int length) {
// TODO(ishell): switch to kTodoHeaderSize based approach once we no longer
// reference common Context fields via index
return kFixedArrayLikeHeaderSize + length * kTaggedSize; return kFixedArrayLikeHeaderSize + length * kTaggedSize;
} }
@ -524,8 +519,6 @@ class Context : public HeapObject {
// These slots are in all contexts. // These slots are in all contexts.
SCOPE_INFO_INDEX, SCOPE_INFO_INDEX,
PREVIOUS_INDEX, PREVIOUS_INDEX,
// This slot only exists if the extension_flag bit is set.
EXTENSION_INDEX, EXTENSION_INDEX,
// These slots are only in native contexts. // These slots are only in native contexts.
@ -545,21 +538,16 @@ class Context : public HeapObject {
FIRST_JS_ARRAY_MAP_SLOT = JS_ARRAY_PACKED_SMI_ELEMENTS_MAP_INDEX, FIRST_JS_ARRAY_MAP_SLOT = JS_ARRAY_PACKED_SMI_ELEMENTS_MAP_INDEX,
// TODO(shell): Remove, once it becomes zero // TODO(shell): Remove, once it becomes zero
MIN_CONTEXT_SLOTS = EXTENSION_INDEX, MIN_CONTEXT_SLOTS = GLOBAL_PROXY_INDEX,
MIN_CONTEXT_EXTENDED_SLOTS = EXTENSION_INDEX + 1,
// This slot holds the thrown value in catch contexts. // This slot holds the thrown value in catch contexts.
THROWN_OBJECT_INDEX = MIN_CONTEXT_SLOTS, THROWN_OBJECT_INDEX = MIN_CONTEXT_SLOTS,
// These slots hold values in debug evaluate contexts. // These slots hold values in debug evaluate contexts.
WRAPPED_CONTEXT_INDEX = MIN_CONTEXT_EXTENDED_SLOTS, WRAPPED_CONTEXT_INDEX = MIN_CONTEXT_SLOTS,
BLACK_LIST_INDEX = MIN_CONTEXT_EXTENDED_SLOTS + 1 BLACK_LIST_INDEX = MIN_CONTEXT_SLOTS + 1
}; };
static const int kExtensionSize =
(MIN_CONTEXT_EXTENDED_SLOTS - MIN_CONTEXT_SLOTS) * kTaggedSize;
static const int kExtendedHeaderSize = kHeaderSize + kExtensionSize;
// A region of native context entries containing maps for functions created // A region of native context entries containing maps for functions created
// by Builtins::kFastNewClosure. // by Builtins::kFastNewClosure.
static const int FIRST_FUNCTION_MAP_INDEX = SLOPPY_FUNCTION_MAP_INDEX; static const int FIRST_FUNCTION_MAP_INDEX = SLOPPY_FUNCTION_MAP_INDEX;
@ -708,7 +696,7 @@ class NativeContext : public Context {
#define NATIVE_CONTEXT_FIELDS_DEF(V) \ #define NATIVE_CONTEXT_FIELDS_DEF(V) \
/* TODO(ishell): move definition of common context offsets to Context. */ \ /* TODO(ishell): move definition of common context offsets to Context. */ \
V(kStartOfNativeContextFieldsOffset, \ V(kStartOfNativeContextFieldsOffset, \
(FIRST_WEAK_SLOT - MIN_CONTEXT_EXTENDED_SLOTS) * kTaggedSize) \ (FIRST_WEAK_SLOT - MIN_CONTEXT_SLOTS) * kTaggedSize) \
V(kEndOfStrongFieldsOffset, 0) \ V(kEndOfStrongFieldsOffset, 0) \
V(kStartOfWeakFieldsOffset, \ V(kStartOfWeakFieldsOffset, \
(NATIVE_CONTEXT_SLOTS - FIRST_WEAK_SLOT) * kTaggedSize) \ (NATIVE_CONTEXT_SLOTS - FIRST_WEAK_SLOT) * kTaggedSize) \
@ -720,7 +708,7 @@ class NativeContext : public Context {
/* Total size. */ \ /* Total size. */ \
V(kSize, 0) V(kSize, 0)
DEFINE_FIELD_OFFSET_CONSTANTS(Context::kExtendedHeaderSize, DEFINE_FIELD_OFFSET_CONSTANTS(Context::kTodoHeaderSize,
NATIVE_CONTEXT_FIELDS_DEF) NATIVE_CONTEXT_FIELDS_DEF)
#undef NATIVE_CONTEXT_FIELDS_DEF #undef NATIVE_CONTEXT_FIELDS_DEF

View File

@ -210,8 +210,7 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone, Scope* scope,
scope->ForceContextForLanguageMode()) | scope->ForceContextForLanguageMode()) |
PrivateNameLookupSkipsOuterClassField::encode( PrivateNameLookupSkipsOuterClassField::encode(
scope->private_name_lookup_skips_outer_class()) | scope->private_name_lookup_skips_outer_class()) |
CanElideThisHoleChecksField::encode(can_elide_this_hole_checks) | CanElideThisHoleChecksField::encode(can_elide_this_hole_checks);
HasContextExtensionField::encode(scope->HasContextExtension());
scope_info.SetFlags(flags); scope_info.SetFlags(flags);
scope_info.SetParameterCount(parameter_count); scope_info.SetParameterCount(parameter_count);
@ -228,7 +227,7 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone, Scope* scope,
case VariableLocation::CONTEXT: { case VariableLocation::CONTEXT: {
// Due to duplicate parameters, context locals aren't guaranteed to // Due to duplicate parameters, context locals aren't guaranteed to
// come in order. // come in order.
int local_index = var->index() - scope->ContextHeaderLength(); int local_index = var->index() - Context::MIN_CONTEXT_SLOTS;
DCHECK_LE(0, local_index); DCHECK_LE(0, local_index);
DCHECK_LT(local_index, context_local_count); DCHECK_LT(local_index, context_local_count);
uint32_t info = uint32_t info =
@ -274,7 +273,7 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone, Scope* scope,
for (int i = 0; i < parameter_count; i++) { for (int i = 0; i < parameter_count; i++) {
Variable* parameter = scope->AsDeclarationScope()->parameter(i); Variable* parameter = scope->AsDeclarationScope()->parameter(i);
if (parameter->location() != VariableLocation::CONTEXT) continue; if (parameter->location() != VariableLocation::CONTEXT) continue;
int index = parameter->index() - scope->ContextHeaderLength(); int index = parameter->index() - Context::MIN_CONTEXT_SLOTS;
int info_index = context_local_info_base + index; int info_index = context_local_info_base + index;
int info = Smi::ToInt(scope_info.get(info_index)); int info = Smi::ToInt(scope_info.get(info_index));
info = ParameterNumberField::update(info, i); info = ParameterNumberField::update(info, i);
@ -285,7 +284,7 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone, Scope* scope,
if (scope->AsDeclarationScope()->has_this_declaration()) { if (scope->AsDeclarationScope()->has_this_declaration()) {
Variable* var = scope->AsDeclarationScope()->receiver(); Variable* var = scope->AsDeclarationScope()->receiver();
if (var->location() == VariableLocation::CONTEXT) { if (var->location() == VariableLocation::CONTEXT) {
int local_index = var->index() - scope->ContextHeaderLength(); int local_index = var->index() - Context::MIN_CONTEXT_SLOTS;
uint32_t info = uint32_t info =
VariableModeField::encode(var->mode()) | VariableModeField::encode(var->mode()) |
InitFlagField::encode(var->initialization_flag()) | InitFlagField::encode(var->initialization_flag()) |
@ -398,8 +397,7 @@ Handle<ScopeInfo> ScopeInfo::CreateForWithScope(
IsDebugEvaluateScopeField::encode(false) | IsDebugEvaluateScopeField::encode(false) |
ForceContextAllocationField::encode(false) | ForceContextAllocationField::encode(false) |
PrivateNameLookupSkipsOuterClassField::encode(false) | PrivateNameLookupSkipsOuterClassField::encode(false) |
CanElideThisHoleChecksField::encode(false) | CanElideThisHoleChecksField::encode(false);
HasContextExtensionField::encode(false);
scope_info->SetFlags(flags); scope_info->SetFlags(flags);
scope_info->SetParameterCount(0); scope_info->SetParameterCount(0);
@ -416,7 +414,7 @@ Handle<ScopeInfo> ScopeInfo::CreateForWithScope(
} }
DCHECK_EQ(index, scope_info->length()); DCHECK_EQ(index, scope_info->length());
DCHECK_EQ(0, scope_info->ParameterCount()); DCHECK_EQ(0, scope_info->ParameterCount());
DCHECK_EQ(scope_info->ContextHeaderLength(), scope_info->ContextLength()); DCHECK_EQ(Context::MIN_CONTEXT_SLOTS, scope_info->ContextLength());
return scope_info; return scope_info;
} }
@ -469,8 +467,7 @@ Handle<ScopeInfo> ScopeInfo::CreateForBootstrapping(Isolate* isolate,
IsDebugEvaluateScopeField::encode(false) | IsDebugEvaluateScopeField::encode(false) |
ForceContextAllocationField::encode(false) | ForceContextAllocationField::encode(false) |
PrivateNameLookupSkipsOuterClassField::encode(false) | PrivateNameLookupSkipsOuterClassField::encode(false) |
CanElideThisHoleChecksField::encode(false) | CanElideThisHoleChecksField::encode(false);
HasContextExtensionField::encode(false);
scope_info->SetFlags(flags); scope_info->SetFlags(flags);
scope_info->SetParameterCount(parameter_count); scope_info->SetParameterCount(parameter_count);
scope_info->SetContextLocalCount(context_local_count); scope_info->SetContextLocalCount(context_local_count);
@ -495,7 +492,7 @@ Handle<ScopeInfo> ScopeInfo::CreateForBootstrapping(Isolate* isolate,
// And here we record that this scopeinfo binds a receiver. // And here we record that this scopeinfo binds a receiver.
DCHECK_EQ(index, scope_info->ReceiverInfoIndex()); DCHECK_EQ(index, scope_info->ReceiverInfoIndex());
const int receiver_index = scope_info->ContextHeaderLength(); const int receiver_index = Context::MIN_CONTEXT_SLOTS + 0;
if (!is_empty_function) { if (!is_empty_function) {
scope_info->set(index++, Smi::FromInt(receiver_index)); scope_info->set(index++, Smi::FromInt(receiver_index));
} }
@ -519,8 +516,7 @@ Handle<ScopeInfo> ScopeInfo::CreateForBootstrapping(Isolate* isolate,
if (type == FUNCTION_SCOPE) { if (type == FUNCTION_SCOPE) {
DCHECK_EQ(scope_info->ContextLength(), 0); DCHECK_EQ(scope_info->ContextLength(), 0);
} else { } else {
DCHECK_EQ(scope_info->ContextLength(), DCHECK_EQ(scope_info->ContextLength(), Context::MIN_CONTEXT_SLOTS + 1);
scope_info->ContextHeaderLength() + 1);
} }
return scope_info; return scope_info;
@ -568,22 +564,13 @@ int ScopeInfo::ContextLength() const {
scope_type() == MODULE_SCOPE; scope_type() == MODULE_SCOPE;
if (has_context) { if (has_context) {
return ContextHeaderLength() + context_locals + return Context::MIN_CONTEXT_SLOTS + context_locals +
(function_name_context_slot ? 1 : 0); (function_name_context_slot ? 1 : 0);
} }
} }
return 0; return 0;
} }
bool ScopeInfo::HasContextExtension() const {
return HasContextExtensionField::decode(Flags());
}
int ScopeInfo::ContextHeaderLength() const {
return HasContextExtension() ? Context::MIN_CONTEXT_EXTENDED_SLOTS
: Context::MIN_CONTEXT_SLOTS;
}
bool ScopeInfo::HasReceiver() const { bool ScopeInfo::HasReceiver() const {
if (length() == 0) return false; if (length() == 0) return false;
return NONE != ReceiverVariableField::decode(Flags()); return NONE != ReceiverVariableField::decode(Flags());
@ -835,7 +822,7 @@ int ScopeInfo::ContextSlotIndex(ScopeInfo scope_info, String name,
*is_static_flag = scope_info.ContextLocalIsStaticFlag(var); *is_static_flag = scope_info.ContextLocalIsStaticFlag(var);
*init_flag = scope_info.ContextLocalInitFlag(var); *init_flag = scope_info.ContextLocalInitFlag(var);
*maybe_assigned_flag = scope_info.ContextLocalMaybeAssignedFlag(var); *maybe_assigned_flag = scope_info.ContextLocalMaybeAssignedFlag(var);
int result = scope_info.ContextHeaderLength() + var; int result = Context::MIN_CONTEXT_SLOTS + var;
DCHECK_LT(result, scope_info.ContextLength()); DCHECK_LT(result, scope_info.ContextLength());
return result; return result;

View File

@ -58,14 +58,12 @@ class ScopeInfo : public FixedArray {
// Return the number of context slots for code if a context is allocated. This // Return the number of context slots for code if a context is allocated. This
// number consists of three parts: // number consists of three parts:
// 1. Size of header for every context. // 1. Size of fixed header for every context: Context::MIN_CONTEXT_SLOTS
// 2. One context slot per context allocated local. // 2. One context slot per context allocated local.
// 3. One context slot for the function name if it is context allocated. // 3. One context slot for the function name if it is context allocated.
// Parameters allocated in the context count as context allocated locals. If // Parameters allocated in the context count as context allocated locals. If
// no contexts are allocated for this scope ContextLength returns 0. // no contexts are allocated for this scope ContextLength returns 0.
int ContextLength() const; int ContextLength() const;
bool HasContextExtension() const;
int ContextHeaderLength() const;
// Does this scope declare a "this" binding? // Does this scope declare a "this" binding?
bool HasReceiver() const; bool HasReceiver() const;
@ -238,8 +236,6 @@ class ScopeInfo : public FixedArray {
kVariablePartIndex kVariablePartIndex
}; };
static const int kFlagsOffset = OffsetOfElementAt(Fields::kFlags);
// Used for the function name variable for named function expressions, and for // Used for the function name variable for named function expressions, and for
// the receiver. // the receiver.
enum VariableAllocationInfo { NONE, STACK, CONTEXT, UNUSED }; enum VariableAllocationInfo { NONE, STACK, CONTEXT, UNUSED };
@ -270,7 +266,6 @@ class ScopeInfo : public FixedArray {
ForceContextAllocationField::Next<bool, 1>; ForceContextAllocationField::Next<bool, 1>;
using CanElideThisHoleChecksField = using CanElideThisHoleChecksField =
PrivateNameLookupSkipsOuterClassField::Next<bool, 1>; PrivateNameLookupSkipsOuterClassField::Next<bool, 1>;
using HasContextExtensionField = CanElideThisHoleChecksField::Next<bool, 1>;
STATIC_ASSERT(kLastFunctionKind <= FunctionKindField::kMax); STATIC_ASSERT(kLastFunctionKind <= FunctionKindField::kMax);

View File

@ -989,11 +989,9 @@ void V8HeapExplorer::ExtractContextReferences(HeapEntry* entry,
FixedArray::OffsetOfElementAt(Context::SCOPE_INFO_INDEX)); FixedArray::OffsetOfElementAt(Context::SCOPE_INFO_INDEX));
SetInternalReference(entry, "previous", context.get(Context::PREVIOUS_INDEX), SetInternalReference(entry, "previous", context.get(Context::PREVIOUS_INDEX),
FixedArray::OffsetOfElementAt(Context::PREVIOUS_INDEX)); FixedArray::OffsetOfElementAt(Context::PREVIOUS_INDEX));
if (context.has_extension()) { SetInternalReference(entry, "extension",
SetInternalReference( context.get(Context::EXTENSION_INDEX),
entry, "extension", context.get(Context::EXTENSION_INDEX),
FixedArray::OffsetOfElementAt(Context::EXTENSION_INDEX)); FixedArray::OffsetOfElementAt(Context::EXTENSION_INDEX));
}
if (context.IsNativeContext()) { if (context.IsNativeContext()) {
TagObject(context.normalized_map_cache(), "(context norm. map cache)"); TagObject(context.normalized_map_cache(), "(context norm. map cache)");

View File

@ -252,7 +252,7 @@ Object DeclareEvalHelper(Isolate* isolate, Handle<String> name,
value, NONE, is_var, is_function, value, NONE, is_var, is_function,
RedeclarationType::kTypeError); RedeclarationType::kTypeError);
} }
if (context->has_extension() && context->extension().IsJSGlobalObject()) { if (context->extension().IsJSGlobalObject()) {
Handle<JSGlobalObject> global(JSGlobalObject::cast(context->extension()), Handle<JSGlobalObject> global(JSGlobalObject::cast(context->extension()),
isolate); isolate);
return DeclareGlobal(isolate, global, name, value, NONE, is_var, return DeclareGlobal(isolate, global, name, value, NONE, is_var,
@ -439,7 +439,7 @@ Handle<JSObject> NewSloppyArguments(Isolate* isolate, Handle<JSFunction> callee,
int parameter = scope_info->ContextLocalParameterNumber(i); int parameter = scope_info->ContextLocalParameterNumber(i);
if (parameter >= mapped_count) continue; if (parameter >= mapped_count) continue;
arguments->set_the_hole(parameter); arguments->set_the_hole(parameter);
Smi slot = Smi::FromInt(scope_info->ContextHeaderLength() + i); Smi slot = Smi::FromInt(Context::MIN_CONTEXT_SLOTS + i);
parameter_map->set(parameter + 2, slot); parameter_map->set(parameter + 2, slot);
} }
} else { } else {

View File

@ -45,7 +45,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(Mov), R(0), R(6), B(Mov), R(0), R(6),
B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),
@ -152,7 +152,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(Mov), R(0), R(6), B(Mov), R(0), R(6),
B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),
@ -332,7 +332,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(7), B(Ldar), R(7),
B(PushContext), R(8), B(PushContext), R(8),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(10), B(Star), R(10),
B(Mov), R(0), R(9), B(Mov), R(0), R(9),
B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(9), U8(2), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(9), U8(2),
@ -553,7 +553,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(Mov), R(0), R(6), B(Mov), R(0), R(6),
B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),

View File

@ -67,7 +67,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(3), B(Ldar), R(3),
B(PushContext), R(4), B(PushContext), R(4),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(6), B(Star), R(6),
B(LdaTrue), B(LdaTrue),
B(Star), R(7), B(Star), R(7),
@ -149,7 +149,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(3), B(Ldar), R(3),
B(PushContext), R(4), B(PushContext), R(4),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(6), B(Star), R(6),
B(LdaTrue), B(LdaTrue),
B(Star), R(7), B(Star), R(7),
@ -237,7 +237,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),
@ -326,7 +326,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),

View File

@ -703,19 +703,19 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateClosure), U8(1), U8(0), U8(2), B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(2), B(Star), R(2),
/* 73 S> */ B(LdaSmi), I8(1), /* 73 S> */ B(LdaSmi), I8(1),
/* 73 E> */ B(StaCurrentContextSlot), U8(2), /* 73 E> */ B(StaCurrentContextSlot), U8(3),
/* 102 S> */ B(Mov), R(2), R(1), /* 102 S> */ B(Mov), R(2), R(1),
/* 106 S> */ B(LdaCurrentContextSlot), U8(2), /* 106 S> */ B(LdaCurrentContextSlot), U8(3),
B(JumpIfToBooleanFalse), U8(6), B(JumpIfToBooleanFalse), U8(6),
/* 113 S> */ B(PopContext), R(3), /* 113 S> */ B(PopContext), R(3),
B(Jump), U8(10), B(Jump), U8(10),
/* 126 S> */ B(LdaCurrentContextSlot), U8(2), /* 126 S> */ B(LdaCurrentContextSlot), U8(3),
B(Inc), U8(0), B(Inc), U8(0),
/* 127 E> */ B(StaCurrentContextSlot), U8(2), /* 127 E> */ B(StaCurrentContextSlot), U8(3),
B(PopContext), R(3), B(PopContext), R(3),
B(JumpLoop), U8(41), I8(0), B(JumpLoop), U8(41), I8(0),
B(LdaUndefined), B(LdaUndefined),

View File

@ -107,11 +107,11 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateClosure), U8(1), U8(0), U8(2), B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(1), B(Star), R(1),
/* 53 S> */ B(LdaSmi), I8(10), /* 53 S> */ B(LdaSmi), I8(10),
/* 53 E> */ B(StaCurrentContextSlot), U8(2), /* 53 E> */ B(StaCurrentContextSlot), U8(3),
/* 85 S> */ B(Mov), R(1), R(0), /* 85 S> */ B(Mov), R(1), R(0),
B(Ldar), R(1), B(Ldar), R(1),
/* 88 S> */ B(Jump), U8(2), /* 88 S> */ B(Jump), U8(2),
@ -146,28 +146,28 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star), R(1), B(Star), R(1),
/* 76 S> */ B(LdaSmi), I8(2), /* 76 S> */ B(LdaSmi), I8(2),
/* 76 E> */ B(StaCurrentContextSlot), U8(2), /* 76 E> */ B(StaCurrentContextSlot), U8(3),
/* 113 S> */ B(Mov), R(1), R(0), /* 113 S> */ B(Mov), R(1), R(0),
/* 118 S> */ B(LdaCurrentContextSlot), U8(2), /* 118 S> */ B(LdaCurrentContextSlot), U8(3),
B(JumpIfToBooleanFalse), U8(6), B(JumpIfToBooleanFalse), U8(6),
/* 125 S> */ B(PopContext), R(3), /* 125 S> */ B(PopContext), R(3),
B(Jump), U8(8), B(Jump), U8(8),
/* 142 S> */ B(LdaSmi), I8(3), /* 142 S> */ B(LdaSmi), I8(3),
/* 144 E> */ B(StaCurrentContextSlot), U8(2), /* 144 E> */ B(StaCurrentContextSlot), U8(3),
B(PopContext), R(3), B(PopContext), R(3),
/* 155 S> */ B(LdaSmi), I8(4), /* 155 S> */ B(LdaSmi), I8(4),
/* 157 E> */ B(StaCurrentContextSlot), U8(2), /* 157 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 162 S> */ B(Return), /* 162 S> */ B(Return),
] ]

View File

@ -13,7 +13,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 75 bytecode array length: 75
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),

View File

@ -100,9 +100,9 @@ bytecodes: [
B(PushContext), R(1), B(PushContext), R(1),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 43 S> */ B(LdaConstant), U8(1), /* 43 S> */ B(LdaConstant), U8(1),
/* 43 E> */ B(StaCurrentContextSlot), U8(2), /* 43 E> */ B(StaCurrentContextSlot), U8(3),
/* 57 S> */ B(LdaConstant), U8(2), /* 57 S> */ B(LdaConstant), U8(2),
/* 57 E> */ B(StaCurrentContextSlot), U8(3), /* 57 E> */ B(StaCurrentContextSlot), U8(4),
B(CreateBlockContext), U8(3), B(CreateBlockContext), U8(3),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
@ -111,11 +111,11 @@ bytecodes: [
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star), R(4), B(Star), R(4),
/* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(2), U8(0), /* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(3), U8(0),
B(ToName), R(7), B(ToName), R(7),
B(CreateClosure), U8(6), U8(1), U8(2), B(CreateClosure), U8(6), U8(1), U8(2),
B(Star), R(8), B(Star), R(8),
/* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(3), U8(0), /* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(4), U8(0),
B(ToName), R(9), B(ToName), R(9),
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
B(TestEqualStrict), R(9), U8(0), B(TestEqualStrict), R(9), U8(0),
@ -159,7 +159,7 @@ bytecodes: [
B(PushContext), R(1), B(PushContext), R(1),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 46 S> */ B(LdaZero), /* 46 S> */ B(LdaZero),
/* 46 E> */ B(StaCurrentContextSlot), U8(2), /* 46 E> */ B(StaCurrentContextSlot), U8(3),
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),

View File

@ -108,11 +108,11 @@ bytecodes: [
B(PushContext), R(0), B(PushContext), R(0),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 75 S> */ B(LdaCurrentContextSlot), U8(2), /* 75 S> */ B(LdaCurrentContextSlot), U8(3),
B(BitwiseOrSmi), I8(24), U8(0), B(BitwiseOrSmi), I8(24), U8(0),
/* 77 E> */ B(StaCurrentContextSlot), U8(2), /* 77 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 84 S> */ B(Return), /* 84 S> */ B(Return),
] ]

View File

@ -16,10 +16,10 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
/* 44 E> */ B(StaCurrentContextSlot), U8(2), /* 44 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 74 S> */ B(Return), /* 74 S> */ B(Return),
] ]
@ -40,11 +40,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
/* 44 E> */ B(StaCurrentContextSlot), U8(2), /* 44 E> */ B(StaCurrentContextSlot), U8(3),
/* 74 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 74 S> */ B(LdaImmutableCurrentContextSlot), U8(3),
/* 83 S> */ B(Return), /* 83 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -64,14 +64,14 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 44 S> */ B(LdaSmi), I8(20), /* 44 S> */ B(LdaSmi), I8(20),
B(Star), R(1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
/* 47 E> */ B(ThrowReferenceErrorIfHole), U8(1), /* 47 E> */ B(ThrowReferenceErrorIfHole), U8(1),
B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
/* 44 E> */ B(StaCurrentContextSlot), U8(2), /* 44 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 80 S> */ B(Return), /* 80 S> */ B(Return),
] ]
@ -93,10 +93,10 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
/* 44 E> */ B(StaCurrentContextSlot), U8(2), /* 44 E> */ B(StaCurrentContextSlot), U8(3),
/* 48 S> */ B(LdaSmi), I8(20), /* 48 S> */ B(LdaSmi), I8(20),
/* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), /* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(LdaUndefined), B(LdaUndefined),

View File

@ -18,7 +18,7 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 19 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 19 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 51 S> */ B(Return), /* 51 S> */ B(Return),
@ -42,11 +42,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 27 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 27 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(0), B(Star), R(0),
/* 53 S> */ B(LdaCurrentContextSlot), U8(2), /* 53 S> */ B(LdaCurrentContextSlot), U8(3),
/* 65 S> */ B(Return), /* 65 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -68,9 +68,9 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(2), B(CreateFunctionContext), U8(0), U8(2),
B(PushContext), R(0), B(PushContext), R(0),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(Ldar), R(arg2), B(Ldar), R(arg2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 29 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 29 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 60 S> */ B(Return), /* 60 S> */ B(Return),
@ -95,7 +95,7 @@ bytecodes: [
B(PushContext), R(0), B(PushContext), R(0),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 26 S> */ B(Ldar), R(this), /* 26 S> */ B(Ldar), R(this),
/* 26 E> */ B(StaCurrentContextSlot), U8(2), /* 26 E> */ B(StaCurrentContextSlot), U8(3),
/* 32 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 32 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 64 S> */ B(Return), /* 64 S> */ B(Return),
] ]

View File

@ -38,7 +38,7 @@ bytecodes: [
B(PushContext), R(0), B(PushContext), R(0),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 74 S> */ B(Return), /* 74 S> */ B(Return),
] ]
@ -61,9 +61,9 @@ bytecodes: [
B(PushContext), R(0), B(PushContext), R(0),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 53 S> */ B(LdaSmi), I8(2), /* 53 S> */ B(LdaSmi), I8(2),
/* 53 E> */ B(StaCurrentContextSlot), U8(3), /* 53 E> */ B(StaCurrentContextSlot), U8(4),
/* 56 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 56 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 91 S> */ B(Return), /* 91 S> */ B(Return),
] ]
@ -88,7 +88,7 @@ bytecodes: [
/* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(1), B(Star), R(1),
/* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0), /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0),
/* 68 S> */ B(LdaCurrentContextSlot), U8(2), /* 68 S> */ B(LdaCurrentContextSlot), U8(3),
/* 77 S> */ B(Return), /* 77 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -111,16 +111,16 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 56 S> */ B(LdaSmi), I8(1), /* 56 S> */ B(LdaSmi), I8(1),
/* 56 E> */ B(StaCurrentContextSlot), U8(2), /* 56 E> */ B(StaCurrentContextSlot), U8(3),
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 69 S> */ B(LdaSmi), I8(2), /* 69 S> */ B(LdaSmi), I8(2),
/* 69 E> */ B(StaCurrentContextSlot), U8(2), /* 69 E> */ B(StaCurrentContextSlot), U8(3),
/* 72 S> */ B(CreateClosure), U8(2), U8(0), U8(2), /* 72 S> */ B(CreateClosure), U8(2), U8(0), U8(2),
/* 101 S> */ B(Return), /* 101 S> */ B(Return),
] ]
@ -386,535 +386,532 @@ snippet: "
var a1144 = 0; var a1144 = 0;
var a1145 = 0; var a1145 = 0;
var a1146 = 0; var a1146 = 0;
var a1147 = 0;
eval(); eval();
var b = 100; var b = 100;
return b return b
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 797 bytecode array length: 791
bytecodes: [ bytecodes: [
B(Wide), B(CreateFunctionContext), U16(0), U16(256), B(CreateFunctionContext), U8(0), U8(255),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateUnmappedArguments), B(CreateUnmappedArguments),
B(Wide), B(StaCurrentContextSlot), U16(257), B(Wide), B(StaCurrentContextSlot), U16(257),
B(Ldar), R(0), B(Ldar), R(0),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 59 S> */ B(LdaZero), /* 59 S> */ B(LdaZero),
/* 59 E> */ B(StaCurrentContextSlot), U8(4), /* 59 E> */ B(StaCurrentContextSlot), U8(5),
/* 73 S> */ B(LdaZero), /* 73 S> */ B(LdaZero),
/* 73 E> */ B(StaCurrentContextSlot), U8(5), /* 73 E> */ B(StaCurrentContextSlot), U8(6),
/* 87 S> */ B(LdaZero), /* 87 S> */ B(LdaZero),
/* 87 E> */ B(StaCurrentContextSlot), U8(6), /* 87 E> */ B(StaCurrentContextSlot), U8(7),
/* 101 S> */ B(LdaZero), /* 101 S> */ B(LdaZero),
/* 101 E> */ B(StaCurrentContextSlot), U8(7), /* 101 E> */ B(StaCurrentContextSlot), U8(8),
/* 115 S> */ B(LdaZero), /* 115 S> */ B(LdaZero),
/* 115 E> */ B(StaCurrentContextSlot), U8(8), /* 115 E> */ B(StaCurrentContextSlot), U8(9),
/* 129 S> */ B(LdaZero), /* 129 S> */ B(LdaZero),
/* 129 E> */ B(StaCurrentContextSlot), U8(9), /* 129 E> */ B(StaCurrentContextSlot), U8(10),
/* 143 S> */ B(LdaZero), /* 143 S> */ B(LdaZero),
/* 143 E> */ B(StaCurrentContextSlot), U8(10), /* 143 E> */ B(StaCurrentContextSlot), U8(11),
/* 157 S> */ B(LdaZero), /* 157 S> */ B(LdaZero),
/* 157 E> */ B(StaCurrentContextSlot), U8(11), /* 157 E> */ B(StaCurrentContextSlot), U8(12),
/* 171 S> */ B(LdaZero), /* 171 S> */ B(LdaZero),
/* 171 E> */ B(StaCurrentContextSlot), U8(12), /* 171 E> */ B(StaCurrentContextSlot), U8(13),
/* 185 S> */ B(LdaZero), /* 185 S> */ B(LdaZero),
/* 185 E> */ B(StaCurrentContextSlot), U8(13), /* 185 E> */ B(StaCurrentContextSlot), U8(14),
/* 199 S> */ B(LdaZero), /* 199 S> */ B(LdaZero),
/* 199 E> */ B(StaCurrentContextSlot), U8(14), /* 199 E> */ B(StaCurrentContextSlot), U8(15),
/* 213 S> */ B(LdaZero), /* 213 S> */ B(LdaZero),
/* 213 E> */ B(StaCurrentContextSlot), U8(15), /* 213 E> */ B(StaCurrentContextSlot), U8(16),
/* 227 S> */ B(LdaZero), /* 227 S> */ B(LdaZero),
/* 227 E> */ B(StaCurrentContextSlot), U8(16), /* 227 E> */ B(StaCurrentContextSlot), U8(17),
/* 241 S> */ B(LdaZero), /* 241 S> */ B(LdaZero),
/* 241 E> */ B(StaCurrentContextSlot), U8(17), /* 241 E> */ B(StaCurrentContextSlot), U8(18),
/* 255 S> */ B(LdaZero), /* 255 S> */ B(LdaZero),
/* 255 E> */ B(StaCurrentContextSlot), U8(18), /* 255 E> */ B(StaCurrentContextSlot), U8(19),
/* 269 S> */ B(LdaZero), /* 269 S> */ B(LdaZero),
/* 269 E> */ B(StaCurrentContextSlot), U8(19), /* 269 E> */ B(StaCurrentContextSlot), U8(20),
/* 283 S> */ B(LdaZero), /* 283 S> */ B(LdaZero),
/* 283 E> */ B(StaCurrentContextSlot), U8(20), /* 283 E> */ B(StaCurrentContextSlot), U8(21),
/* 297 S> */ B(LdaZero), /* 297 S> */ B(LdaZero),
/* 297 E> */ B(StaCurrentContextSlot), U8(21), /* 297 E> */ B(StaCurrentContextSlot), U8(22),
/* 311 S> */ B(LdaZero), /* 311 S> */ B(LdaZero),
/* 311 E> */ B(StaCurrentContextSlot), U8(22), /* 311 E> */ B(StaCurrentContextSlot), U8(23),
/* 325 S> */ B(LdaZero), /* 325 S> */ B(LdaZero),
/* 325 E> */ B(StaCurrentContextSlot), U8(23), /* 325 E> */ B(StaCurrentContextSlot), U8(24),
/* 339 S> */ B(LdaZero), /* 339 S> */ B(LdaZero),
/* 339 E> */ B(StaCurrentContextSlot), U8(24), /* 339 E> */ B(StaCurrentContextSlot), U8(25),
/* 353 S> */ B(LdaZero), /* 353 S> */ B(LdaZero),
/* 353 E> */ B(StaCurrentContextSlot), U8(25), /* 353 E> */ B(StaCurrentContextSlot), U8(26),
/* 367 S> */ B(LdaZero), /* 367 S> */ B(LdaZero),
/* 367 E> */ B(StaCurrentContextSlot), U8(26), /* 367 E> */ B(StaCurrentContextSlot), U8(27),
/* 381 S> */ B(LdaZero), /* 381 S> */ B(LdaZero),
/* 381 E> */ B(StaCurrentContextSlot), U8(27), /* 381 E> */ B(StaCurrentContextSlot), U8(28),
/* 395 S> */ B(LdaZero), /* 395 S> */ B(LdaZero),
/* 395 E> */ B(StaCurrentContextSlot), U8(28), /* 395 E> */ B(StaCurrentContextSlot), U8(29),
/* 409 S> */ B(LdaZero), /* 409 S> */ B(LdaZero),
/* 409 E> */ B(StaCurrentContextSlot), U8(29), /* 409 E> */ B(StaCurrentContextSlot), U8(30),
/* 423 S> */ B(LdaZero), /* 423 S> */ B(LdaZero),
/* 423 E> */ B(StaCurrentContextSlot), U8(30), /* 423 E> */ B(StaCurrentContextSlot), U8(31),
/* 437 S> */ B(LdaZero), /* 437 S> */ B(LdaZero),
/* 437 E> */ B(StaCurrentContextSlot), U8(31), /* 437 E> */ B(StaCurrentContextSlot), U8(32),
/* 451 S> */ B(LdaZero), /* 451 S> */ B(LdaZero),
/* 451 E> */ B(StaCurrentContextSlot), U8(32), /* 451 E> */ B(StaCurrentContextSlot), U8(33),
/* 465 S> */ B(LdaZero), /* 465 S> */ B(LdaZero),
/* 465 E> */ B(StaCurrentContextSlot), U8(33), /* 465 E> */ B(StaCurrentContextSlot), U8(34),
/* 479 S> */ B(LdaZero), /* 479 S> */ B(LdaZero),
/* 479 E> */ B(StaCurrentContextSlot), U8(34), /* 479 E> */ B(StaCurrentContextSlot), U8(35),
/* 493 S> */ B(LdaZero), /* 493 S> */ B(LdaZero),
/* 493 E> */ B(StaCurrentContextSlot), U8(35), /* 493 E> */ B(StaCurrentContextSlot), U8(36),
/* 507 S> */ B(LdaZero), /* 507 S> */ B(LdaZero),
/* 507 E> */ B(StaCurrentContextSlot), U8(36), /* 507 E> */ B(StaCurrentContextSlot), U8(37),
/* 521 S> */ B(LdaZero), /* 521 S> */ B(LdaZero),
/* 521 E> */ B(StaCurrentContextSlot), U8(37), /* 521 E> */ B(StaCurrentContextSlot), U8(38),
/* 535 S> */ B(LdaZero), /* 535 S> */ B(LdaZero),
/* 535 E> */ B(StaCurrentContextSlot), U8(38), /* 535 E> */ B(StaCurrentContextSlot), U8(39),
/* 549 S> */ B(LdaZero), /* 549 S> */ B(LdaZero),
/* 549 E> */ B(StaCurrentContextSlot), U8(39), /* 549 E> */ B(StaCurrentContextSlot), U8(40),
/* 563 S> */ B(LdaZero), /* 563 S> */ B(LdaZero),
/* 563 E> */ B(StaCurrentContextSlot), U8(40), /* 563 E> */ B(StaCurrentContextSlot), U8(41),
/* 577 S> */ B(LdaZero), /* 577 S> */ B(LdaZero),
/* 577 E> */ B(StaCurrentContextSlot), U8(41), /* 577 E> */ B(StaCurrentContextSlot), U8(42),
/* 591 S> */ B(LdaZero), /* 591 S> */ B(LdaZero),
/* 591 E> */ B(StaCurrentContextSlot), U8(42), /* 591 E> */ B(StaCurrentContextSlot), U8(43),
/* 605 S> */ B(LdaZero), /* 605 S> */ B(LdaZero),
/* 605 E> */ B(StaCurrentContextSlot), U8(43), /* 605 E> */ B(StaCurrentContextSlot), U8(44),
/* 619 S> */ B(LdaZero), /* 619 S> */ B(LdaZero),
/* 619 E> */ B(StaCurrentContextSlot), U8(44), /* 619 E> */ B(StaCurrentContextSlot), U8(45),
/* 633 S> */ B(LdaZero), /* 633 S> */ B(LdaZero),
/* 633 E> */ B(StaCurrentContextSlot), U8(45), /* 633 E> */ B(StaCurrentContextSlot), U8(46),
/* 647 S> */ B(LdaZero), /* 647 S> */ B(LdaZero),
/* 647 E> */ B(StaCurrentContextSlot), U8(46), /* 647 E> */ B(StaCurrentContextSlot), U8(47),
/* 661 S> */ B(LdaZero), /* 661 S> */ B(LdaZero),
/* 661 E> */ B(StaCurrentContextSlot), U8(47), /* 661 E> */ B(StaCurrentContextSlot), U8(48),
/* 675 S> */ B(LdaZero), /* 675 S> */ B(LdaZero),
/* 675 E> */ B(StaCurrentContextSlot), U8(48), /* 675 E> */ B(StaCurrentContextSlot), U8(49),
/* 689 S> */ B(LdaZero), /* 689 S> */ B(LdaZero),
/* 689 E> */ B(StaCurrentContextSlot), U8(49), /* 689 E> */ B(StaCurrentContextSlot), U8(50),
/* 703 S> */ B(LdaZero), /* 703 S> */ B(LdaZero),
/* 703 E> */ B(StaCurrentContextSlot), U8(50), /* 703 E> */ B(StaCurrentContextSlot), U8(51),
/* 717 S> */ B(LdaZero), /* 717 S> */ B(LdaZero),
/* 717 E> */ B(StaCurrentContextSlot), U8(51), /* 717 E> */ B(StaCurrentContextSlot), U8(52),
/* 731 S> */ B(LdaZero), /* 731 S> */ B(LdaZero),
/* 731 E> */ B(StaCurrentContextSlot), U8(52), /* 731 E> */ B(StaCurrentContextSlot), U8(53),
/* 745 S> */ B(LdaZero), /* 745 S> */ B(LdaZero),
/* 745 E> */ B(StaCurrentContextSlot), U8(53), /* 745 E> */ B(StaCurrentContextSlot), U8(54),
/* 759 S> */ B(LdaZero), /* 759 S> */ B(LdaZero),
/* 759 E> */ B(StaCurrentContextSlot), U8(54), /* 759 E> */ B(StaCurrentContextSlot), U8(55),
/* 773 S> */ B(LdaZero), /* 773 S> */ B(LdaZero),
/* 773 E> */ B(StaCurrentContextSlot), U8(55), /* 773 E> */ B(StaCurrentContextSlot), U8(56),
/* 787 S> */ B(LdaZero), /* 787 S> */ B(LdaZero),
/* 787 E> */ B(StaCurrentContextSlot), U8(56), /* 787 E> */ B(StaCurrentContextSlot), U8(57),
/* 801 S> */ B(LdaZero), /* 801 S> */ B(LdaZero),
/* 801 E> */ B(StaCurrentContextSlot), U8(57), /* 801 E> */ B(StaCurrentContextSlot), U8(58),
/* 815 S> */ B(LdaZero), /* 815 S> */ B(LdaZero),
/* 815 E> */ B(StaCurrentContextSlot), U8(58), /* 815 E> */ B(StaCurrentContextSlot), U8(59),
/* 829 S> */ B(LdaZero), /* 829 S> */ B(LdaZero),
/* 829 E> */ B(StaCurrentContextSlot), U8(59), /* 829 E> */ B(StaCurrentContextSlot), U8(60),
/* 843 S> */ B(LdaZero), /* 843 S> */ B(LdaZero),
/* 843 E> */ B(StaCurrentContextSlot), U8(60), /* 843 E> */ B(StaCurrentContextSlot), U8(61),
/* 857 S> */ B(LdaZero), /* 857 S> */ B(LdaZero),
/* 857 E> */ B(StaCurrentContextSlot), U8(61), /* 857 E> */ B(StaCurrentContextSlot), U8(62),
/* 871 S> */ B(LdaZero), /* 871 S> */ B(LdaZero),
/* 871 E> */ B(StaCurrentContextSlot), U8(62), /* 871 E> */ B(StaCurrentContextSlot), U8(63),
/* 885 S> */ B(LdaZero), /* 885 S> */ B(LdaZero),
/* 885 E> */ B(StaCurrentContextSlot), U8(63), /* 885 E> */ B(StaCurrentContextSlot), U8(64),
/* 899 S> */ B(LdaZero), /* 899 S> */ B(LdaZero),
/* 899 E> */ B(StaCurrentContextSlot), U8(64), /* 899 E> */ B(StaCurrentContextSlot), U8(65),
/* 913 S> */ B(LdaZero), /* 913 S> */ B(LdaZero),
/* 913 E> */ B(StaCurrentContextSlot), U8(65), /* 913 E> */ B(StaCurrentContextSlot), U8(66),
/* 927 S> */ B(LdaZero), /* 927 S> */ B(LdaZero),
/* 927 E> */ B(StaCurrentContextSlot), U8(66), /* 927 E> */ B(StaCurrentContextSlot), U8(67),
/* 941 S> */ B(LdaZero), /* 941 S> */ B(LdaZero),
/* 941 E> */ B(StaCurrentContextSlot), U8(67), /* 941 E> */ B(StaCurrentContextSlot), U8(68),
/* 955 S> */ B(LdaZero), /* 955 S> */ B(LdaZero),
/* 955 E> */ B(StaCurrentContextSlot), U8(68), /* 955 E> */ B(StaCurrentContextSlot), U8(69),
/* 969 S> */ B(LdaZero), /* 969 S> */ B(LdaZero),
/* 969 E> */ B(StaCurrentContextSlot), U8(69), /* 969 E> */ B(StaCurrentContextSlot), U8(70),
/* 983 S> */ B(LdaZero), /* 983 S> */ B(LdaZero),
/* 983 E> */ B(StaCurrentContextSlot), U8(70), /* 983 E> */ B(StaCurrentContextSlot), U8(71),
/* 997 S> */ B(LdaZero), /* 997 S> */ B(LdaZero),
/* 997 E> */ B(StaCurrentContextSlot), U8(71), /* 997 E> */ B(StaCurrentContextSlot), U8(72),
/* 1011 S> */ B(LdaZero), /* 1011 S> */ B(LdaZero),
/* 1011 E> */ B(StaCurrentContextSlot), U8(72), /* 1011 E> */ B(StaCurrentContextSlot), U8(73),
/* 1025 S> */ B(LdaZero), /* 1025 S> */ B(LdaZero),
/* 1025 E> */ B(StaCurrentContextSlot), U8(73), /* 1025 E> */ B(StaCurrentContextSlot), U8(74),
/* 1039 S> */ B(LdaZero), /* 1039 S> */ B(LdaZero),
/* 1039 E> */ B(StaCurrentContextSlot), U8(74), /* 1039 E> */ B(StaCurrentContextSlot), U8(75),
/* 1053 S> */ B(LdaZero), /* 1053 S> */ B(LdaZero),
/* 1053 E> */ B(StaCurrentContextSlot), U8(75), /* 1053 E> */ B(StaCurrentContextSlot), U8(76),
/* 1067 S> */ B(LdaZero), /* 1067 S> */ B(LdaZero),
/* 1067 E> */ B(StaCurrentContextSlot), U8(76), /* 1067 E> */ B(StaCurrentContextSlot), U8(77),
/* 1081 S> */ B(LdaZero), /* 1081 S> */ B(LdaZero),
/* 1081 E> */ B(StaCurrentContextSlot), U8(77), /* 1081 E> */ B(StaCurrentContextSlot), U8(78),
/* 1095 S> */ B(LdaZero), /* 1095 S> */ B(LdaZero),
/* 1095 E> */ B(StaCurrentContextSlot), U8(78), /* 1095 E> */ B(StaCurrentContextSlot), U8(79),
/* 1109 S> */ B(LdaZero), /* 1109 S> */ B(LdaZero),
/* 1109 E> */ B(StaCurrentContextSlot), U8(79), /* 1109 E> */ B(StaCurrentContextSlot), U8(80),
/* 1123 S> */ B(LdaZero), /* 1123 S> */ B(LdaZero),
/* 1123 E> */ B(StaCurrentContextSlot), U8(80), /* 1123 E> */ B(StaCurrentContextSlot), U8(81),
/* 1137 S> */ B(LdaZero), /* 1137 S> */ B(LdaZero),
/* 1137 E> */ B(StaCurrentContextSlot), U8(81), /* 1137 E> */ B(StaCurrentContextSlot), U8(82),
/* 1151 S> */ B(LdaZero), /* 1151 S> */ B(LdaZero),
/* 1151 E> */ B(StaCurrentContextSlot), U8(82), /* 1151 E> */ B(StaCurrentContextSlot), U8(83),
/* 1165 S> */ B(LdaZero), /* 1165 S> */ B(LdaZero),
/* 1165 E> */ B(StaCurrentContextSlot), U8(83), /* 1165 E> */ B(StaCurrentContextSlot), U8(84),
/* 1179 S> */ B(LdaZero), /* 1179 S> */ B(LdaZero),
/* 1179 E> */ B(StaCurrentContextSlot), U8(84), /* 1179 E> */ B(StaCurrentContextSlot), U8(85),
/* 1193 S> */ B(LdaZero), /* 1193 S> */ B(LdaZero),
/* 1193 E> */ B(StaCurrentContextSlot), U8(85), /* 1193 E> */ B(StaCurrentContextSlot), U8(86),
/* 1207 S> */ B(LdaZero), /* 1207 S> */ B(LdaZero),
/* 1207 E> */ B(StaCurrentContextSlot), U8(86), /* 1207 E> */ B(StaCurrentContextSlot), U8(87),
/* 1221 S> */ B(LdaZero), /* 1221 S> */ B(LdaZero),
/* 1221 E> */ B(StaCurrentContextSlot), U8(87), /* 1221 E> */ B(StaCurrentContextSlot), U8(88),
/* 1235 S> */ B(LdaZero), /* 1235 S> */ B(LdaZero),
/* 1235 E> */ B(StaCurrentContextSlot), U8(88), /* 1235 E> */ B(StaCurrentContextSlot), U8(89),
/* 1249 S> */ B(LdaZero), /* 1249 S> */ B(LdaZero),
/* 1249 E> */ B(StaCurrentContextSlot), U8(89), /* 1249 E> */ B(StaCurrentContextSlot), U8(90),
/* 1263 S> */ B(LdaZero), /* 1263 S> */ B(LdaZero),
/* 1263 E> */ B(StaCurrentContextSlot), U8(90), /* 1263 E> */ B(StaCurrentContextSlot), U8(91),
/* 1277 S> */ B(LdaZero), /* 1277 S> */ B(LdaZero),
/* 1277 E> */ B(StaCurrentContextSlot), U8(91), /* 1277 E> */ B(StaCurrentContextSlot), U8(92),
/* 1291 S> */ B(LdaZero), /* 1291 S> */ B(LdaZero),
/* 1291 E> */ B(StaCurrentContextSlot), U8(92), /* 1291 E> */ B(StaCurrentContextSlot), U8(93),
/* 1305 S> */ B(LdaZero), /* 1305 S> */ B(LdaZero),
/* 1305 E> */ B(StaCurrentContextSlot), U8(93), /* 1305 E> */ B(StaCurrentContextSlot), U8(94),
/* 1319 S> */ B(LdaZero), /* 1319 S> */ B(LdaZero),
/* 1319 E> */ B(StaCurrentContextSlot), U8(94), /* 1319 E> */ B(StaCurrentContextSlot), U8(95),
/* 1333 S> */ B(LdaZero), /* 1333 S> */ B(LdaZero),
/* 1333 E> */ B(StaCurrentContextSlot), U8(95), /* 1333 E> */ B(StaCurrentContextSlot), U8(96),
/* 1347 S> */ B(LdaZero), /* 1347 S> */ B(LdaZero),
/* 1347 E> */ B(StaCurrentContextSlot), U8(96), /* 1347 E> */ B(StaCurrentContextSlot), U8(97),
/* 1361 S> */ B(LdaZero), /* 1361 S> */ B(LdaZero),
/* 1361 E> */ B(StaCurrentContextSlot), U8(97), /* 1361 E> */ B(StaCurrentContextSlot), U8(98),
/* 1375 S> */ B(LdaZero), /* 1375 S> */ B(LdaZero),
/* 1375 E> */ B(StaCurrentContextSlot), U8(98), /* 1375 E> */ B(StaCurrentContextSlot), U8(99),
/* 1389 S> */ B(LdaZero), /* 1389 S> */ B(LdaZero),
/* 1389 E> */ B(StaCurrentContextSlot), U8(99), /* 1389 E> */ B(StaCurrentContextSlot), U8(100),
/* 1403 S> */ B(LdaZero), /* 1403 S> */ B(LdaZero),
/* 1403 E> */ B(StaCurrentContextSlot), U8(100), /* 1403 E> */ B(StaCurrentContextSlot), U8(101),
/* 1417 S> */ B(LdaZero), /* 1417 S> */ B(LdaZero),
/* 1417 E> */ B(StaCurrentContextSlot), U8(101), /* 1417 E> */ B(StaCurrentContextSlot), U8(102),
/* 1431 S> */ B(LdaZero), /* 1431 S> */ B(LdaZero),
/* 1431 E> */ B(StaCurrentContextSlot), U8(102), /* 1431 E> */ B(StaCurrentContextSlot), U8(103),
/* 1445 S> */ B(LdaZero), /* 1445 S> */ B(LdaZero),
/* 1445 E> */ B(StaCurrentContextSlot), U8(103), /* 1445 E> */ B(StaCurrentContextSlot), U8(104),
/* 1459 S> */ B(LdaZero), /* 1459 S> */ B(LdaZero),
/* 1459 E> */ B(StaCurrentContextSlot), U8(104), /* 1459 E> */ B(StaCurrentContextSlot), U8(105),
/* 1473 S> */ B(LdaZero), /* 1473 S> */ B(LdaZero),
/* 1473 E> */ B(StaCurrentContextSlot), U8(105), /* 1473 E> */ B(StaCurrentContextSlot), U8(106),
/* 1487 S> */ B(LdaZero), /* 1487 S> */ B(LdaZero),
/* 1487 E> */ B(StaCurrentContextSlot), U8(106), /* 1487 E> */ B(StaCurrentContextSlot), U8(107),
/* 1501 S> */ B(LdaZero), /* 1501 S> */ B(LdaZero),
/* 1501 E> */ B(StaCurrentContextSlot), U8(107), /* 1501 E> */ B(StaCurrentContextSlot), U8(108),
/* 1516 S> */ B(LdaZero), /* 1516 S> */ B(LdaZero),
/* 1516 E> */ B(StaCurrentContextSlot), U8(108), /* 1516 E> */ B(StaCurrentContextSlot), U8(109),
/* 1531 S> */ B(LdaZero), /* 1531 S> */ B(LdaZero),
/* 1531 E> */ B(StaCurrentContextSlot), U8(109), /* 1531 E> */ B(StaCurrentContextSlot), U8(110),
/* 1546 S> */ B(LdaZero), /* 1546 S> */ B(LdaZero),
/* 1546 E> */ B(StaCurrentContextSlot), U8(110), /* 1546 E> */ B(StaCurrentContextSlot), U8(111),
/* 1561 S> */ B(LdaZero), /* 1561 S> */ B(LdaZero),
/* 1561 E> */ B(StaCurrentContextSlot), U8(111), /* 1561 E> */ B(StaCurrentContextSlot), U8(112),
/* 1576 S> */ B(LdaZero), /* 1576 S> */ B(LdaZero),
/* 1576 E> */ B(StaCurrentContextSlot), U8(112), /* 1576 E> */ B(StaCurrentContextSlot), U8(113),
/* 1591 S> */ B(LdaZero), /* 1591 S> */ B(LdaZero),
/* 1591 E> */ B(StaCurrentContextSlot), U8(113), /* 1591 E> */ B(StaCurrentContextSlot), U8(114),
/* 1606 S> */ B(LdaZero), /* 1606 S> */ B(LdaZero),
/* 1606 E> */ B(StaCurrentContextSlot), U8(114), /* 1606 E> */ B(StaCurrentContextSlot), U8(115),
/* 1621 S> */ B(LdaZero), /* 1621 S> */ B(LdaZero),
/* 1621 E> */ B(StaCurrentContextSlot), U8(115), /* 1621 E> */ B(StaCurrentContextSlot), U8(116),
/* 1636 S> */ B(LdaZero), /* 1636 S> */ B(LdaZero),
/* 1636 E> */ B(StaCurrentContextSlot), U8(116), /* 1636 E> */ B(StaCurrentContextSlot), U8(117),
/* 1651 S> */ B(LdaZero), /* 1651 S> */ B(LdaZero),
/* 1651 E> */ B(StaCurrentContextSlot), U8(117), /* 1651 E> */ B(StaCurrentContextSlot), U8(118),
/* 1666 S> */ B(LdaZero), /* 1666 S> */ B(LdaZero),
/* 1666 E> */ B(StaCurrentContextSlot), U8(118), /* 1666 E> */ B(StaCurrentContextSlot), U8(119),
/* 1681 S> */ B(LdaZero), /* 1681 S> */ B(LdaZero),
/* 1681 E> */ B(StaCurrentContextSlot), U8(119), /* 1681 E> */ B(StaCurrentContextSlot), U8(120),
/* 1696 S> */ B(LdaZero), /* 1696 S> */ B(LdaZero),
/* 1696 E> */ B(StaCurrentContextSlot), U8(120), /* 1696 E> */ B(StaCurrentContextSlot), U8(121),
/* 1711 S> */ B(LdaZero), /* 1711 S> */ B(LdaZero),
/* 1711 E> */ B(StaCurrentContextSlot), U8(121), /* 1711 E> */ B(StaCurrentContextSlot), U8(122),
/* 1726 S> */ B(LdaZero), /* 1726 S> */ B(LdaZero),
/* 1726 E> */ B(StaCurrentContextSlot), U8(122), /* 1726 E> */ B(StaCurrentContextSlot), U8(123),
/* 1741 S> */ B(LdaZero), /* 1741 S> */ B(LdaZero),
/* 1741 E> */ B(StaCurrentContextSlot), U8(123), /* 1741 E> */ B(StaCurrentContextSlot), U8(124),
/* 1756 S> */ B(LdaZero), /* 1756 S> */ B(LdaZero),
/* 1756 E> */ B(StaCurrentContextSlot), U8(124), /* 1756 E> */ B(StaCurrentContextSlot), U8(125),
/* 1771 S> */ B(LdaZero), /* 1771 S> */ B(LdaZero),
/* 1771 E> */ B(StaCurrentContextSlot), U8(125), /* 1771 E> */ B(StaCurrentContextSlot), U8(126),
/* 1786 S> */ B(LdaZero), /* 1786 S> */ B(LdaZero),
/* 1786 E> */ B(StaCurrentContextSlot), U8(126), /* 1786 E> */ B(StaCurrentContextSlot), U8(127),
/* 1801 S> */ B(LdaZero), /* 1801 S> */ B(LdaZero),
/* 1801 E> */ B(StaCurrentContextSlot), U8(127), /* 1801 E> */ B(StaCurrentContextSlot), U8(128),
/* 1816 S> */ B(LdaZero), /* 1816 S> */ B(LdaZero),
/* 1816 E> */ B(StaCurrentContextSlot), U8(128), /* 1816 E> */ B(StaCurrentContextSlot), U8(129),
/* 1831 S> */ B(LdaZero), /* 1831 S> */ B(LdaZero),
/* 1831 E> */ B(StaCurrentContextSlot), U8(129), /* 1831 E> */ B(StaCurrentContextSlot), U8(130),
/* 1846 S> */ B(LdaZero), /* 1846 S> */ B(LdaZero),
/* 1846 E> */ B(StaCurrentContextSlot), U8(130), /* 1846 E> */ B(StaCurrentContextSlot), U8(131),
/* 1861 S> */ B(LdaZero), /* 1861 S> */ B(LdaZero),
/* 1861 E> */ B(StaCurrentContextSlot), U8(131), /* 1861 E> */ B(StaCurrentContextSlot), U8(132),
/* 1876 S> */ B(LdaZero), /* 1876 S> */ B(LdaZero),
/* 1876 E> */ B(StaCurrentContextSlot), U8(132), /* 1876 E> */ B(StaCurrentContextSlot), U8(133),
/* 1891 S> */ B(LdaZero), /* 1891 S> */ B(LdaZero),
/* 1891 E> */ B(StaCurrentContextSlot), U8(133), /* 1891 E> */ B(StaCurrentContextSlot), U8(134),
/* 1906 S> */ B(LdaZero), /* 1906 S> */ B(LdaZero),
/* 1906 E> */ B(StaCurrentContextSlot), U8(134), /* 1906 E> */ B(StaCurrentContextSlot), U8(135),
/* 1921 S> */ B(LdaZero), /* 1921 S> */ B(LdaZero),
/* 1921 E> */ B(StaCurrentContextSlot), U8(135), /* 1921 E> */ B(StaCurrentContextSlot), U8(136),
/* 1936 S> */ B(LdaZero), /* 1936 S> */ B(LdaZero),
/* 1936 E> */ B(StaCurrentContextSlot), U8(136), /* 1936 E> */ B(StaCurrentContextSlot), U8(137),
/* 1951 S> */ B(LdaZero), /* 1951 S> */ B(LdaZero),
/* 1951 E> */ B(StaCurrentContextSlot), U8(137), /* 1951 E> */ B(StaCurrentContextSlot), U8(138),
/* 1966 S> */ B(LdaZero), /* 1966 S> */ B(LdaZero),
/* 1966 E> */ B(StaCurrentContextSlot), U8(138), /* 1966 E> */ B(StaCurrentContextSlot), U8(139),
/* 1981 S> */ B(LdaZero), /* 1981 S> */ B(LdaZero),
/* 1981 E> */ B(StaCurrentContextSlot), U8(139), /* 1981 E> */ B(StaCurrentContextSlot), U8(140),
/* 1996 S> */ B(LdaZero), /* 1996 S> */ B(LdaZero),
/* 1996 E> */ B(StaCurrentContextSlot), U8(140), /* 1996 E> */ B(StaCurrentContextSlot), U8(141),
/* 2011 S> */ B(LdaZero), /* 2011 S> */ B(LdaZero),
/* 2011 E> */ B(StaCurrentContextSlot), U8(141), /* 2011 E> */ B(StaCurrentContextSlot), U8(142),
/* 2026 S> */ B(LdaZero), /* 2026 S> */ B(LdaZero),
/* 2026 E> */ B(StaCurrentContextSlot), U8(142), /* 2026 E> */ B(StaCurrentContextSlot), U8(143),
/* 2041 S> */ B(LdaZero), /* 2041 S> */ B(LdaZero),
/* 2041 E> */ B(StaCurrentContextSlot), U8(143), /* 2041 E> */ B(StaCurrentContextSlot), U8(144),
/* 2056 S> */ B(LdaZero), /* 2056 S> */ B(LdaZero),
/* 2056 E> */ B(StaCurrentContextSlot), U8(144), /* 2056 E> */ B(StaCurrentContextSlot), U8(145),
/* 2071 S> */ B(LdaZero), /* 2071 S> */ B(LdaZero),
/* 2071 E> */ B(StaCurrentContextSlot), U8(145), /* 2071 E> */ B(StaCurrentContextSlot), U8(146),
/* 2086 S> */ B(LdaZero), /* 2086 S> */ B(LdaZero),
/* 2086 E> */ B(StaCurrentContextSlot), U8(146), /* 2086 E> */ B(StaCurrentContextSlot), U8(147),
/* 2101 S> */ B(LdaZero), /* 2101 S> */ B(LdaZero),
/* 2101 E> */ B(StaCurrentContextSlot), U8(147), /* 2101 E> */ B(StaCurrentContextSlot), U8(148),
/* 2116 S> */ B(LdaZero), /* 2116 S> */ B(LdaZero),
/* 2116 E> */ B(StaCurrentContextSlot), U8(148), /* 2116 E> */ B(StaCurrentContextSlot), U8(149),
/* 2131 S> */ B(LdaZero), /* 2131 S> */ B(LdaZero),
/* 2131 E> */ B(StaCurrentContextSlot), U8(149), /* 2131 E> */ B(StaCurrentContextSlot), U8(150),
/* 2146 S> */ B(LdaZero), /* 2146 S> */ B(LdaZero),
/* 2146 E> */ B(StaCurrentContextSlot), U8(150), /* 2146 E> */ B(StaCurrentContextSlot), U8(151),
/* 2161 S> */ B(LdaZero), /* 2161 S> */ B(LdaZero),
/* 2161 E> */ B(StaCurrentContextSlot), U8(151), /* 2161 E> */ B(StaCurrentContextSlot), U8(152),
/* 2176 S> */ B(LdaZero), /* 2176 S> */ B(LdaZero),
/* 2176 E> */ B(StaCurrentContextSlot), U8(152), /* 2176 E> */ B(StaCurrentContextSlot), U8(153),
/* 2191 S> */ B(LdaZero), /* 2191 S> */ B(LdaZero),
/* 2191 E> */ B(StaCurrentContextSlot), U8(153), /* 2191 E> */ B(StaCurrentContextSlot), U8(154),
/* 2206 S> */ B(LdaZero), /* 2206 S> */ B(LdaZero),
/* 2206 E> */ B(StaCurrentContextSlot), U8(154), /* 2206 E> */ B(StaCurrentContextSlot), U8(155),
/* 2221 S> */ B(LdaZero), /* 2221 S> */ B(LdaZero),
/* 2221 E> */ B(StaCurrentContextSlot), U8(155), /* 2221 E> */ B(StaCurrentContextSlot), U8(156),
/* 2236 S> */ B(LdaZero), /* 2236 S> */ B(LdaZero),
/* 2236 E> */ B(StaCurrentContextSlot), U8(156), /* 2236 E> */ B(StaCurrentContextSlot), U8(157),
/* 2251 S> */ B(LdaZero), /* 2251 S> */ B(LdaZero),
/* 2251 E> */ B(StaCurrentContextSlot), U8(157), /* 2251 E> */ B(StaCurrentContextSlot), U8(158),
/* 2266 S> */ B(LdaZero), /* 2266 S> */ B(LdaZero),
/* 2266 E> */ B(StaCurrentContextSlot), U8(158), /* 2266 E> */ B(StaCurrentContextSlot), U8(159),
/* 2281 S> */ B(LdaZero), /* 2281 S> */ B(LdaZero),
/* 2281 E> */ B(StaCurrentContextSlot), U8(159), /* 2281 E> */ B(StaCurrentContextSlot), U8(160),
/* 2296 S> */ B(LdaZero), /* 2296 S> */ B(LdaZero),
/* 2296 E> */ B(StaCurrentContextSlot), U8(160), /* 2296 E> */ B(StaCurrentContextSlot), U8(161),
/* 2311 S> */ B(LdaZero), /* 2311 S> */ B(LdaZero),
/* 2311 E> */ B(StaCurrentContextSlot), U8(161), /* 2311 E> */ B(StaCurrentContextSlot), U8(162),
/* 2326 S> */ B(LdaZero), /* 2326 S> */ B(LdaZero),
/* 2326 E> */ B(StaCurrentContextSlot), U8(162), /* 2326 E> */ B(StaCurrentContextSlot), U8(163),
/* 2341 S> */ B(LdaZero), /* 2341 S> */ B(LdaZero),
/* 2341 E> */ B(StaCurrentContextSlot), U8(163), /* 2341 E> */ B(StaCurrentContextSlot), U8(164),
/* 2356 S> */ B(LdaZero), /* 2356 S> */ B(LdaZero),
/* 2356 E> */ B(StaCurrentContextSlot), U8(164), /* 2356 E> */ B(StaCurrentContextSlot), U8(165),
/* 2371 S> */ B(LdaZero), /* 2371 S> */ B(LdaZero),
/* 2371 E> */ B(StaCurrentContextSlot), U8(165), /* 2371 E> */ B(StaCurrentContextSlot), U8(166),
/* 2386 S> */ B(LdaZero), /* 2386 S> */ B(LdaZero),
/* 2386 E> */ B(StaCurrentContextSlot), U8(166), /* 2386 E> */ B(StaCurrentContextSlot), U8(167),
/* 2401 S> */ B(LdaZero), /* 2401 S> */ B(LdaZero),
/* 2401 E> */ B(StaCurrentContextSlot), U8(167), /* 2401 E> */ B(StaCurrentContextSlot), U8(168),
/* 2416 S> */ B(LdaZero), /* 2416 S> */ B(LdaZero),
/* 2416 E> */ B(StaCurrentContextSlot), U8(168), /* 2416 E> */ B(StaCurrentContextSlot), U8(169),
/* 2431 S> */ B(LdaZero), /* 2431 S> */ B(LdaZero),
/* 2431 E> */ B(StaCurrentContextSlot), U8(169), /* 2431 E> */ B(StaCurrentContextSlot), U8(170),
/* 2446 S> */ B(LdaZero), /* 2446 S> */ B(LdaZero),
/* 2446 E> */ B(StaCurrentContextSlot), U8(170), /* 2446 E> */ B(StaCurrentContextSlot), U8(171),
/* 2461 S> */ B(LdaZero), /* 2461 S> */ B(LdaZero),
/* 2461 E> */ B(StaCurrentContextSlot), U8(171), /* 2461 E> */ B(StaCurrentContextSlot), U8(172),
/* 2476 S> */ B(LdaZero), /* 2476 S> */ B(LdaZero),
/* 2476 E> */ B(StaCurrentContextSlot), U8(172), /* 2476 E> */ B(StaCurrentContextSlot), U8(173),
/* 2491 S> */ B(LdaZero), /* 2491 S> */ B(LdaZero),
/* 2491 E> */ B(StaCurrentContextSlot), U8(173), /* 2491 E> */ B(StaCurrentContextSlot), U8(174),
/* 2506 S> */ B(LdaZero), /* 2506 S> */ B(LdaZero),
/* 2506 E> */ B(StaCurrentContextSlot), U8(174), /* 2506 E> */ B(StaCurrentContextSlot), U8(175),
/* 2521 S> */ B(LdaZero), /* 2521 S> */ B(LdaZero),
/* 2521 E> */ B(StaCurrentContextSlot), U8(175), /* 2521 E> */ B(StaCurrentContextSlot), U8(176),
/* 2536 S> */ B(LdaZero), /* 2536 S> */ B(LdaZero),
/* 2536 E> */ B(StaCurrentContextSlot), U8(176), /* 2536 E> */ B(StaCurrentContextSlot), U8(177),
/* 2551 S> */ B(LdaZero), /* 2551 S> */ B(LdaZero),
/* 2551 E> */ B(StaCurrentContextSlot), U8(177), /* 2551 E> */ B(StaCurrentContextSlot), U8(178),
/* 2566 S> */ B(LdaZero), /* 2566 S> */ B(LdaZero),
/* 2566 E> */ B(StaCurrentContextSlot), U8(178), /* 2566 E> */ B(StaCurrentContextSlot), U8(179),
/* 2581 S> */ B(LdaZero), /* 2581 S> */ B(LdaZero),
/* 2581 E> */ B(StaCurrentContextSlot), U8(179), /* 2581 E> */ B(StaCurrentContextSlot), U8(180),
/* 2596 S> */ B(LdaZero), /* 2596 S> */ B(LdaZero),
/* 2596 E> */ B(StaCurrentContextSlot), U8(180), /* 2596 E> */ B(StaCurrentContextSlot), U8(181),
/* 2611 S> */ B(LdaZero), /* 2611 S> */ B(LdaZero),
/* 2611 E> */ B(StaCurrentContextSlot), U8(181), /* 2611 E> */ B(StaCurrentContextSlot), U8(182),
/* 2626 S> */ B(LdaZero), /* 2626 S> */ B(LdaZero),
/* 2626 E> */ B(StaCurrentContextSlot), U8(182), /* 2626 E> */ B(StaCurrentContextSlot), U8(183),
/* 2641 S> */ B(LdaZero), /* 2641 S> */ B(LdaZero),
/* 2641 E> */ B(StaCurrentContextSlot), U8(183), /* 2641 E> */ B(StaCurrentContextSlot), U8(184),
/* 2656 S> */ B(LdaZero), /* 2656 S> */ B(LdaZero),
/* 2656 E> */ B(StaCurrentContextSlot), U8(184), /* 2656 E> */ B(StaCurrentContextSlot), U8(185),
/* 2671 S> */ B(LdaZero), /* 2671 S> */ B(LdaZero),
/* 2671 E> */ B(StaCurrentContextSlot), U8(185), /* 2671 E> */ B(StaCurrentContextSlot), U8(186),
/* 2686 S> */ B(LdaZero), /* 2686 S> */ B(LdaZero),
/* 2686 E> */ B(StaCurrentContextSlot), U8(186), /* 2686 E> */ B(StaCurrentContextSlot), U8(187),
/* 2701 S> */ B(LdaZero), /* 2701 S> */ B(LdaZero),
/* 2701 E> */ B(StaCurrentContextSlot), U8(187), /* 2701 E> */ B(StaCurrentContextSlot), U8(188),
/* 2716 S> */ B(LdaZero), /* 2716 S> */ B(LdaZero),
/* 2716 E> */ B(StaCurrentContextSlot), U8(188), /* 2716 E> */ B(StaCurrentContextSlot), U8(189),
/* 2731 S> */ B(LdaZero), /* 2731 S> */ B(LdaZero),
/* 2731 E> */ B(StaCurrentContextSlot), U8(189), /* 2731 E> */ B(StaCurrentContextSlot), U8(190),
/* 2746 S> */ B(LdaZero), /* 2746 S> */ B(LdaZero),
/* 2746 E> */ B(StaCurrentContextSlot), U8(190), /* 2746 E> */ B(StaCurrentContextSlot), U8(191),
/* 2761 S> */ B(LdaZero), /* 2761 S> */ B(LdaZero),
/* 2761 E> */ B(StaCurrentContextSlot), U8(191), /* 2761 E> */ B(StaCurrentContextSlot), U8(192),
/* 2776 S> */ B(LdaZero), /* 2776 S> */ B(LdaZero),
/* 2776 E> */ B(StaCurrentContextSlot), U8(192), /* 2776 E> */ B(StaCurrentContextSlot), U8(193),
/* 2791 S> */ B(LdaZero), /* 2791 S> */ B(LdaZero),
/* 2791 E> */ B(StaCurrentContextSlot), U8(193), /* 2791 E> */ B(StaCurrentContextSlot), U8(194),
/* 2806 S> */ B(LdaZero), /* 2806 S> */ B(LdaZero),
/* 2806 E> */ B(StaCurrentContextSlot), U8(194), /* 2806 E> */ B(StaCurrentContextSlot), U8(195),
/* 2821 S> */ B(LdaZero), /* 2821 S> */ B(LdaZero),
/* 2821 E> */ B(StaCurrentContextSlot), U8(195), /* 2821 E> */ B(StaCurrentContextSlot), U8(196),
/* 2836 S> */ B(LdaZero), /* 2836 S> */ B(LdaZero),
/* 2836 E> */ B(StaCurrentContextSlot), U8(196), /* 2836 E> */ B(StaCurrentContextSlot), U8(197),
/* 2851 S> */ B(LdaZero), /* 2851 S> */ B(LdaZero),
/* 2851 E> */ B(StaCurrentContextSlot), U8(197), /* 2851 E> */ B(StaCurrentContextSlot), U8(198),
/* 2866 S> */ B(LdaZero), /* 2866 S> */ B(LdaZero),
/* 2866 E> */ B(StaCurrentContextSlot), U8(198), /* 2866 E> */ B(StaCurrentContextSlot), U8(199),
/* 2881 S> */ B(LdaZero), /* 2881 S> */ B(LdaZero),
/* 2881 E> */ B(StaCurrentContextSlot), U8(199), /* 2881 E> */ B(StaCurrentContextSlot), U8(200),
/* 2896 S> */ B(LdaZero), /* 2896 S> */ B(LdaZero),
/* 2896 E> */ B(StaCurrentContextSlot), U8(200), /* 2896 E> */ B(StaCurrentContextSlot), U8(201),
/* 2911 S> */ B(LdaZero), /* 2911 S> */ B(LdaZero),
/* 2911 E> */ B(StaCurrentContextSlot), U8(201), /* 2911 E> */ B(StaCurrentContextSlot), U8(202),
/* 2926 S> */ B(LdaZero), /* 2926 S> */ B(LdaZero),
/* 2926 E> */ B(StaCurrentContextSlot), U8(202), /* 2926 E> */ B(StaCurrentContextSlot), U8(203),
/* 2941 S> */ B(LdaZero), /* 2941 S> */ B(LdaZero),
/* 2941 E> */ B(StaCurrentContextSlot), U8(203), /* 2941 E> */ B(StaCurrentContextSlot), U8(204),
/* 2956 S> */ B(LdaZero), /* 2956 S> */ B(LdaZero),
/* 2956 E> */ B(StaCurrentContextSlot), U8(204), /* 2956 E> */ B(StaCurrentContextSlot), U8(205),
/* 2971 S> */ B(LdaZero), /* 2971 S> */ B(LdaZero),
/* 2971 E> */ B(StaCurrentContextSlot), U8(205), /* 2971 E> */ B(StaCurrentContextSlot), U8(206),
/* 2986 S> */ B(LdaZero), /* 2986 S> */ B(LdaZero),
/* 2986 E> */ B(StaCurrentContextSlot), U8(206), /* 2986 E> */ B(StaCurrentContextSlot), U8(207),
/* 3001 S> */ B(LdaZero), /* 3001 S> */ B(LdaZero),
/* 3001 E> */ B(StaCurrentContextSlot), U8(207), /* 3001 E> */ B(StaCurrentContextSlot), U8(208),
/* 3016 S> */ B(LdaZero), /* 3016 S> */ B(LdaZero),
/* 3016 E> */ B(StaCurrentContextSlot), U8(208), /* 3016 E> */ B(StaCurrentContextSlot), U8(209),
/* 3031 S> */ B(LdaZero), /* 3031 S> */ B(LdaZero),
/* 3031 E> */ B(StaCurrentContextSlot), U8(209), /* 3031 E> */ B(StaCurrentContextSlot), U8(210),
/* 3046 S> */ B(LdaZero), /* 3046 S> */ B(LdaZero),
/* 3046 E> */ B(StaCurrentContextSlot), U8(210), /* 3046 E> */ B(StaCurrentContextSlot), U8(211),
/* 3061 S> */ B(LdaZero), /* 3061 S> */ B(LdaZero),
/* 3061 E> */ B(StaCurrentContextSlot), U8(211), /* 3061 E> */ B(StaCurrentContextSlot), U8(212),
/* 3076 S> */ B(LdaZero), /* 3076 S> */ B(LdaZero),
/* 3076 E> */ B(StaCurrentContextSlot), U8(212), /* 3076 E> */ B(StaCurrentContextSlot), U8(213),
/* 3091 S> */ B(LdaZero), /* 3091 S> */ B(LdaZero),
/* 3091 E> */ B(StaCurrentContextSlot), U8(213), /* 3091 E> */ B(StaCurrentContextSlot), U8(214),
/* 3106 S> */ B(LdaZero), /* 3106 S> */ B(LdaZero),
/* 3106 E> */ B(StaCurrentContextSlot), U8(214), /* 3106 E> */ B(StaCurrentContextSlot), U8(215),
/* 3121 S> */ B(LdaZero), /* 3121 S> */ B(LdaZero),
/* 3121 E> */ B(StaCurrentContextSlot), U8(215), /* 3121 E> */ B(StaCurrentContextSlot), U8(216),
/* 3136 S> */ B(LdaZero), /* 3136 S> */ B(LdaZero),
/* 3136 E> */ B(StaCurrentContextSlot), U8(216), /* 3136 E> */ B(StaCurrentContextSlot), U8(217),
/* 3151 S> */ B(LdaZero), /* 3151 S> */ B(LdaZero),
/* 3151 E> */ B(StaCurrentContextSlot), U8(217), /* 3151 E> */ B(StaCurrentContextSlot), U8(218),
/* 3166 S> */ B(LdaZero), /* 3166 S> */ B(LdaZero),
/* 3166 E> */ B(StaCurrentContextSlot), U8(218), /* 3166 E> */ B(StaCurrentContextSlot), U8(219),
/* 3181 S> */ B(LdaZero), /* 3181 S> */ B(LdaZero),
/* 3181 E> */ B(StaCurrentContextSlot), U8(219), /* 3181 E> */ B(StaCurrentContextSlot), U8(220),
/* 3196 S> */ B(LdaZero), /* 3196 S> */ B(LdaZero),
/* 3196 E> */ B(StaCurrentContextSlot), U8(220), /* 3196 E> */ B(StaCurrentContextSlot), U8(221),
/* 3211 S> */ B(LdaZero), /* 3211 S> */ B(LdaZero),
/* 3211 E> */ B(StaCurrentContextSlot), U8(221), /* 3211 E> */ B(StaCurrentContextSlot), U8(222),
/* 3226 S> */ B(LdaZero), /* 3226 S> */ B(LdaZero),
/* 3226 E> */ B(StaCurrentContextSlot), U8(222), /* 3226 E> */ B(StaCurrentContextSlot), U8(223),
/* 3241 S> */ B(LdaZero), /* 3241 S> */ B(LdaZero),
/* 3241 E> */ B(StaCurrentContextSlot), U8(223), /* 3241 E> */ B(StaCurrentContextSlot), U8(224),
/* 3256 S> */ B(LdaZero), /* 3256 S> */ B(LdaZero),
/* 3256 E> */ B(StaCurrentContextSlot), U8(224), /* 3256 E> */ B(StaCurrentContextSlot), U8(225),
/* 3271 S> */ B(LdaZero), /* 3271 S> */ B(LdaZero),
/* 3271 E> */ B(StaCurrentContextSlot), U8(225), /* 3271 E> */ B(StaCurrentContextSlot), U8(226),
/* 3286 S> */ B(LdaZero), /* 3286 S> */ B(LdaZero),
/* 3286 E> */ B(StaCurrentContextSlot), U8(226), /* 3286 E> */ B(StaCurrentContextSlot), U8(227),
/* 3301 S> */ B(LdaZero), /* 3301 S> */ B(LdaZero),
/* 3301 E> */ B(StaCurrentContextSlot), U8(227), /* 3301 E> */ B(StaCurrentContextSlot), U8(228),
/* 3316 S> */ B(LdaZero), /* 3316 S> */ B(LdaZero),
/* 3316 E> */ B(StaCurrentContextSlot), U8(228), /* 3316 E> */ B(StaCurrentContextSlot), U8(229),
/* 3331 S> */ B(LdaZero), /* 3331 S> */ B(LdaZero),
/* 3331 E> */ B(StaCurrentContextSlot), U8(229), /* 3331 E> */ B(StaCurrentContextSlot), U8(230),
/* 3346 S> */ B(LdaZero), /* 3346 S> */ B(LdaZero),
/* 3346 E> */ B(StaCurrentContextSlot), U8(230), /* 3346 E> */ B(StaCurrentContextSlot), U8(231),
/* 3361 S> */ B(LdaZero), /* 3361 S> */ B(LdaZero),
/* 3361 E> */ B(StaCurrentContextSlot), U8(231), /* 3361 E> */ B(StaCurrentContextSlot), U8(232),
/* 3376 S> */ B(LdaZero), /* 3376 S> */ B(LdaZero),
/* 3376 E> */ B(StaCurrentContextSlot), U8(232), /* 3376 E> */ B(StaCurrentContextSlot), U8(233),
/* 3391 S> */ B(LdaZero), /* 3391 S> */ B(LdaZero),
/* 3391 E> */ B(StaCurrentContextSlot), U8(233), /* 3391 E> */ B(StaCurrentContextSlot), U8(234),
/* 3406 S> */ B(LdaZero), /* 3406 S> */ B(LdaZero),
/* 3406 E> */ B(StaCurrentContextSlot), U8(234), /* 3406 E> */ B(StaCurrentContextSlot), U8(235),
/* 3421 S> */ B(LdaZero), /* 3421 S> */ B(LdaZero),
/* 3421 E> */ B(StaCurrentContextSlot), U8(235), /* 3421 E> */ B(StaCurrentContextSlot), U8(236),
/* 3436 S> */ B(LdaZero), /* 3436 S> */ B(LdaZero),
/* 3436 E> */ B(StaCurrentContextSlot), U8(236), /* 3436 E> */ B(StaCurrentContextSlot), U8(237),
/* 3451 S> */ B(LdaZero), /* 3451 S> */ B(LdaZero),
/* 3451 E> */ B(StaCurrentContextSlot), U8(237), /* 3451 E> */ B(StaCurrentContextSlot), U8(238),
/* 3466 S> */ B(LdaZero), /* 3466 S> */ B(LdaZero),
/* 3466 E> */ B(StaCurrentContextSlot), U8(238), /* 3466 E> */ B(StaCurrentContextSlot), U8(239),
/* 3481 S> */ B(LdaZero), /* 3481 S> */ B(LdaZero),
/* 3481 E> */ B(StaCurrentContextSlot), U8(239), /* 3481 E> */ B(StaCurrentContextSlot), U8(240),
/* 3496 S> */ B(LdaZero), /* 3496 S> */ B(LdaZero),
/* 3496 E> */ B(StaCurrentContextSlot), U8(240), /* 3496 E> */ B(StaCurrentContextSlot), U8(241),
/* 3511 S> */ B(LdaZero), /* 3511 S> */ B(LdaZero),
/* 3511 E> */ B(StaCurrentContextSlot), U8(241), /* 3511 E> */ B(StaCurrentContextSlot), U8(242),
/* 3526 S> */ B(LdaZero), /* 3526 S> */ B(LdaZero),
/* 3526 E> */ B(StaCurrentContextSlot), U8(242), /* 3526 E> */ B(StaCurrentContextSlot), U8(243),
/* 3541 S> */ B(LdaZero), /* 3541 S> */ B(LdaZero),
/* 3541 E> */ B(StaCurrentContextSlot), U8(243), /* 3541 E> */ B(StaCurrentContextSlot), U8(244),
/* 3556 S> */ B(LdaZero), /* 3556 S> */ B(LdaZero),
/* 3556 E> */ B(StaCurrentContextSlot), U8(244), /* 3556 E> */ B(StaCurrentContextSlot), U8(245),
/* 3571 S> */ B(LdaZero), /* 3571 S> */ B(LdaZero),
/* 3571 E> */ B(StaCurrentContextSlot), U8(245), /* 3571 E> */ B(StaCurrentContextSlot), U8(246),
/* 3586 S> */ B(LdaZero), /* 3586 S> */ B(LdaZero),
/* 3586 E> */ B(StaCurrentContextSlot), U8(246), /* 3586 E> */ B(StaCurrentContextSlot), U8(247),
/* 3601 S> */ B(LdaZero), /* 3601 S> */ B(LdaZero),
/* 3601 E> */ B(StaCurrentContextSlot), U8(247), /* 3601 E> */ B(StaCurrentContextSlot), U8(248),
/* 3616 S> */ B(LdaZero), /* 3616 S> */ B(LdaZero),
/* 3616 E> */ B(StaCurrentContextSlot), U8(248), /* 3616 E> */ B(StaCurrentContextSlot), U8(249),
/* 3631 S> */ B(LdaZero), /* 3631 S> */ B(LdaZero),
/* 3631 E> */ B(StaCurrentContextSlot), U8(249), /* 3631 E> */ B(StaCurrentContextSlot), U8(250),
/* 3646 S> */ B(LdaZero), /* 3646 S> */ B(LdaZero),
/* 3646 E> */ B(StaCurrentContextSlot), U8(250), /* 3646 E> */ B(StaCurrentContextSlot), U8(251),
/* 3661 S> */ B(LdaZero), /* 3661 S> */ B(LdaZero),
/* 3661 E> */ B(StaCurrentContextSlot), U8(251), /* 3661 E> */ B(StaCurrentContextSlot), U8(252),
/* 3676 S> */ B(LdaZero), /* 3676 S> */ B(LdaZero),
/* 3676 E> */ B(StaCurrentContextSlot), U8(252), /* 3676 E> */ B(StaCurrentContextSlot), U8(253),
/* 3691 S> */ B(LdaZero), /* 3691 S> */ B(LdaZero),
/* 3691 E> */ B(StaCurrentContextSlot), U8(253), /* 3691 E> */ B(StaCurrentContextSlot), U8(254),
/* 3706 S> */ B(LdaZero), /* 3706 S> */ B(LdaZero),
/* 3706 E> */ B(StaCurrentContextSlot), U8(254), /* 3706 E> */ B(StaCurrentContextSlot), U8(255),
/* 3721 S> */ B(LdaZero), /* 3709 S> */ B(LdaGlobal), U8(1), U8(0),
/* 3721 E> */ B(StaCurrentContextSlot), U8(255),
/* 3724 S> */ B(LdaGlobal), U8(1), U8(0),
B(Star), R(2), B(Star), R(2),
/* 3724 E> */ B(CallUndefinedReceiver0), R(2), U8(2), /* 3709 E> */ B(CallUndefinedReceiver0), R(2), U8(2),
/* 3740 S> */ B(LdaSmi), I8(100), /* 3725 S> */ B(LdaSmi), I8(100),
/* 3740 E> */ B(Wide), B(StaCurrentContextSlot), U16(256), /* 3725 E> */ B(Wide), B(StaCurrentContextSlot), U16(256),
/* 3745 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256), /* 3730 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256),
/* 3753 S> */ B(Return), /* 3738 S> */ B(Return),
] ]
constant pool: [ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,

View File

@ -213,12 +213,12 @@ bytecodes: [
B(PushContext), R(1), B(PushContext), R(1),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(0), B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(2), /* 78 S> */ B(LdaCurrentContextSlot), U8(3),
B(Inc), U8(0), B(Inc), U8(0),
/* 87 E> */ B(StaCurrentContextSlot), U8(2), /* 87 E> */ B(StaCurrentContextSlot), U8(3),
/* 89 S> */ B(Return), /* 89 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -240,14 +240,14 @@ bytecodes: [
B(PushContext), R(1), B(PushContext), R(1),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star), R(0), B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(2), /* 78 S> */ B(LdaCurrentContextSlot), U8(3),
B(ToNumeric), U8(0), B(ToNumeric), U8(0),
B(Star), R(2), B(Star), R(2),
B(Dec), U8(0), B(Dec), U8(0),
/* 86 E> */ B(StaCurrentContextSlot), U8(2), /* 86 E> */ B(StaCurrentContextSlot), U8(3),
B(Ldar), R(2), B(Ldar), R(2),
/* 89 S> */ B(Return), /* 89 S> */ B(Return),
] ]

View File

@ -77,7 +77,7 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star), R(0), B(Star), R(0),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
@ -103,11 +103,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(3), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(5),
B(Ldar), R(arg1), B(Ldar), R(arg1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(Ldar), R(arg2), B(Ldar), R(arg2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star), R(0), B(Star), R(0),
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),

View File

@ -104,9 +104,9 @@ bytecodes: [
B(PushContext), R(0), B(PushContext), R(0),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 56 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), /* 56 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41),
/* 56 E> */ B(StaCurrentContextSlot), U8(2), /* 56 E> */ B(StaCurrentContextSlot), U8(3),
/* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2), /* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2),
/* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(1), B(Star), R(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(DeletePropertyStrict), R(1), B(DeletePropertyStrict), R(1),

View File

@ -13,7 +13,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 59 bytecode array length: 59
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),

View File

@ -145,7 +145,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),
@ -318,7 +318,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),
@ -495,7 +495,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),
@ -634,7 +634,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(2), B(Ldar), R(2),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(5), B(Star), R(5),
B(LdaFalse), B(LdaFalse),
B(Star), R(6), B(Star), R(6),

View File

@ -111,7 +111,7 @@ frame size: 20
parameter count: 2 parameter count: 2
bytecode array length: 239 bytecode array length: 239
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(5), B(CreateFunctionContext), U8(0), U8(4),
B(PushContext), R(2), B(PushContext), R(2),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
@ -125,7 +125,7 @@ bytecodes: [
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 34 S> */ B(LdaContextSlot), R(3), U8(3), U8(0), /* 34 S> */ B(LdaContextSlot), R(3), U8(3), U8(0),
B(Star), R(6), B(Star), R(6),
B(GetIterator), R(6), U8(0), U8(2), B(GetIterator), R(6), U8(0), U8(2),
@ -152,9 +152,9 @@ bytecodes: [
B(CreateBlockContext), U8(5), B(CreateBlockContext), U8(5),
B(PushContext), R(11), B(PushContext), R(11),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 29 S> */ B(Ldar), R(0), /* 29 S> */ B(Ldar), R(0),
/* 29 E> */ B(StaCurrentContextSlot), U8(2), /* 29 E> */ B(StaCurrentContextSlot), U8(3),
/* 41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(12), U8(3), /* 41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(12), U8(3),
B(Star), R(12), B(Star), R(12),
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
@ -273,9 +273,9 @@ bytecodes: [
B(CreateBlockContext), U8(3), B(CreateBlockContext), U8(3),
B(PushContext), R(9), B(PushContext), R(9),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 29 S> */ B(Ldar), R(0), /* 29 S> */ B(Ldar), R(0),
/* 29 E> */ B(StaCurrentContextSlot), U8(2), /* 29 E> */ B(StaCurrentContextSlot), U8(3),
/* 41 S> */ B(CreateClosure), U8(4), U8(0), U8(2), /* 41 S> */ B(CreateClosure), U8(4), U8(0), U8(2),
B(Star), R(10), B(Star), R(10),
/* 67 E> */ B(CallUndefinedReceiver0), R(10), U8(12), /* 67 E> */ B(CallUndefinedReceiver0), R(10), U8(12),
@ -782,7 +782,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(PushContext), R(6), B(PushContext), R(6),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
B(LdaFalse), B(LdaFalse),
B(Star), R(9), B(Star), R(9),
@ -915,7 +915,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaTrue), B(LdaTrue),
B(Star), R(8), B(Star), R(8),

View File

@ -756,11 +756,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star), R(0), B(Star), R(0),
/* 46 E> */ B(StackCheck), /* 46 E> */ B(StackCheck),
/* 53 S> */ B(LdaCurrentContextSlot), U8(2), /* 53 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(2), B(Star), R(2),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
/* 57 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0), /* 57 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0),
@ -789,11 +789,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star), R(0), B(Star), R(0),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 37 S> */ B(LdaCurrentContextSlot), U8(2), /* 37 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(2), B(Star), R(2),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
/* 41 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0), /* 41 E> */ B(StaNamedPropertyNoFeedback), R(2), U8(1), U8(0),

View File

@ -16,10 +16,10 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(10), /* 42 S> */ B(LdaSmi), I8(10),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 72 S> */ B(Return), /* 72 S> */ B(Return),
] ]
@ -40,11 +40,11 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(10), /* 42 S> */ B(LdaSmi), I8(10),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 72 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 72 S> */ B(LdaImmutableCurrentContextSlot), U8(3),
/* 81 S> */ B(Return), /* 81 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -64,15 +64,15 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(20), /* 42 S> */ B(LdaSmi), I8(20),
B(Star), R(1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
/* 45 E> */ B(ThrowReferenceErrorIfHole), U8(1), /* 45 E> */ B(ThrowReferenceErrorIfHole), U8(1),
B(Ldar), R(1), B(Ldar), R(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 78 S> */ B(Return), /* 78 S> */ B(Return),
] ]
@ -94,12 +94,12 @@ bytecodes: [
B(CreateFunctionContext), U8(0), U8(1), B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(10), /* 42 S> */ B(LdaSmi), I8(10),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(3),
/* 46 S> */ B(LdaSmi), I8(20), /* 46 S> */ B(LdaSmi), I8(20),
/* 48 E> */ B(StaCurrentContextSlot), U8(2), /* 48 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaUndefined), B(LdaUndefined),
/* 80 S> */ B(Return), /* 80 S> */ B(Return),
] ]

View File

@ -14,7 +14,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 63 bytecode array length: 63
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
@ -59,7 +59,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 64 bytecode array length: 64
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
@ -105,7 +105,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 64 bytecode array length: 64
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
@ -156,7 +156,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 63 bytecode array length: 63
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
@ -181,7 +181,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
B(Star), R(2), B(Star), R(2),
/* 44 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2), /* 44 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2),
/* 66 S> */ B(LdaLookupContextSlot), U8(3), U8(4), U8(1), /* 66 S> */ B(LdaLookupContextSlot), U8(3), U8(5), U8(1),
/* 75 S> */ B(Return), /* 75 S> */ B(Return),
] ]
constant pool: [ constant pool: [
@ -206,7 +206,7 @@ frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 63 bytecode array length: 63
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),

View File

@ -23,9 +23,9 @@ parameter count: 1
bytecode array length: 13 bytecode array length: 13
bytecodes: [ bytecodes: [
/* 97 E> */ B(StackCheck), /* 97 E> */ B(StackCheck),
/* 102 S> */ B(LdaImmutableContextSlot), R(context), U8(2), U8(1), /* 102 S> */ B(LdaImmutableContextSlot), R(context), U8(3), U8(1),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
/* 118 E> */ B(Mul), R(0), U8(0), /* 118 E> */ B(Mul), R(0), U8(0),
/* 129 S> */ B(Return), /* 129 S> */ B(Return),
] ]
@ -51,8 +51,8 @@ parameter count: 1
bytecode array length: 9 bytecode array length: 9
bytecodes: [ bytecodes: [
/* 97 E> */ B(StackCheck), /* 97 E> */ B(StackCheck),
/* 102 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 102 S> */ B(LdaImmutableCurrentContextSlot), U8(3),
/* 111 E> */ B(StaContextSlot), R(context), U8(2), U8(1), /* 111 E> */ B(StaContextSlot), R(context), U8(3), U8(1),
B(LdaUndefined), B(LdaUndefined),
/* 123 S> */ B(Return), /* 123 S> */ B(Return),
] ]

View File

@ -27,13 +27,13 @@ parameter count: 1
bytecode array length: 95 bytecode array length: 95
bytecodes: [ bytecodes: [
/* 67 E> */ B(StackCheck), /* 67 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
/* 76 S> */ B(LdaCurrentContextSlot), U8(2), /* 76 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(3), B(Star), R(3),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
/* 81 E> */ B(LdaKeyedProperty), R(this), U8(0), /* 81 E> */ B(LdaKeyedProperty), R(this), U8(0),
B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1), B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1),
B(Star), R(4), B(Star), R(4),
@ -45,16 +45,16 @@ bytecodes: [
B(CallProperty1), R(5), R(this), R(4), U8(5), B(CallProperty1), R(5), R(this), R(4), U8(5),
/* 91 S> */ B(LdaSmi), I8(1), /* 91 S> */ B(LdaSmi), I8(1),
B(Star), R(2), B(Star), R(2),
B(LdaCurrentContextSlot), U8(2),
B(Star), R(4),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(3),
B(Star), R(4),
B(LdaCurrentContextSlot), U8(4),
/* 96 E> */ B(LdaKeyedProperty), R(this), U8(7), /* 96 E> */ B(LdaKeyedProperty), R(this), U8(7),
B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(4), U8(1), B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(4), U8(1),
B(Star), R(5), B(Star), R(5),
B(CallProperty1), R(5), R(this), R(2), U8(9), B(CallProperty1), R(5), R(this), R(2), U8(9),
/* 108 S> */ B(LdaCurrentContextSlot), U8(2), /* 108 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(3), B(Star), R(3),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
/* 120 E> */ B(LdaKeyedProperty), R(this), U8(11), /* 120 E> */ B(LdaKeyedProperty), R(this), U8(11),
B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1), B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(3), U8(1),
B(Star), R(4), B(Star), R(4),
@ -80,7 +80,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 48 E> */ B(StackCheck), /* 48 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
@ -111,7 +111,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 41 E> */ B(StackCheck), /* 41 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
@ -142,7 +142,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 48 E> */ B(StackCheck), /* 48 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
@ -173,7 +173,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 41 E> */ B(StackCheck), /* 41 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),

View File

@ -25,7 +25,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -40,7 +40,7 @@ bytecodes: [
B(CreateClosure), U8(5), U8(2), U8(2), B(CreateClosure), U8(5), U8(2), U8(2),
B(Star), R(6), B(Star), R(6),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -75,7 +75,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -90,7 +90,7 @@ bytecodes: [
B(LdaNull), B(LdaNull),
B(Star), R(6), B(Star), R(6),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -124,7 +124,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -139,7 +139,7 @@ bytecodes: [
B(CreateClosure), U8(4), U8(1), U8(2), B(CreateClosure), U8(4), U8(1), U8(2),
B(Star), R(6), B(Star), R(6),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(5), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -179,7 +179,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(7), B(Star), R(7),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -194,7 +194,7 @@ bytecodes: [
B(CreateClosure), U8(5), U8(2), U8(2), B(CreateClosure), U8(5), U8(2), U8(2),
B(Star), R(7), B(Star), R(7),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
/* 38 E> */ B(CreateBlockContext), U8(6), /* 38 E> */ B(CreateBlockContext), U8(6),
@ -202,7 +202,7 @@ bytecodes: [
B(LdaConstant), U8(8), B(LdaConstant), U8(8),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 118 E> */ B(CreateClosure), U8(9), U8(3), U8(2), /* 118 E> */ B(CreateClosure), U8(9), U8(3), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
@ -216,7 +216,7 @@ bytecodes: [
B(CreateClosure), U8(11), U8(5), U8(2), B(CreateClosure), U8(11), U8(5), U8(2),
B(Star), R(7), B(Star), R(7),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(3), R(1), B(Mov), R(3), R(1),
B(LdaUndefined), B(LdaUndefined),
@ -274,7 +274,7 @@ bytecodes: [
B(LdaConstant), U8(6), B(LdaConstant), U8(6),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2), /* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(5), B(LdaConstant), U8(5),
@ -290,7 +290,7 @@ bytecodes: [
B(LdaNull), B(LdaNull),
B(Star), R(7), B(Star), R(7),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(3), R(1), B(Mov), R(3), R(1),
/* 122 S> */ B(Ldar), R(1), /* 122 S> */ B(Ldar), R(1),
@ -348,7 +348,7 @@ bytecodes: [
B(LdaConstant), U8(6), B(LdaConstant), U8(6),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 80 E> */ B(CreateClosure), U8(7), U8(2), U8(2), /* 80 E> */ B(CreateClosure), U8(7), U8(2), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(5), B(LdaConstant), U8(5),
@ -364,7 +364,7 @@ bytecodes: [
B(Ldar), R(5), B(Ldar), R(5),
B(StaNamedProperty), R(7), U8(9), U8(0), B(StaNamedProperty), R(7), U8(9), U8(0),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(6), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(3), R(1), B(Mov), R(3), R(1),
/* 126 S> */ B(Ldar), R(1), /* 126 S> */ B(Ldar), R(1),

View File

@ -34,7 +34,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -56,7 +56,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(8), U8(2), U8(2), B(CreateClosure), U8(8), U8(2), U8(2),
@ -140,7 +140,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(4), U8(0), U8(2), B(CreateClosure), U8(4), U8(0), U8(2),
@ -170,13 +170,13 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(5), B(Star), R(5),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(12), U8(3), U8(2), B(CreateClosure), U8(12), U8(3), U8(2),
@ -210,7 +210,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(5), U8(1),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 356 E> */ B(CreateClosure), U8(19), U8(8), U8(2), /* 356 E> */ B(CreateClosure), U8(19), U8(8), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaConstant), U8(18), B(LdaConstant), U8(18),

View File

@ -22,13 +22,13 @@ parameter count: 1
bytecode array length: 28 bytecode array length: 28
bytecodes: [ bytecodes: [
/* 44 E> */ B(StackCheck), /* 44 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
/* 49 S> */ B(LdaCurrentContextSlot), U8(3), /* 49 S> */ B(LdaCurrentContextSlot), U8(4),
/* 61 E> */ B(LdaKeyedProperty), R(this), U8(0), /* 61 E> */ B(LdaKeyedProperty), R(this), U8(0),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
B(Star), R(2), B(Star), R(2),
/* 63 E> */ B(CallAnyReceiver), R(2), R(this), U8(1), U8(2), /* 63 E> */ B(CallAnyReceiver), R(2), R(this), U8(1), U8(2),
/* 66 S> */ B(Return), /* 66 S> */ B(Return),
@ -53,7 +53,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 44 E> */ B(StackCheck), /* 44 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
@ -85,7 +85,7 @@ parameter count: 1
bytecode array length: 29 bytecode array length: 29
bytecodes: [ bytecodes: [
/* 44 E> */ B(StackCheck), /* 44 E> */ B(StackCheck),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
B(Star), R(1), B(Star), R(1),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2), B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),

View File

@ -24,7 +24,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -35,7 +35,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
B(Star), R(4), B(Star), R(4),
B(CreateClosure), U8(4), U8(1), U8(2), B(CreateClosure), U8(4), U8(1), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(5), R(0), B(Mov), R(5), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -72,7 +72,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(7), B(Star), R(7),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -83,7 +83,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3),
B(Star), R(5), B(Star), R(5),
B(CreateClosure), U8(4), U8(1), U8(2), B(CreateClosure), U8(4), U8(1), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(6), R(0), B(Mov), R(6), R(0),
/* 38 E> */ B(CreateBlockContext), U8(5), /* 38 E> */ B(CreateBlockContext), U8(5),
@ -91,7 +91,7 @@ bytecodes: [
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 93 E> */ B(CreateClosure), U8(8), U8(2), U8(2), /* 93 E> */ B(CreateClosure), U8(8), U8(2), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(6), B(LdaConstant), U8(6),
@ -101,7 +101,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3),
B(Star), R(5), B(Star), R(5),
B(CreateClosure), U8(9), U8(3), U8(2), B(CreateClosure), U8(9), U8(3), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(6), R(1), B(Mov), R(6), R(1),
B(LdaUndefined), B(LdaUndefined),
@ -156,7 +156,7 @@ bytecodes: [
B(LdaConstant), U8(6), B(LdaConstant), U8(6),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(4), U8(1),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
/* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2), /* 77 E> */ B(CreateClosure), U8(7), U8(2), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(5), B(LdaConstant), U8(5),
@ -166,7 +166,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(3),
B(Star), R(5), B(Star), R(5),
B(CreateClosure), U8(8), U8(3), U8(2), B(CreateClosure), U8(8), U8(3), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(6), B(Star), R(6),
B(Ldar), R(5), B(Ldar), R(5),
B(StaNamedProperty), R(6), U8(9), U8(0), B(StaNamedProperty), R(6), U8(9), U8(0),

View File

@ -29,7 +29,7 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
@ -37,7 +37,7 @@ bytecodes: [
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(4), B(Star), R(4),
/* 60 S> */ B(LdaConstant), U8(3), /* 60 S> */ B(LdaConstant), U8(3),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(Mov), R(3), R(5), B(Mov), R(3), R(5),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
@ -50,7 +50,7 @@ bytecodes: [
/* 38 E> */ B(CreateBlockContext), U8(6), /* 38 E> */ B(CreateBlockContext), U8(6),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(8), U8(2), U8(2), B(CreateClosure), U8(8), U8(2), U8(2),
@ -58,7 +58,7 @@ bytecodes: [
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
B(Star), R(4), B(Star), R(4),
/* 99 S> */ B(LdaConstant), U8(3), /* 99 S> */ B(LdaConstant), U8(3),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(Mov), R(3), R(5), B(Mov), R(3), R(5),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
@ -128,7 +128,7 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -143,7 +143,7 @@ bytecodes: [
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(5),
/* 77 S> */ B(LdaConstant), U8(5), /* 77 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
B(Mov), R(4), R(6), B(Mov), R(4), R(6),
B(Mov), R(10), R(7), B(Mov), R(10), R(7),
@ -157,7 +157,7 @@ bytecodes: [
/* 38 E> */ B(CreateBlockContext), U8(8), /* 38 E> */ B(CreateBlockContext), U8(8),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(11), U8(3), U8(2), B(CreateClosure), U8(11), U8(3), U8(2),
@ -172,7 +172,7 @@ bytecodes: [
B(LdaConstant), U8(9), B(LdaConstant), U8(9),
B(Star), R(5), B(Star), R(5),
/* 133 S> */ B(LdaConstant), U8(5), /* 133 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
B(CreateClosure), U8(13), U8(5), U8(2), B(CreateClosure), U8(13), U8(5), U8(2),
B(Star), R(9), B(Star), R(9),
@ -188,13 +188,13 @@ bytecodes: [
/* 90 E> */ B(CreateBlockContext), U8(15), /* 90 E> */ B(CreateBlockContext), U8(15),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 236 E> */ B(CreateClosure), U8(17), U8(7), U8(2), /* 236 E> */ B(CreateClosure), U8(17), U8(7), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaConstant), U8(16), B(LdaConstant), U8(16),
B(Star), R(5), B(Star), R(5),
/* 256 S> */ B(LdaConstant), U8(5), /* 256 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
B(Mov), R(4), R(6), B(Mov), R(4), R(6),
B(Mov), R(1), R(7), B(Mov), R(1), R(7),

View File

@ -48,7 +48,7 @@ frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 165 bytecode array length: 165
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(4), B(PushContext), R(4),
B(Ldar), R(this), B(Ldar), R(this),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
@ -60,10 +60,10 @@ bytecodes: [
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(5), B(PushContext), R(5),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
/* 30 S> */ B(LdaZero), /* 30 S> */ B(LdaZero),
/* 30 E> */ B(StaCurrentContextSlot), U8(2), /* 30 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
B(Star), R(0), B(Star), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(1), B(Star), R(1),
@ -71,21 +71,21 @@ bytecodes: [
B(CreateBlockContext), U8(2), B(CreateBlockContext), U8(2),
B(PushContext), R(6), B(PushContext), R(6),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Ldar), R(0), B(Ldar), R(0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqual), R(1), U8(0), B(TestEqual), R(1), U8(0),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(LdaZero), B(LdaZero),
B(Star), R(1), B(Star), R(1),
B(Jump), U8(8), B(Jump), U8(8),
/* 43 S> */ B(LdaCurrentContextSlot), U8(2), /* 43 S> */ B(LdaCurrentContextSlot), U8(3),
B(Inc), U8(1), B(Inc), U8(1),
/* 43 E> */ B(StaCurrentContextSlot), U8(2), /* 43 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(2), B(Star), R(2),
/* 35 S> */ B(LdaCurrentContextSlot), U8(2), /* 35 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(10), B(LdaSmi), I8(10),
/* 35 E> */ B(TestLessThan), R(7), U8(2), /* 35 E> */ B(TestLessThan), R(7), U8(2),
@ -115,7 +115,7 @@ bytecodes: [
/* 48 E> */ B(CallUndefinedReceiver1), R(7), R(8), U8(6), /* 48 E> */ B(CallUndefinedReceiver1), R(7), R(8), U8(6),
B(LdaZero), B(LdaZero),
B(Star), R(2), B(Star), R(2),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
B(Star), R(0), B(Star), R(0),
B(JumpLoop), U8(56), I8(1), B(JumpLoop), U8(56), I8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
@ -160,21 +160,21 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(4), B(PushContext), R(4),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Ldar), R(0), B(Ldar), R(0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqual), R(1), U8(0), B(TestEqual), R(1), U8(0),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(LdaZero), B(LdaZero),
B(Star), R(1), B(Star), R(1),
B(Jump), U8(8), B(Jump), U8(8),
/* 43 S> */ B(LdaCurrentContextSlot), U8(2), /* 43 S> */ B(LdaCurrentContextSlot), U8(3),
B(Inc), U8(1), B(Inc), U8(1),
/* 43 E> */ B(StaCurrentContextSlot), U8(2), /* 43 E> */ B(StaCurrentContextSlot), U8(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(2), B(Star), R(2),
/* 35 S> */ B(LdaCurrentContextSlot), U8(2), /* 35 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(5), B(Star), R(5),
B(LdaSmi), I8(10), B(LdaSmi), I8(10),
/* 35 E> */ B(TestLessThan), R(5), U8(2), /* 35 E> */ B(TestLessThan), R(5), U8(2),
@ -191,7 +191,7 @@ bytecodes: [
/* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(4), /* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(4),
B(LdaZero), B(LdaZero),
B(Star), R(2), B(Star), R(2),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
B(Star), R(0), B(Star), R(0),
B(JumpLoop), U8(24), I8(1), B(JumpLoop), U8(24), I8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
@ -404,7 +404,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(3), B(Ldar), R(3),
B(PushContext), R(4), B(PushContext), R(4),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(6), B(Star), R(6),
B(LdaFalse), B(LdaFalse),
B(Star), R(7), B(Star), R(7),
@ -474,7 +474,7 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(2), B(Ldar), R(2),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaImmutableCurrentContextSlot), U8(2), B(LdaImmutableCurrentContextSlot), U8(3),
B(Star), R(5), B(Star), R(5),
B(LdaTrue), B(LdaTrue),
B(Star), R(6), B(Star), R(6),

View File

@ -33,17 +33,17 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(4), B(Star), R(4),
/* 60 S> */ B(LdaConstant), U8(3), /* 60 S> */ B(LdaConstant), U8(3),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
/* 92 S> */ B(LdaConstant), U8(4), /* 92 S> */ B(LdaConstant), U8(4),
B(Star), R(8), B(Star), R(8),
@ -53,7 +53,7 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(Ldar), R(8), B(Ldar), R(8),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5),
B(Star), R(4), B(Star), R(4),
B(CreateClosure), U8(6), U8(1), U8(2), B(CreateClosure), U8(6), U8(1), U8(2),
@ -67,17 +67,17 @@ bytecodes: [
/* 38 E> */ B(CreateBlockContext), U8(9), /* 38 E> */ B(CreateBlockContext), U8(9),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(11), U8(3), U8(2), B(CreateClosure), U8(11), U8(3), U8(2),
B(Star), R(3), B(Star), R(3),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(4), B(Star), R(4),
/* 131 S> */ B(LdaConstant), U8(3), /* 131 S> */ B(LdaConstant), U8(3),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(7), B(Star), R(7),
/* 176 S> */ B(LdaConstant), U8(4), /* 176 S> */ B(LdaConstant), U8(4),
B(Star), R(8), B(Star), R(8),
@ -87,7 +87,7 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(Ldar), R(8), B(Ldar), R(8),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(5),
B(Star), R(4), B(Star), R(4),
B(CreateClosure), U8(12), U8(4), U8(2), B(CreateClosure), U8(12), U8(4), U8(2),
@ -168,10 +168,10 @@ bytecodes: [
B(CreateBlockContext), U8(0), B(CreateBlockContext), U8(0),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
B(Star), R(8), B(Star), R(8),
@ -185,7 +185,7 @@ bytecodes: [
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(5),
/* 77 S> */ B(LdaConstant), U8(5), /* 77 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
/* 109 S> */ B(LdaConstant), U8(6), /* 109 S> */ B(LdaConstant), U8(6),
B(Star), R(9), B(Star), R(9),
@ -196,7 +196,7 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(Ldar), R(9), B(Ldar), R(9),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5),
B(Star), R(5), B(Star), R(5),
B(CreateClosure), U8(8), U8(2), U8(2), B(CreateClosure), U8(8), U8(2), U8(2),
@ -210,10 +210,10 @@ bytecodes: [
/* 38 E> */ B(CreateBlockContext), U8(11), /* 38 E> */ B(CreateBlockContext), U8(11),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaTheHole),
B(Star), R(11), B(Star), R(11),
B(CreateClosure), U8(14), U8(4), U8(2), B(CreateClosure), U8(14), U8(4), U8(2),
B(Star), R(8), B(Star), R(8),
@ -227,7 +227,7 @@ bytecodes: [
B(LdaConstant), U8(12), B(LdaConstant), U8(12),
B(Star), R(5), B(Star), R(5),
/* 165 S> */ B(LdaConstant), U8(5), /* 165 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
/* 210 S> */ B(LdaConstant), U8(6), /* 210 S> */ B(LdaConstant), U8(6),
B(Star), R(9), B(Star), R(9),
@ -238,7 +238,7 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(Ldar), R(9), B(Ldar), R(9),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(CreateClosure), U8(16), U8(6), U8(2), B(CreateClosure), U8(16), U8(6), U8(2),
B(Star), R(10), B(Star), R(10),
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(6), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(6),
@ -254,15 +254,15 @@ bytecodes: [
/* 122 E> */ B(CreateBlockContext), U8(19), /* 122 E> */ B(CreateBlockContext), U8(19),
B(PushContext), R(3), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 313 E> */ B(CreateClosure), U8(21), U8(9), U8(2), /* 313 E> */ B(CreateClosure), U8(21), U8(9), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaConstant), U8(20), B(LdaConstant), U8(20),
B(Star), R(5), B(Star), R(5),
/* 333 S> */ B(LdaConstant), U8(5), /* 333 S> */ B(LdaConstant), U8(5),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(Star), R(8), B(Star), R(8),
/* 378 S> */ B(LdaConstant), U8(6), /* 378 S> */ B(LdaConstant), U8(6),
B(Star), R(9), B(Star), R(9),
@ -273,7 +273,7 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(Ldar), R(9), B(Ldar), R(9),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(5),
B(Star), R(5), B(Star), R(5),
B(CreateClosure), U8(22), U8(10), U8(2), B(CreateClosure), U8(22), U8(10), U8(2),

View File

@ -22,7 +22,7 @@ parameter count: 1
bytecode array length: 36 bytecode array length: 36
bytecodes: [ bytecodes: [
/* 51 E> */ B(StackCheck), /* 51 E> */ B(StackCheck),
/* 56 S> */ B(LdaCurrentContextSlot), U8(3), /* 56 S> */ B(LdaCurrentContextSlot), U8(4),
B(TestReferenceEqual), R(this), B(TestReferenceEqual), R(this),
B(Mov), R(this), R(1), B(Mov), R(this), R(1),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
@ -32,7 +32,7 @@ bytecodes: [
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
B(Throw), B(Throw),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(3),
B(Star), R(0), B(Star), R(0),
/* 70 E> */ B(CallAnyReceiver), R(0), R(1), U8(1), U8(0), /* 70 E> */ B(CallAnyReceiver), R(0), R(1), U8(1), U8(0),
/* 73 S> */ B(Return), /* 73 S> */ B(Return),
@ -120,9 +120,9 @@ parameter count: 1
bytecode array length: 143 bytecode array length: 143
bytecodes: [ bytecodes: [
/* 81 E> */ B(StackCheck), /* 81 E> */ B(StackCheck),
/* 90 S> */ B(LdaCurrentContextSlot), U8(2), /* 90 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
/* 94 E> */ B(TestReferenceEqual), R(this), /* 94 E> */ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
@ -142,9 +142,9 @@ bytecodes: [
B(CallProperty1), R(3), R(0), R(2), U8(3), B(CallProperty1), R(3), R(0), R(2), U8(3),
/* 105 S> */ B(LdaSmi), I8(1), /* 105 S> */ B(LdaSmi), I8(1),
B(Star), R(0), B(Star), R(0),
B(LdaCurrentContextSlot), U8(2),
B(Star), R(2),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(3),
B(Star), R(2),
B(LdaCurrentContextSlot), U8(4),
/* 109 E> */ B(TestReferenceEqual), R(this), /* 109 E> */ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(1), B(Mov), R(this), R(1),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
@ -157,9 +157,9 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(2), U8(1), B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(2), U8(1),
B(Star), R(3), B(Star), R(3),
B(CallProperty1), R(3), R(1), R(0), U8(5), B(CallProperty1), R(3), R(1), R(0), U8(5),
/* 122 S> */ B(LdaCurrentContextSlot), U8(2), /* 122 S> */ B(LdaCurrentContextSlot), U8(3),
B(Star), R(1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(3), B(LdaCurrentContextSlot), U8(4),
/* 133 E> */ B(TestReferenceEqual), R(this), /* 133 E> */ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),

View File

@ -31,7 +31,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(3),
B(Star), R(3), B(Star), R(3),
B(CreateClosure), U8(3), U8(1), U8(2), B(CreateClosure), U8(3), U8(1), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -75,7 +75,7 @@ bytecodes: [
B(LdaNull), B(LdaNull),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -119,7 +119,7 @@ bytecodes: [
B(CreateClosure), U8(3), U8(1), U8(2), B(CreateClosure), U8(3), U8(1), U8(2),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -164,7 +164,7 @@ bytecodes: [
B(CreateClosure), U8(4), U8(2), U8(2), B(CreateClosure), U8(4), U8(2), U8(2),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2), B(CallRuntime), U16(Runtime::kCreatePrivateAccessors), R(4), U8(2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(2), R(0), B(Mov), R(2), R(0),
B(LdaUndefined), B(LdaUndefined),
@ -199,7 +199,7 @@ bytecodes: [
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star), R(3), B(Star), R(3),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(3), U8(1),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(5),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
@ -210,9 +210,9 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
B(Star), R(4), B(Star), R(4),
B(CreateClosure), U8(4), U8(1), U8(2), B(CreateClosure), U8(4), U8(1), U8(2),
B(StaCurrentContextSlot), U8(2),
B(CreateClosure), U8(5), U8(2), U8(2),
B(StaCurrentContextSlot), U8(3), B(StaCurrentContextSlot), U8(3),
B(CreateClosure), U8(5), U8(2), U8(2),
B(StaCurrentContextSlot), U8(4),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(5), R(0), B(Mov), R(5), R(0),
B(LdaUndefined), B(LdaUndefined),

View File

@ -59,13 +59,15 @@ namespace interpreter {
#define REPEAT_64_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS() #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_128_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS()
#define REPEAT_252_UNIQUE_VARS() \ #define REPEAT_251_UNIQUE_VARS() \
REPEAT_128_UNIQUE_VARS() \ REPEAT_128_UNIQUE_VARS() \
REPEAT_64_UNIQUE_VARS() \ REPEAT_64_UNIQUE_VARS() \
REPEAT_32_UNIQUE_VARS() \ REPEAT_32_UNIQUE_VARS() \
REPEAT_16_UNIQUE_VARS() \ REPEAT_16_UNIQUE_VARS() \
REPEAT_8_UNIQUE_VARS() \ REPEAT_8_UNIQUE_VARS() \
REPEAT_4_UNIQUE_VARS() UNIQUE_VAR() \
UNIQUE_VAR() \
UNIQUE_VAR()
#define REPEAT_2_LOAD_UNIQUE_PROPERTY() \ #define REPEAT_2_LOAD_UNIQUE_PROPERTY() \
LOAD_UNIQUE_PROPERTY() LOAD_UNIQUE_PROPERTY() LOAD_UNIQUE_PROPERTY() LOAD_UNIQUE_PROPERTY()
@ -1738,7 +1740,7 @@ TEST(ContextVariables) {
// The wide check below relies on MIN_CONTEXT_SLOTS + 3 + 250 == 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 // ever changes, the REPEAT_XXX should be changed to output the correct number
// of unique variables to trigger the wide slot load / store. // of unique variables to trigger the wide slot load / store.
STATIC_ASSERT(Context::MIN_CONTEXT_EXTENDED_SLOTS + 3 + 250 == 256); STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS + 3 + 250 == 256);
InitializedIgnitionHandleScope scope; InitializedIgnitionHandleScope scope;
BytecodeExpectationsPrinter printer(CcTest::isolate()); BytecodeExpectationsPrinter printer(CcTest::isolate());
@ -1756,7 +1758,7 @@ TEST(ContextVariables) {
"{ let b = 2; return function() { a + b; }; }\n", "{ let b = 2; return function() { a + b; }; }\n",
"'use strict';\n" "'use strict';\n"
REPEAT_252_UNIQUE_VARS() REPEAT_251_UNIQUE_VARS()
"eval();\n" "eval();\n"
"var b = 100;\n" "var b = 100;\n"
"return b\n", "return b\n",
@ -3547,7 +3549,7 @@ TEST(TemplateLiterals) {
#undef REPEAT_32_UNIQUE_VARS #undef REPEAT_32_UNIQUE_VARS
#undef REPEAT_64_UNIQUE_VARS #undef REPEAT_64_UNIQUE_VARS
#undef REPEAT_128_UNIQUE_VARS #undef REPEAT_128_UNIQUE_VARS
#undef REPEAT_252_UNIQUE_VARS #undef REPEAT_251_UNIQUE_VARS
#undef LOAD_UNIQUE_PROPERTY #undef LOAD_UNIQUE_PROPERTY
#undef REPEAT_2_LOAD_UNIQUE_PROPERTY #undef REPEAT_2_LOAD_UNIQUE_PROPERTY
#undef REPEAT_4_LOAD_UNIQUE_PROPERTY #undef REPEAT_4_LOAD_UNIQUE_PROPERTY

View File

@ -2568,6 +2568,7 @@ TEST(CreatePromiseResolvingFunctionsContext) {
CHECK(result->IsContext()); CHECK(result->IsContext());
Handle<Context> context_js = Handle<Context>::cast(result); Handle<Context> context_js = Handle<Context>::cast(result);
CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info()); CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info());
CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context_js->extension());
CHECK_EQ(*isolate->native_context(), context_js->native_context()); CHECK_EQ(*isolate->native_context(), context_js->native_context());
CHECK(context_js->get(PromiseBuiltins::kPromiseSlot).IsJSPromise()); CHECK(context_js->get(PromiseBuiltins::kPromiseSlot).IsJSPromise());
CHECK_EQ(ReadOnlyRoots(isolate).false_value(), CHECK_EQ(ReadOnlyRoots(isolate).false_value(),
@ -2731,6 +2732,7 @@ TEST(CreatePromiseGetCapabilitiesExecutorContext) {
Handle<Context> context_js = Handle<Context>::cast(result_obj); Handle<Context> context_js = Handle<Context>::cast(result_obj);
CHECK_EQ(PromiseBuiltins::kCapabilitiesContextLength, context_js->length()); CHECK_EQ(PromiseBuiltins::kCapabilitiesContextLength, context_js->length());
CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info()); CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info());
CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context_js->extension());
CHECK_EQ(*isolate->native_context(), context_js->native_context()); CHECK_EQ(*isolate->native_context(), context_js->native_context());
CHECK( CHECK(
context_js->get(PromiseBuiltins::kCapabilitySlot).IsPromiseCapability()); context_js->get(PromiseBuiltins::kCapabilitySlot).IsPromiseCapability());
@ -2778,6 +2780,7 @@ TEST(NewPromiseCapability) {
for (auto&& callback : callbacks) { for (auto&& callback : callbacks) {
Handle<Context> context(Context::cast(callback->context()), isolate); Handle<Context> context(Context::cast(callback->context()), isolate);
CHECK_EQ(isolate->native_context()->scope_info(), context->scope_info()); CHECK_EQ(isolate->native_context()->scope_info(), context->scope_info());
CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context->extension());
CHECK_EQ(*isolate->native_context(), context->native_context()); CHECK_EQ(*isolate->native_context(), context->native_context());
CHECK_EQ(PromiseBuiltins::kPromiseContextLength, context->length()); CHECK_EQ(PromiseBuiltins::kPromiseContextLength, context->length());
CHECK_EQ(context->get(PromiseBuiltins::kPromiseSlot), result->promise()); CHECK_EQ(context->get(PromiseBuiltins::kPromiseSlot), result->promise());

View File

@ -2580,7 +2580,7 @@ TEST(ManyLocalsInSharedContext) {
env->GetIsolate(), ok_object, v8::HeapGraphEdge::kInternal, "context"); env->GetIsolate(), ok_object, v8::HeapGraphEdge::kInternal, "context");
CHECK(context_object); CHECK(context_object);
// Check the objects are not duplicated in the context. // Check the objects are not duplicated in the context.
CHECK_EQ(v8::internal::Context::MIN_CONTEXT_EXTENDED_SLOTS + num_objects - 1, CHECK_EQ(v8::internal::Context::MIN_CONTEXT_SLOTS + num_objects - 1,
context_object->GetChildrenCount()); context_object->GetChildrenCount());
// Check all the objects have got their names. // Check all the objects have got their names.
// ... well check just every 15th because otherwise it's too slow in debug. // ... well check just every 15th because otherwise it's too slow in debug.

View File

@ -1,18 +0,0 @@
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax
function f(args) {
eval();
return arguments[0];
}
%PrepareFunctionForOptimization(f);
function g() {
return f(1);
}
%PrepareFunctionForOptimization(g);
assertEquals(1, g());
%OptimizeFunctionOnNextCall(g);
assertEquals(1, g());

View File

@ -182,10 +182,9 @@ TEST_F(JSCreateLoweringTest, JSCreateWithContext) {
Reduce(graph()->NewNode(javascript()->CreateWithContext(scope_info), Reduce(graph()->NewNode(javascript()->CreateWithContext(scope_info),
object, context, effect, control)); object, context, effect, control));
ASSERT_TRUE(r.Changed()); ASSERT_TRUE(r.Changed());
EXPECT_THAT( EXPECT_THAT(r.replacement(),
r.replacement(),
IsFinishRegion(IsAllocate(IsNumberConstant(Context::SizeFor( IsFinishRegion(IsAllocate(IsNumberConstant(Context::SizeFor(
Context::MIN_CONTEXT_EXTENDED_SLOTS)), Context::MIN_CONTEXT_SLOTS)),
IsBeginRegion(_), control), IsBeginRegion(_), control),
_)); _));
} }

View File

@ -195,6 +195,8 @@ consts_misc = [
'value': 'Context::SCOPE_INFO_INDEX' }, 'value': 'Context::SCOPE_INFO_INDEX' },
{ 'name': 'context_idx_prev', { 'name': 'context_idx_prev',
'value': 'Context::PREVIOUS_INDEX' }, 'value': 'Context::PREVIOUS_INDEX' },
{ 'name': 'context_idx_ext',
'value': 'Context::EXTENSION_INDEX' },
{ 'name': 'context_min_slots', { 'name': 'context_min_slots',
'value': 'Context::MIN_CONTEXT_SLOTS' }, 'value': 'Context::MIN_CONTEXT_SLOTS' },
{ 'name': 'native_context_embedder_data_offset', { 'name': 'native_context_embedder_data_offset',