Commit a957b0f4 authored by jarin's avatar jarin Committed by Commit bot

Make non-Module generators only context allocate parameters.

In particular, local variables should be allocated on stack (in bytecode register), and stored/loaded to the generator object on generator suspend/resume.

The CL is based on @adamk's change to scoping/parsers (https://chromium-review.googlesource.com/c/498538/), I only made the debugger cope with this change.

I should note that the CL changes the scope type of suspended generators from ScopeType.Closure to ScopeType.Local. In the future we might want to introduce ScopeType.SuspendedGenerator to make the distinction explicit.

Some of the changes in the tests have been made because the debugger functions do not return scopes of closed generators anymore. Generators should be allowed to throw away their internal state when they finish.

BUG=v8:6368

Review-Url: https://codereview.chromium.org/2898163002
Cr-Commit-Position: refs/heads/master@{#45515}
parent 9d8bd055
......@@ -348,6 +348,7 @@ void Scope::SetDefaults() {
inner_scope_calls_eval_ = false;
force_context_allocation_ = false;
force_context_allocation_for_parameters_ = false;
is_declaration_scope_ = false;
......@@ -2193,7 +2194,8 @@ void DeclarationScope::AllocateParameterLocals() {
void DeclarationScope::AllocateParameter(Variable* var, int index) {
if (MustAllocate(var)) {
if (MustAllocateInContext(var)) {
if (has_forced_context_allocation_for_parameters() ||
MustAllocateInContext(var)) {
DCHECK(var->IsUnallocated() || var->IsContextSlot());
if (var->IsUnallocated()) {
AllocateHeapSlot(var);
......
......@@ -323,6 +323,13 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
bool has_forced_context_allocation() const {
return force_context_allocation_;
}
void ForceContextAllocationForParameters() {
DCHECK(!already_resolved_);
force_context_allocation_for_parameters_ = true;
}
bool has_forced_context_allocation_for_parameters() const {
return force_context_allocation_for_parameters_;
}
// ---------------------------------------------------------------------------
// Predicates.
......@@ -574,6 +581,7 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
// True if one of the inner scopes or the scope itself calls eval.
bool inner_scope_calls_eval_ : 1;
bool force_context_allocation_ : 1;
bool force_context_allocation_for_parameters_ : 1;
// True if it holds 'var' declarations.
bool is_declaration_scope_ : 1;
......
......@@ -30,16 +30,20 @@ ScopeIterator::ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
return;
}
context_ = Handle<Context>::cast(frame_inspector->GetContext());
// We should not instantiate a ScopeIterator for wasm frames.
DCHECK(frame_inspector->GetScript()->type() != Script::TYPE_WASM);
TryParseAndRetrieveScopes(option);
}
void ScopeIterator::TryParseAndRetrieveScopes(ScopeIterator::Option option) {
context_ = GetContext();
// Catch the case when the debugger stops in an internal function.
Handle<JSFunction> function = GetFunction();
Handle<SharedFunctionInfo> shared_info(function->shared());
Handle<ScopeInfo> scope_info(shared_info->scope_info());
if (shared_info->script()->IsUndefined(isolate)) {
if (shared_info->script()->IsUndefined(isolate_)) {
while (context_->closure() == *function) {
context_ = Handle<Context>(context_->previous(), isolate_);
}
......@@ -54,7 +58,8 @@ ScopeIterator::ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
// and include nested scopes into the "fast" iteration case as well.
bool ignore_nested_scopes = (option == IGNORE_NESTED_SCOPES);
bool collect_non_locals = (option == COLLECT_NON_LOCALS);
if (!ignore_nested_scopes && shared_info->HasDebugInfo()) {
if (!ignore_nested_scopes && shared_info->HasDebugInfo() &&
frame_inspector_ != nullptr) {
// The source position at return is always the end of the function,
// which is not consistent with the current scope chain. Therefore all
// nested with, catch and block contexts are skipped, and we can only
......@@ -109,8 +114,8 @@ ScopeIterator::ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
// Inner function.
info.reset(new ParseInfo(shared_info));
}
if (parsing::ParseAny(info.get(), isolate) &&
Rewriter::Rewrite(info.get(), isolate)) {
if (parsing::ParseAny(info.get(), isolate_) &&
Rewriter::Rewrite(info.get(), isolate_)) {
DeclarationScope* scope = info->literal()->scope();
if (!ignore_nested_scopes || collect_non_locals) {
CollectNonLocals(info.get(), scope);
......@@ -136,7 +141,6 @@ ScopeIterator::ScopeIterator(Isolate* isolate, FrameInspector* frame_inspector,
ScopeIterator::ScopeIterator(Isolate* isolate, Handle<JSFunction> function)
: isolate_(isolate),
frame_inspector_(NULL),
context_(function->context()),
seen_script_scope_(false) {
if (!function->shared()->IsSubjectToDebugging()) context_ = Handle<Context>();
......@@ -146,13 +150,14 @@ ScopeIterator::ScopeIterator(Isolate* isolate, Handle<JSFunction> function)
ScopeIterator::ScopeIterator(Isolate* isolate,
Handle<JSGeneratorObject> generator)
: isolate_(isolate),
frame_inspector_(NULL),
generator_(generator),
context_(generator->context()),
seen_script_scope_(false) {
if (!generator->function()->shared()->IsSubjectToDebugging()) {
context_ = Handle<Context>();
return;
}
UnwrapEvaluationContext();
TryParseAndRetrieveScopes(DEFAULT);
}
void ScopeIterator::UnwrapEvaluationContext() {
......@@ -459,10 +464,36 @@ void ScopeIterator::DebugPrint() {
}
#endif
inline Handle<Context> ScopeIterator::GetContext() {
if (frame_inspector_) {
return Handle<Context>::cast(frame_inspector_->GetContext());
} else {
DCHECK(!generator_.is_null());
return handle(generator_->context());
}
}
Handle<JSFunction> ScopeIterator::GetFunction() {
if (frame_inspector_) {
return frame_inspector_->GetFunction();
} else {
DCHECK(!generator_.is_null());
return handle(generator_->function());
}
}
int ScopeIterator::GetSourcePosition() {
if (frame_inspector_) {
return frame_inspector_->GetSourcePosition();
} else {
DCHECK(!generator_.is_null());
return generator_->source_position();
}
}
void ScopeIterator::RetrieveScopeChain(DeclarationScope* scope) {
DCHECK_NOT_NULL(scope);
int source_position = frame_inspector_->GetSourcePosition();
GetNestedScopeChain(isolate_, scope, source_position);
GetNestedScopeChain(isolate_, scope, GetSourcePosition());
}
void ScopeIterator::CollectNonLocals(ParseInfo* info, DeclarationScope* scope) {
......@@ -490,20 +521,41 @@ MaybeHandle<JSObject> ScopeIterator::MaterializeScriptScope() {
return script_scope;
}
void ScopeIterator::MaterializeStackLocals(Handle<JSObject> local_scope,
Handle<ScopeInfo> scope_info) {
if (frame_inspector_) {
return frame_inspector_->MaterializeStackLocals(local_scope, scope_info);
}
DCHECK(!generator_.is_null());
// Fill all stack locals.
Handle<FixedArray> register_file(generator_->register_file());
for (int i = 0; i < scope_info->StackLocalCount(); ++i) {
Handle<String> name = handle(scope_info->StackLocalName(i));
if (ScopeInfo::VariableIsSynthetic(*name)) continue;
Handle<Object> value(register_file->get(scope_info->StackLocalIndex(i)),
isolate_);
// TODO(yangguo): We convert optimized out values to {undefined} when they
// are passed to the debugger. Eventually we should handle them somehow.
if (value->IsTheHole(isolate_) || value->IsOptimizedOut(isolate_)) {
DCHECK(!value.is_identical_to(isolate_->factory()->stale_register()));
value = isolate_->factory()->undefined_value();
}
JSObject::SetOwnPropertyIgnoreAttributes(local_scope, name, value, NONE)
.Check();
}
}
MaybeHandle<JSObject> ScopeIterator::MaterializeLocalScope() {
Handle<JSFunction> function = GetFunction();
Handle<JSFunction> function(GetFunction());
Handle<SharedFunctionInfo> shared(function->shared());
Handle<ScopeInfo> scope_info(shared->scope_info());
Handle<JSObject> local_scope =
isolate_->factory()->NewJSObjectWithNullProto();
frame_inspector_->MaterializeStackLocals(local_scope, function);
MaterializeStackLocals(local_scope, scope_info);
Handle<Context> frame_context =
Handle<Context>::cast(frame_inspector_->GetContext());
HandleScope scope(isolate_);
Handle<SharedFunctionInfo> shared(function->shared());
Handle<ScopeInfo> scope_info(shared->scope_info());
Handle<Context> frame_context = GetContext();
if (!scope_info->HasContext()) return local_scope;
......@@ -585,7 +637,7 @@ Handle<JSObject> ScopeIterator::MaterializeInnerScope() {
Handle<Context> context = Handle<Context>::null();
if (!nested_scope_chain_.is_empty()) {
Handle<ScopeInfo> scope_info = nested_scope_chain_.last().scope_info;
frame_inspector_->MaterializeStackLocals(inner_scope, scope_info);
MaterializeStackLocals(inner_scope, scope_info);
if (scope_info->HasContext()) context = CurrentContext();
} else {
context = CurrentContext();
......@@ -615,14 +667,19 @@ MaybeHandle<JSObject> ScopeIterator::MaterializeModuleScope() {
}
bool ScopeIterator::SetParameterValue(Handle<ScopeInfo> scope_info,
JavaScriptFrame* frame,
Handle<String> parameter_name,
Handle<Object> new_value) {
// Setting stack locals of optimized frames is not supported.
if (frame->is_optimized()) return false;
HandleScope scope(isolate_);
for (int i = 0; i < scope_info->ParameterCount(); ++i) {
if (String::Equals(handle(scope_info->ParameterName(i)), parameter_name)) {
// Suspended generators should not get here because all parameters should
// be context-allocated.
DCHECK_NOT_NULL(frame_inspector_);
JavaScriptFrame* frame = GetFrame();
if (frame->is_optimized()) {
return false;
}
frame->SetParameterValue(i, *new_value);
return true;
}
......@@ -633,14 +690,24 @@ bool ScopeIterator::SetParameterValue(Handle<ScopeInfo> scope_info,
bool ScopeIterator::SetStackVariableValue(Handle<ScopeInfo> scope_info,
Handle<String> variable_name,
Handle<Object> new_value) {
if (frame_inspector_ == nullptr) return false;
JavaScriptFrame* frame = GetFrame();
// Setting stack locals of optimized frames is not supported.
if (frame->is_optimized()) return false;
// Setting stack locals of optimized frames is not supported. Suspended
// generators are supported.
HandleScope scope(isolate_);
for (int i = 0; i < scope_info->StackLocalCount(); ++i) {
if (String::Equals(handle(scope_info->StackLocalName(i)), variable_name)) {
frame->SetExpression(scope_info->StackLocalIndex(i), *new_value);
int stack_local_index = scope_info->StackLocalIndex(i);
if (frame_inspector_ != nullptr) {
// Set the variable on the stack.
JavaScriptFrame* frame = GetFrame();
if (frame->is_optimized()) return false;
frame->SetExpression(stack_local_index, *new_value);
} else {
// Set the variable in the suspended generator.
DCHECK(!generator_.is_null());
Handle<FixedArray> register_file(generator_->register_file());
DCHECK_LT(stack_local_index, register_file->length());
register_file->set(stack_local_index, *new_value);
}
return true;
}
}
......@@ -683,11 +750,10 @@ bool ScopeIterator::SetContextVariableValue(Handle<ScopeInfo> scope_info,
bool ScopeIterator::SetLocalVariableValue(Handle<String> variable_name,
Handle<Object> new_value) {
JavaScriptFrame* frame = GetFrame();
Handle<ScopeInfo> scope_info(frame->function()->shared()->scope_info());
Handle<ScopeInfo> scope_info(GetFunction()->shared()->scope_info());
// Parameter might be shadowed in context. Don't stop here.
bool result = SetParameterValue(scope_info, frame, variable_name, new_value);
bool result = SetParameterValue(scope_info, variable_name, new_value);
// Stack locals.
if (SetStackVariableValue(scope_info, variable_name, new_value)) {
......@@ -839,7 +905,7 @@ void ScopeIterator::GetNestedScopeChain(Isolate* isolate, Scope* scope,
if (scope->is_function_scope()) {
// Do not collect scopes of nested inner functions inside the current one.
// Nested arrow functions could have the same end positions.
Handle<JSFunction> function = frame_inspector_->GetFunction();
Handle<JSFunction> function = GetFunction();
if (scope->start_position() > function->shared()->start_position() &&
scope->end_position() <= function->shared()->end_position()) {
return;
......
......@@ -93,7 +93,8 @@ class ScopeIterator {
};
Isolate* isolate_;
FrameInspector* const frame_inspector_;
FrameInspector* const frame_inspector_ = nullptr;
Handle<JSGeneratorObject> generator_;
Handle<Context> context_;
List<ExtendedScopeInfo> nested_scope_chain_;
Handle<StringSet> non_locals_;
......@@ -103,9 +104,14 @@ class ScopeIterator {
return frame_inspector_->GetArgumentsFrame();
}
inline Handle<JSFunction> GetFunction() {
return frame_inspector_->GetFunction();
}
Handle<Context> GetContext();
Handle<JSFunction> GetFunction();
int GetSourcePosition();
void MaterializeStackLocals(Handle<JSObject> local_scope,
Handle<ScopeInfo> scope_info);
void TryParseAndRetrieveScopes(ScopeIterator::Option option);
void RetrieveScopeChain(DeclarationScope* scope);
......@@ -133,7 +139,7 @@ class ScopeIterator {
Handle<Object> new_value);
// Helper functions.
bool SetParameterValue(Handle<ScopeInfo> scope_info, JavaScriptFrame* frame,
bool SetParameterValue(Handle<ScopeInfo> scope_info,
Handle<String> parameter_name,
Handle<Object> new_value);
bool SetStackVariableValue(Handle<ScopeInfo> scope_info,
......
......@@ -706,6 +706,7 @@ FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) {
var->AllocateTo(VariableLocation::PARAMETER, 0);
PrepareGeneratorVariables();
scope->ForceContextAllocation();
Expression* initial_yield =
BuildInitialYield(kNoSourcePosition, kGeneratorFunction);
body->Add(
......@@ -2531,11 +2532,9 @@ void Parser::DeclareArrowFunctionFormalParameters(
}
void Parser::PrepareGeneratorVariables() {
// For generators, allocating variables in contexts is currently a win because
// it minimizes the work needed to suspend and resume an activation. The
// code produced for generators relies on this forced context allocation (it
// does not restore the frame's parameters upon resume).
function_state_->scope()->ForceContextAllocation();
// The code produced for generators relies on forced context allocation of
// parameters (it does not restore the frame's parameters upon resume).
function_state_->scope()->ForceContextAllocationForParameters();
// Calling a generator returns a generator object. That object is stored
// in a temporary variable, a definition that is used by "yield"
......
......@@ -921,6 +921,11 @@ RUNTIME_FUNCTION(Runtime_GetGeneratorScopeCount) {
// Check arguments.
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, gen, 0);
// Only inspect suspended generator scopes.
if (!gen->is_suspended()) {
return Smi::kZero;
}
// Count the visible scopes.
int n = 0;
for (ScopeIterator it(isolate, gen); !it.Done(); it.Next()) {
......@@ -942,6 +947,11 @@ RUNTIME_FUNCTION(Runtime_GetGeneratorScopeDetails) {
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, gen, 0);
CONVERT_NUMBER_CHECKED(int, index, Int32, args[1]);
// Only inspect suspended generator scopes.
if (!gen->is_suspended()) {
return isolate->heap()->undefined_value();
}
// Find the requested scope.
int n = 0;
ScopeIterator it(isolate, gen);
......
......@@ -14,424 +14,354 @@ snippet: "
}
f();
"
frame size: 18
frame size: 30
parameter count: 1
bytecode array length: 922
bytecode array length: 724
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(16),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(15),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kAbort), R(17), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(12),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(15),
B(Mov), R(closure), R(17),
B(Mov), R(this), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(17), U8(2),
B(Star), R(2),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(5),
B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
B(StaCurrentContextSlot), U8(10),
B(Mov), R(context), R(7),
B(Mov), R(context), R(8),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_promise_create), R(17), U8(1),
B(Star), R(8),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 43 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(8),
B(Star), R(6),
B(Mov), R(context), R(23),
B(Mov), R(context), R(24),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(25),
B(LdaNamedProperty), R(25), U8(4), U8(8),
B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(10),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(10),
B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(13), U8(6), U8(4),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(6),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(6), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
B(LdaNamedProperty), R(25), U8(5), U8(4),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(6),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(26), U8(1),
B(Star), R(4),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 43 E> */ B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kAbort), R(25), U8(1),
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(26),
B(CallProperty0), R(26), R(4), U8(12),
B(Star), R(7),
/* 40 S> */ B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(7), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(26), U8(4),
B(LdaZero),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(22),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(155),
B(Ldar), R(14),
B(Star), R(21),
B(Jump), U8(101),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(Mov), R(26), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(9), U8(16),
B(JumpIfToBooleanTrue), U8(56),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(10), U8(18),
B(StaContextSlot), R(1), U8(11), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(JumpIfToBooleanTrue), U8(25),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(Star), R(9),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(8), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(6),
B(Mov), R(9), R(3),
/* 23 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(11),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
B(PopContext), R(2),
B(Mov), R(3), R(0),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(JumpLoop), U8(219), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Star), R(6),
B(JumpLoop), U8(150), I8(0),
B(Jump), U8(40),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(13),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(11),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(Ldar), R(24),
B(PushContext), R(14),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(13), U8(20),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(6), U8(20),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
B(PopContext), R(2),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kReThrow), R(25), U8(1),
B(PopContext), R(14),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Star), R(21),
B(Jump), U8(8),
B(Star), R(10),
B(Star), R(22),
B(LdaSmi), I8(1),
B(Star), R(9),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrict), R(12), U8(21),
B(JumpIfTrueConstant), U8(18),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(14), U8(22),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrueConstant), U8(15),
B(LdaNamedProperty), R(4), U8(12), U8(22),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(17),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Jump), U8(254),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(25),
B(JumpIfFalse), U8(169),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(142),
B(Ldar), R(10),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(12),
B(LdaConstant), U8(15),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Star), R(24),
B(LdaConstant), U8(13),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kNewTypeError), R(24), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(Mov), R(context), R(24),
B(Mov), R(10), R(26),
B(Mov), R(4), R(27),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(26), U8(2),
B(Star), R(11),
B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(11), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_caught), R(26), U8(4),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(22),
B(Ldar), R(14),
B(Star), R(17),
B(Jump), U8(234),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(26),
B(Jump), U8(20),
B(Star), R(13),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(16),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(14),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(147),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Ldar), R(24),
B(PushContext), R(14),
B(PopContext), R(14),
B(Jump), U8(107),
B(Mov), R(10), R(25),
B(Mov), R(4), R(26),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(25), U8(2),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(Star), R(25),
B(Mov), R(2), R(26),
B(Mov), R(13), R(27),
B(Mov), R(8), R(28),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(25), U8(4),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
B(Mov), R(2), R(24),
B(Mov), R(8), R(25),
B(SuspendGenerator), R(24), U8(2),
B(Ldar), R(25),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(24), U8(1),
B(Star), R(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(24), U8(1),
B(Star), R(26),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(28),
B(Mov), R(25), R(27),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(27), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(148),
B(Ldar), R(13),
B(Star), R(17),
B(Jump), U8(121),
B(Ldar), R(25),
B(ReThrow),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Mov), R(25), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(Ldar), R(11),
B(Ldar), R(23),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(15),
B(PopContext), R(1),
B(Ldar), R(21),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(5),
B(Mov), R(10), R(6),
B(Jump), U8(93),
B(Ldar), R(10),
B(Star), R(17),
B(Mov), R(22), R(18),
B(Jump), U8(83),
B(Ldar), R(22),
B(ReThrow),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(10),
B(Star), R(21),
B(LdaUndefined),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(6),
B(Star), R(23),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_resolve), R(21), U8(3),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(9),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(12), U8(21),
B(Star), R(8),
B(CreateCatchContext), R(21), U8(10), U8(18),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(Ldar), R(20),
B(PushContext), R(14),
B(LdaUndefined),
B(Star), R(9),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(10),
B(Star), R(21),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(11),
B(Star), R(23),
B(LdaFalse),
B(Star), R(12),
B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(24),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_internal_reject), R(21), U8(4),
B(PopContext), R(14),
B(LdaZero),
B(Star), R(5),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(17),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(18),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(Star), R(19),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
B(Ldar), R(7),
B(Star), R(20),
B(Mov), R(8), R(21),
B(CallJSRuntime), U8(%async_function_promise_release), R(20), U8(2),
B(Ldar), R(19),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(23), U8(2), I8(0),
B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(18),
/* 57 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(18),
B(ReThrow),
B(LdaUndefined),
/* 57 S> */ B(Return),
]
constant pool: [
Smi [116],
Smi [544],
Smi [682],
FIXED_ARRAY_TYPE,
Smi [99],
Smi [401],
Smi [514],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [83],
Smi [60],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [327],
Smi [350],
Smi [265],
Smi [6],
Smi [16],
Smi [14],
FIXED_ARRAY_TYPE,
Smi [286],
Smi [6],
Smi [9],
]
handlers: [
[60, 876, 882],
[63, 825, 827],
[80, 400, 406],
[83, 352, 354],
[493, 609, 611],
[56, 679, 685],
[59, 634, 636],
[65, 306, 312],
[68, 266, 268],
[373, 464, 466],
]
---
......@@ -441,441 +371,368 @@ snippet: "
}
f();
"
frame size: 18
frame size: 30
parameter count: 1
bytecode array length: 952
bytecode array length: 752
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(16),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(15),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kAbort), R(17), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(12),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(15),
B(Mov), R(closure), R(17),
B(Mov), R(this), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(17), U8(2),
B(Star), R(2),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(5),
B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
B(StaCurrentContextSlot), U8(10),
B(Mov), R(context), R(7),
B(Mov), R(context), R(8),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_promise_create), R(17), U8(1),
B(Star), R(8),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 43 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(8),
B(Star), R(6),
B(Mov), R(context), R(23),
B(Mov), R(context), R(24),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(25),
B(LdaNamedProperty), R(25), U8(4), U8(8),
B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(10),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(10),
B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(13), U8(6), U8(4),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(6),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(6), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
B(LdaNamedProperty), R(25), U8(5), U8(4),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(6),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(26), U8(1),
B(Star), R(4),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 43 E> */ B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kAbort), R(25), U8(1),
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(26),
B(CallProperty0), R(26), R(4), U8(12),
B(Star), R(7),
/* 40 S> */ B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(7), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(26), U8(4),
B(LdaZero),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(22),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(157),
B(Ldar), R(14),
B(Star), R(21),
B(Jump), U8(104),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(Mov), R(26), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(9), U8(16),
B(JumpIfToBooleanTrue), U8(58),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(10), U8(18),
B(StaContextSlot), R(1), U8(11), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(JumpIfToBooleanTrue), U8(28),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(Star), R(9),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(8), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(6),
B(Mov), R(9), R(3),
/* 23 E> */ B(StackCheck),
B(Mov), R(3), R(0),
/* 56 S> */ B(LdaSmi), I8(1),
B(Star), R(21),
B(Mov), R(0), R(22),
B(Jump), U8(54),
B(Jump), U8(40),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateBlockContext), U8(11),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 56 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(PopContext), R(2),
B(Star), R(10),
B(LdaSmi), I8(1),
B(Star), R(9),
B(Jump), U8(62),
B(Jump), U8(48),
B(Star), R(13),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(13),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(11),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(Ldar), R(24),
B(PushContext), R(14),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(13), U8(20),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(6), U8(20),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
B(PopContext), R(2),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kReThrow), R(25), U8(1),
B(PopContext), R(14),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Star), R(21),
B(Jump), U8(8),
B(Star), R(10),
B(Star), R(22),
B(LdaSmi), I8(2),
B(Star), R(9),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrict), R(12), U8(21),
B(JumpIfTrueConstant), U8(18),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(14), U8(22),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrueConstant), U8(15),
B(LdaNamedProperty), R(4), U8(12), U8(22),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(17),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Jump), U8(254),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(25),
B(JumpIfFalse), U8(169),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(142),
B(Ldar), R(10),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(12),
B(LdaConstant), U8(15),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Star), R(24),
B(LdaConstant), U8(13),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kNewTypeError), R(24), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(Mov), R(context), R(24),
B(Mov), R(10), R(26),
B(Mov), R(4), R(27),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(26), U8(2),
B(Star), R(11),
B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(11), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_caught), R(26), U8(4),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(23),
B(Ldar), R(14),
B(Star), R(17),
B(Jump), U8(243),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(26),
B(Jump), U8(20),
B(Star), R(13),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(16),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(14),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(147),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Ldar), R(24),
B(PushContext), R(14),
B(PopContext), R(14),
B(Jump), U8(107),
B(Mov), R(10), R(25),
B(Mov), R(4), R(26),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(25), U8(2),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(Star), R(25),
B(Mov), R(2), R(26),
B(Mov), R(13), R(27),
B(Mov), R(8), R(28),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(25), U8(4),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
B(Mov), R(2), R(24),
B(Mov), R(8), R(25),
B(SuspendGenerator), R(24), U8(2),
B(Ldar), R(25),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(24), U8(1),
B(Star), R(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(24), U8(1),
B(Star), R(26),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(28),
B(Mov), R(25), R(27),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(27), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(159),
B(Ldar), R(13),
B(Star), R(17),
B(Jump), U8(130),
B(Ldar), R(25),
B(ReThrow),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Mov), R(25), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(Ldar), R(11),
B(Ldar), R(23),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(19), U8(3), I8(0),
B(Jump), U8(26),
B(PopContext), R(1),
B(Ldar), R(21),
B(SwitchOnSmiNoFeedback), U8(16), U8(3), I8(0),
B(Jump), U8(22),
B(LdaZero),
B(Star), R(5),
B(Mov), R(10), R(6),
B(Jump), U8(104),
B(PopContext), R(1),
B(Star), R(17),
B(Mov), R(22), R(18),
B(Jump), U8(92),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Mov), R(10), R(6),
B(Jump), U8(93),
B(Ldar), R(10),
B(Star), R(17),
B(Mov), R(22), R(18),
B(Jump), U8(83),
B(Ldar), R(22),
B(ReThrow),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(10),
B(Star), R(21),
B(LdaUndefined),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(6),
B(Star), R(23),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_resolve), R(21), U8(3),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(9),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(12), U8(22),
B(Star), R(8),
B(CreateCatchContext), R(21), U8(10), U8(19),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(Ldar), R(20),
B(PushContext), R(14),
B(LdaUndefined),
B(Star), R(9),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(10),
B(Star), R(21),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(11),
B(Star), R(23),
B(LdaFalse),
B(Star), R(12),
B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(24),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_internal_reject), R(21), U8(4),
B(PopContext), R(14),
B(LdaZero),
B(Star), R(5),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(17),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(18),
B(LdaSmi), I8(2),
B(Star), R(5),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(Star), R(19),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
B(Ldar), R(7),
B(Star), R(20),
B(Mov), R(8), R(21),
B(CallJSRuntime), U8(%async_function_promise_release), R(20), U8(2),
B(Ldar), R(19),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(24), U8(3), I8(0),
B(Jump), U8(25),
B(Ldar), R(6),
B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(20), U8(3), I8(0),
B(Jump), U8(24),
B(Ldar), R(18),
/* 68 S> */ B(Return),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(LdaUndefined),
B(Star), R(8),
B(Mov), R(6), R(10),
B(CallJSRuntime), U8(%promise_resolve), R(8), U8(3),
B(Ldar), R(9),
B(Star), R(20),
B(Mov), R(8), R(21),
B(Mov), R(18), R(22),
B(CallJSRuntime), U8(%promise_resolve), R(20), U8(3),
B(Ldar), R(8),
/* 68 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(18),
B(ReThrow),
B(LdaUndefined),
/* 68 S> */ B(Return),
]
constant pool: [
Smi [116],
Smi [546],
Smi [684],
FIXED_ARRAY_TYPE,
Smi [99],
Smi [404],
Smi [517],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [83],
Smi [60],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [327],
Smi [350],
Smi [265],
Smi [6],
Smi [16],
Smi [27],
Smi [14],
Smi [23],
FIXED_ARRAY_TYPE,
Smi [297],
Smi [6],
Smi [9],
Smi [26],
Smi [25],
]
handlers: [
[60, 889, 895],
[63, 838, 840],
[80, 402, 408],
[83, 354, 356],
[495, 611, 613],
[56, 691, 697],
[59, 646, 648],
[65, 309, 315],
[68, 269, 271],
[376, 467, 469],
]
---
......@@ -888,438 +745,362 @@ snippet: "
}
f();
"
frame size: 18
frame size: 30
parameter count: 1
bytecode array length: 952
bytecode array length: 742
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(16),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(15),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kAbort), R(17), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(12),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(15),
B(Mov), R(closure), R(17),
B(Mov), R(this), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(17), U8(2),
B(Star), R(2),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(5),
B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
B(StaCurrentContextSlot), U8(10),
B(Mov), R(context), R(7),
B(Mov), R(context), R(8),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_promise_create), R(17), U8(1),
B(Star), R(8),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 43 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(8),
B(Star), R(6),
B(Mov), R(context), R(23),
B(Mov), R(context), R(24),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(25),
B(LdaNamedProperty), R(25), U8(4), U8(8),
B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(10),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(10),
B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(13), U8(6), U8(4),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(6),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(6), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
B(LdaNamedProperty), R(25), U8(5), U8(4),
B(Star), R(26),
B(CallProperty0), R(26), R(25), U8(6),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(26), U8(1),
B(Star), R(4),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 43 E> */ B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kAbort), R(25), U8(1),
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(26),
B(CallProperty0), R(26), R(4), U8(12),
B(Star), R(7),
/* 40 S> */ B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(7), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(26), U8(4),
B(LdaZero),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(22),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(185),
B(Ldar), R(14),
B(Star), R(21),
B(Jump), U8(119),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(Mov), R(26), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(9), U8(16),
B(JumpIfToBooleanTrue), U8(86),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(10), U8(18),
B(StaContextSlot), R(1), U8(11), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(JumpIfToBooleanTrue), U8(43),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(Star), R(9),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(8), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(6),
B(Mov), R(9), R(3),
/* 23 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(11),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 63 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(LdaSmi), I8(10),
/* 69 E> */ B(TestEqual), R(13), U8(20),
B(JumpIfFalse), U8(6),
/* 76 S> */ B(PopContext), R(2),
B(Jump), U8(24),
/* 90 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(LdaSmi), I8(20),
/* 96 E> */ B(TestEqual), R(13), U8(21),
B(JumpIfFalse), U8(6),
/* 103 S> */ B(PopContext), R(2),
B(Jump), U8(12),
B(PopContext), R(2),
B(Mov), R(3), R(0),
/* 63 S> */ B(LdaSmi), I8(10),
/* 69 E> */ B(TestEqual), R(0), U8(20),
B(JumpIfFalse), U8(4),
/* 76 S> */ B(Jump), U8(14),
/* 90 S> */ B(LdaSmi), I8(20),
/* 96 E> */ B(TestEqual), R(0), U8(21),
B(JumpIfFalse), U8(4),
/* 103 S> */ B(Jump), U8(8),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(JumpLoop), U8(249), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Star), R(6),
B(JumpLoop), U8(168), I8(0),
B(Jump), U8(40),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(13),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(11),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(Ldar), R(24),
B(PushContext), R(14),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(13), U8(22),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(6), U8(22),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
B(PopContext), R(2),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kReThrow), R(25), U8(1),
B(PopContext), R(14),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Star), R(21),
B(Jump), U8(8),
B(Star), R(10),
B(Star), R(22),
B(LdaSmi), I8(1),
B(Star), R(9),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrict), R(12), U8(23),
B(JumpIfTrueConstant), U8(18),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(14), U8(24),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(23),
B(JumpIfTrueConstant), U8(15),
B(LdaNamedProperty), R(4), U8(12), U8(24),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(17),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(Jump), U8(254),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(27),
B(JumpIfFalse), U8(169),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(TestEqualStrict), R(6), U8(27),
B(JumpIfFalse), U8(142),
B(Ldar), R(10),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(12),
B(LdaConstant), U8(15),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Star), R(24),
B(LdaConstant), U8(13),
B(Star), R(25),
B(CallRuntime), U16(Runtime::kNewTypeError), R(24), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(Mov), R(context), R(24),
B(Mov), R(10), R(26),
B(Mov), R(4), R(27),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(26), U8(2),
B(Star), R(11),
B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(Star), R(26),
B(Mov), R(2), R(27),
B(Mov), R(11), R(28),
B(Mov), R(8), R(29),
B(CallJSRuntime), U8(%async_function_await_caught), R(26), U8(4),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(25),
B(Mov), R(8), R(26),
B(SuspendGenerator), R(25), U8(2),
B(Ldar), R(26),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(25), U8(1),
B(Star), R(26),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(25), U8(1),
B(Star), R(27),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(27),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(29),
B(Mov), R(26), R(28),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(28), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(22),
B(Ldar), R(14),
B(Star), R(17),
B(Jump), U8(234),
B(Ldar), R(26),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(26),
B(Jump), U8(20),
B(Star), R(13),
B(Star), R(25),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(12), U8(16),
B(Star), R(12),
B(CreateCatchContext), R(25), U8(10), U8(14),
B(Star), R(24),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(147),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Ldar), R(24),
B(PushContext), R(14),
B(PopContext), R(14),
B(Jump), U8(107),
B(Mov), R(10), R(25),
B(Mov), R(4), R(26),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(25), U8(2),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(Star), R(25),
B(Mov), R(2), R(26),
B(Mov), R(13), R(27),
B(Mov), R(8), R(28),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(25), U8(4),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
B(Mov), R(2), R(24),
B(Mov), R(8), R(25),
B(SuspendGenerator), R(24), U8(2),
B(Ldar), R(25),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(24), U8(1),
B(Star), R(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(24), U8(1),
B(Star), R(26),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(28),
B(Mov), R(25), R(27),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(27), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(148),
B(Ldar), R(13),
B(Star), R(17),
B(Jump), U8(121),
B(Ldar), R(25),
B(ReThrow),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Mov), R(25), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(Ldar), R(11),
B(Ldar), R(23),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(15),
B(PopContext), R(1),
B(Ldar), R(21),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(5),
B(Mov), R(10), R(6),
B(Jump), U8(93),
B(Ldar), R(10),
B(Star), R(17),
B(Mov), R(22), R(18),
B(Jump), U8(83),
B(Ldar), R(22),
B(ReThrow),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(10),
B(Star), R(21),
B(LdaUndefined),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(6),
B(Star), R(23),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_resolve), R(21), U8(3),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(9),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(12), U8(21),
B(Star), R(8),
B(CreateCatchContext), R(21), U8(10), U8(18),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(Ldar), R(20),
B(PushContext), R(14),
B(LdaUndefined),
B(Star), R(9),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(10),
B(Star), R(21),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(11),
B(Star), R(23),
B(LdaFalse),
B(Star), R(12),
B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(24),
B(Mov), R(8), R(22),
B(CallJSRuntime), U8(%promise_internal_reject), R(21), U8(4),
B(PopContext), R(14),
B(LdaZero),
B(Star), R(5),
B(Star), R(17),
B(Mov), R(8), R(18),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(17),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(18),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(Star), R(19),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
B(Ldar), R(7),
B(Star), R(20),
B(Mov), R(8), R(21),
B(CallJSRuntime), U8(%async_function_promise_release), R(20), U8(2),
B(Ldar), R(19),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(23), U8(2), I8(0),
B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(18),
/* 114 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(18),
B(ReThrow),
B(LdaUndefined),
/* 114 S> */ B(Return),
]
constant pool: [
Smi [116],
Smi [574],
Smi [712],
FIXED_ARRAY_TYPE,
Smi [99],
Smi [419],
Smi [532],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [83],
Smi [60],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [327],
Smi [350],
Smi [265],
Smi [6],
Smi [16],
Smi [14],
FIXED_ARRAY_TYPE,
Smi [286],
Smi [6],
Smi [9],
]
handlers: [
[60, 906, 912],
[63, 855, 857],
[80, 430, 436],
[83, 382, 384],
[523, 639, 641],
[56, 697, 703],
[59, 652, 654],
[65, 324, 330],
[68, 284, 286],
[391, 482, 484],
]
---
......@@ -1330,234 +1111,196 @@ snippet: "
}
f();
"
frame size: 12
frame size: 20
parameter count: 1
bytecode array length: 506
bytecode array length: 432
bytecodes: [
B(CreateFunctionContext), U8(9),
B(PushContext), R(0),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(2),
B(CallJSRuntime), U8(%async_function_promise_create), R(2), U8(1),
B(StaCurrentContextSlot), U8(12),
B(Mov), R(context), R(4),
B(Mov), R(context), R(5),
/* 31 S> */ B(CreateObjectLiteral), U8(0), U8(3), U8(1), R(6),
B(Ldar), R(6),
/* 31 E> */ B(StaCurrentContextSlot), U8(5),
B(Star), R(10),
B(CallJSRuntime), U8(%async_function_promise_create), R(10), U8(1),
B(Star), R(8),
B(Mov), R(context), R(12),
B(Mov), R(context), R(13),
/* 31 S> */ B(CreateObjectLiteral), U8(0), U8(3), U8(1), R(14),
B(Mov), R(14), R(1),
B(LdaZero),
B(StaCurrentContextSlot), U8(8),
B(Mov), R(context), R(8),
B(Mov), R(context), R(9),
B(Star), R(4),
B(Mov), R(context), R(16),
B(Mov), R(context), R(17),
/* 68 S> */ B(CreateArrayLiteral), U8(1), U8(4), U8(17),
B(Star), R(10),
B(LdaNamedProperty), R(10), U8(2), U8(5),
B(Star), R(11),
B(CallProperty0), R(11), R(10), U8(7),
B(Star), R(18),
B(LdaNamedProperty), R(18), U8(2), U8(5),
B(Star), R(19),
B(CallProperty0), R(19), R(18), U8(7),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 68 E> */ B(StaCurrentContextSlot), U8(6),
/* 59 S> */ B(LdaCurrentContextSlot), U8(6),
B(Star), R(11),
B(LdaNamedProperty), R(11), U8(3), U8(11),
B(Star), R(10),
B(CallProperty0), R(10), R(11), U8(9),
/* 59 E> */ B(StaCurrentContextSlot), U8(7),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(Star), R(2),
/* 59 S> */ B(LdaNamedProperty), R(2), U8(3), U8(11),
B(Star), R(18),
B(CallProperty0), R(18), R(2), U8(9),
B(Star), R(3),
/* 59 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(11),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(10),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(10),
B(LdaNamedProperty), R(10), U8(4), U8(13),
B(JumpIfToBooleanTrue), U8(42),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(10),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(11),
/* 58 E> */ B(LdaNamedProperty), R(11), U8(5), U8(15),
B(StaCurrentContextSlot), U8(9),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(LdaNamedProperty), R(3), U8(4), U8(13),
B(JumpIfToBooleanTrue), U8(31),
/* 58 E> */ B(LdaNamedProperty), R(3), U8(5), U8(15),
B(Star), R(5),
B(LdaSmi), I8(2),
B(StaCurrentContextSlot), U8(8),
B(LdaCurrentContextSlot), U8(9),
B(StaNamedPropertySloppy), R(10), U8(6), U8(17),
B(Star), R(4),
B(Ldar), R(5),
B(StaNamedPropertySloppy), R(1), U8(6), U8(17),
/* 53 E> */ B(StackCheck),
/* 79 S> */ B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(10),
/* 87 E> */ B(LdaNamedProperty), R(10), U8(6), U8(19),
B(Star), R(7),
/* 79 S> */ B(Nop),
/* 87 E> */ B(LdaNamedProperty), R(1), U8(6), U8(19),
B(Star), R(15),
B(LdaZero),
B(Star), R(6),
B(Jump), U8(62),
B(Jump), U8(48),
B(Star), R(10),
B(Star), R(14),
B(Jump), U8(54),
B(Jump), U8(40),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(10), U8(7), U8(8),
B(Star), R(9),
B(CreateCatchContext), R(18), U8(7), U8(8),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(9),
B(PushContext), R(1),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(10),
B(Ldar), R(17),
B(PushContext), R(9),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(10), U8(21),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(4), U8(21),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(4),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(10),
B(CallRuntime), U16(Runtime::kReThrow), R(10), U8(1),
B(PopContext), R(1),
B(Star), R(18),
B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
B(PopContext), R(9),
B(LdaSmi), I8(-1),
B(Star), R(6),
B(Star), R(14),
B(Jump), U8(8),
B(Star), R(7),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(6),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(9), U8(22),
B(JumpIfTrue), U8(126),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(9),
B(LdaNamedProperty), R(9), U8(9), U8(23),
B(StaCurrentContextSlot), U8(10),
B(LdaCurrentContextSlot), U8(10),
B(TestEqualStrict), R(4), U8(22),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(2), U8(9), U8(23),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(109),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(9), U8(26),
B(JumpIfFalse), U8(63),
B(LdaCurrentContextSlot), U8(10),
B(TestEqualStrict), R(4), U8(26),
B(JumpIfFalse), U8(61),
B(Ldar), R(6),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(9),
B(Star), R(17),
B(LdaConstant), U8(10),
B(Star), R(10),
B(CallRuntime), U16(Runtime::kNewTypeError), R(9), U8(2),
B(Star), R(18),
B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
B(Throw),
B(Mov), R(context), R(9),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(10),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(10), U8(2),
B(Mov), R(context), R(17),
B(Mov), R(6), R(18),
B(Mov), R(2), R(19),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(18), U8(2),
B(Jump), U8(20),
B(Star), R(10),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(10), U8(7), U8(11),
B(Star), R(9),
B(CreateCatchContext), R(18), U8(7), U8(11),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(9),
B(PushContext), R(1),
B(PopContext), R(1),
B(Jump), U8(37),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(9), U8(2),
B(StaCurrentContextSlot), U8(11),
B(LdaCurrentContextSlot), U8(11),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
B(Ldar), R(17),
B(PushContext), R(9),
B(PopContext), R(9),
B(Jump), U8(27),
B(Mov), R(6), R(17),
B(Mov), R(2), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(11),
B(LdaCurrentContextSlot), U8(11),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
B(Ldar), R(8),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(6),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(2),
B(Mov), R(7), R(3),
B(Jump), U8(93),
B(Ldar), R(7),
B(Star), R(10),
B(Mov), R(15), R(11),
B(Jump), U8(85),
B(Ldar), R(15),
B(ReThrow),
B(LdaUndefined),
B(Star), R(6),
B(LdaCurrentContextSlot), U8(12),
B(Star), R(7),
B(Star), R(14),
B(LdaUndefined),
B(Star), R(8),
B(CallJSRuntime), U8(%promise_resolve), R(6), U8(3),
B(LdaCurrentContextSlot), U8(12),
B(Star), R(3),
B(Star), R(16),
B(Mov), R(8), R(15),
B(CallJSRuntime), U8(%promise_resolve), R(14), U8(3),
B(LdaSmi), I8(1),
B(Star), R(2),
B(Jump), U8(66),
B(Jump), U8(52),
B(Star), R(6),
B(Star), R(10),
B(Mov), R(8), R(11),
B(Jump), U8(60),
B(Jump), U8(46),
B(Star), R(14),
B(Ldar), R(closure),
B(CreateCatchContext), R(6), U8(7), U8(14),
B(Star), R(5),
B(CreateCatchContext), R(14), U8(7), U8(14),
B(Star), R(13),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(5),
B(PushContext), R(1),
B(Ldar), R(13),
B(PushContext), R(9),
B(LdaUndefined),
B(Star), R(6),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(7),
B(Star), R(14),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(Star), R(16),
B(LdaFalse),
B(Star), R(9),
B(CallJSRuntime), U8(%promise_internal_reject), R(6), U8(4),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(PopContext), R(1),
B(Star), R(3),
B(Star), R(17),
B(Mov), R(8), R(15),
B(CallJSRuntime), U8(%promise_internal_reject), R(14), U8(4),
B(PopContext), R(9),
B(LdaSmi), I8(1),
B(Star), R(2),
B(Star), R(10),
B(Mov), R(8), R(11),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(2),
B(Star), R(10),
B(Jump), U8(8),
B(Star), R(3),
B(Star), R(11),
B(LdaSmi), I8(2),
B(Star), R(2),
B(Star), R(10),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(4),
B(Star), R(12),
B(LdaUndefined),
B(Star), R(5),
B(LdaCurrentContextSlot), U8(12),
B(Star), R(6),
B(CallJSRuntime), U8(%async_function_promise_release), R(5), U8(2),
B(Ldar), R(4),
B(Star), R(13),
B(Mov), R(8), R(14),
B(CallJSRuntime), U8(%async_function_promise_release), R(13), U8(2),
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(2),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(15), U8(3), I8(0),
B(Jump), U8(25),
B(LdaCurrentContextSlot), U8(12),
B(Star), R(6),
B(Jump), U8(24),
B(LdaUndefined),
B(Star), R(5),
B(Mov), R(3), R(7),
B(CallJSRuntime), U8(%promise_resolve), R(5), U8(3),
B(Ldar), R(6),
B(Star), R(13),
B(Mov), R(8), R(14),
B(Mov), R(11), R(15),
B(CallJSRuntime), U8(%promise_resolve), R(13), U8(3),
B(Ldar), R(8),
/* 96 S> */ B(Return),
B(Ldar), R(3),
B(Ldar), R(11),
/* 96 S> */ B(Return),
B(Ldar), R(3),
B(Ldar), R(11),
B(ReThrow),
B(LdaUndefined),
/* 96 S> */ B(Return),
......@@ -1579,14 +1322,14 @@ constant pool: [
Smi [14],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [23],
Smi [26],
Smi [22],
Smi [25],
]
handlers: [
[17, 443, 449],
[20, 391, 393],
[35, 195, 201],
[38, 147, 149],
[276, 288, 290],
[13, 371, 377],
[16, 325, 327],
[30, 157, 163],
[33, 117, 119],
[224, 234, 236],
]
......@@ -641,276 +641,221 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 15
frame size: 24
parameter count: 2
bytecode array length: 587
bytecode array length: 435
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(5),
B(PushContext), R(14),
B(ResumeGenerator), R(new_target),
B(Star), R(4),
B(Star), R(13),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79),
B(Star), R(6),
B(CallRuntime), U16(Runtime::kAbort), R(6), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CreateFunctionContext), U8(9),
B(PushContext), R(0),
B(Star), R(13),
B(CreateFunctionContext), U8(1),
B(PushContext), R(11),
B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(6),
B(Mov), R(this), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(6), U8(2),
B(StaCurrentContextSlot), U8(5),
B(Mov), R(closure), R(15),
B(Mov), R(this), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(15), U8(2),
B(Star), R(3),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(8),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(9),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(10),
B(Mov), R(context), R(17),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(10),
B(Mov), R(3), R(19),
B(Mov), R(3), R(18),
/* 11 E> */ B(SuspendGenerator), R(18), U8(0),
B(Ldar), R(19),
/* 55 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(18), U8(1),
B(Star), R(19),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(18), U8(1),
B(Star), R(20),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(20),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(20),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(7),
B(Star), R(22),
B(Mov), R(19), R(21),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(21), U8(2),
B(Star), R(16),
B(LdaZero),
B(Star), R(6),
B(JumpConstant), U8(13),
B(Ldar), R(10),
B(Star), R(15),
B(JumpConstant), U8(10),
B(Ldar), R(19),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 35 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(2), U8(3),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(5),
B(Star), R(7),
B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22),
B(LdaNamedProperty), R(22), U8(1), U8(3),
B(Star), R(23),
B(CallProperty0), R(23), R(22), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 35 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
/* 30 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(14),
B(LdaNamedProperty), R(14), U8(3), U8(9),
B(Star), R(13),
B(CallProperty0), R(13), R(14), U8(7),
/* 30 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(13), U8(1),
B(Star), R(5),
/* 30 S> */ B(LdaNamedProperty), R(5), U8(2), U8(9),
B(Star), R(22),
B(CallProperty0), R(22), R(5), U8(7),
B(Star), R(6),
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(4), U8(11),
B(JumpIfToBooleanTrue), U8(73),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(13),
B(StaContextSlot), R(1), U8(10), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(3), U8(11),
B(JumpIfToBooleanTrue), U8(28),
B(LdaNamedProperty), R(6), U8(4), U8(13),
B(Star), R(8),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(9), U8(0),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(7),
B(Mov), R(8), R(4),
/* 21 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(6),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(StaCurrentContextSlot), U8(4),
B(Ldar), R(closure),
B(CreateBlockContext), U8(7),
B(PushContext), R(3),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 50 S> */ B(LdaImmutableContextSlot), R(3), U8(4), U8(0),
/* 50 E> */ B(StaCurrentContextSlot), U8(4),
B(PopContext), R(3),
B(PopContext), R(2),
B(Mov), R(4), R(1),
/* 50 S> */ B(Mov), R(1), R(0),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(120), I8(0),
B(Jump), U8(44),
B(Star), R(13),
B(Star), R(7),
B(JumpLoop), U8(53), I8(0),
B(Jump), U8(36),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(8), U8(9),
B(PushContext), R(2),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(13),
/* 50 E> */ B(CreateCatchContext), R(22), U8(5), U8(6),
B(PushContext), R(12),
B(Star), R(21),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(13), U8(15),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(7), U8(15),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
B(PopContext), R(2),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
B(PopContext), R(12),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Star), R(18),
B(Jump), U8(7),
B(Star), R(10),
B(Star), R(19),
B(LdaZero),
B(Star), R(9),
B(Star), R(18),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(12),
B(Star), R(20),
B(LdaZero),
B(TestEqualStrict), R(12), U8(16),
B(JumpIfTrue), U8(150),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(10), U8(17),
B(StaContextSlot), R(1), U8(11), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(5), U8(7), U8(17),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(127),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(12),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(20),
B(JumpIfFalse), U8(69),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(7), U8(20),
B(JumpIfFalse), U8(61),
B(Ldar), R(9),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(12),
B(LdaConstant), U8(11),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Star), R(21),
B(LdaConstant), U8(8),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(Mov), R(context), R(21),
B(Mov), R(9), R(22),
B(Mov), R(5), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Jump), U8(20),
B(Star), R(13),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(8), U8(12),
B(Star), R(12),
B(CreateCatchContext), R(22), U8(5), U8(9),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(47),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(Ldar), R(21),
B(PushContext), R(12),
B(PopContext), R(12),
B(Jump), U8(27),
B(Mov), R(9), R(21),
B(Mov), R(5), R(22),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(Ldar), R(11),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfFalse), U8(13),
B(PopContext), R(1),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfFalse), U8(11),
B(LdaSmi), I8(1),
B(Star), R(6),
B(Mov), R(10), R(7),
B(Jump), U8(33),
B(PopContext), R(1),
B(Star), R(15),
B(Mov), R(19), R(16),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(9),
B(Star), R(18),
B(LdaTrue),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(7),
B(Star), R(19),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(16),
B(LdaZero),
B(Star), R(6),
B(Star), R(15),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(6),
B(Star), R(15),
B(Jump), U8(8),
B(Star), R(7),
B(Star), R(16),
B(LdaSmi), I8(1),
B(Star), R(6),
B(Star), R(15),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Ldar), R(8),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(3), U8(1),
B(Ldar), R(17),
B(SetPendingMessage),
B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(7),
B(Ldar), R(16),
/* 55 S> */ B(Return),
B(Ldar), R(7),
B(Ldar), R(16),
B(ReThrow),
B(LdaUndefined),
/* 55 S> */ B(Return),
]
constant pool: [
Smi [56],
FIXED_ARRAY_TYPE,
Smi [54],
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [444],
Smi [298],
Smi [6],
Smi [9],
]
handlers: [
[55, 544, 550],
[134, 331, 337],
[137, 287, 289],
[423, 439, 441],
[55, 396, 402],
[121, 239, 245],
[124, 203, 205],
[305, 315, 317],
]
---
......@@ -920,319 +865,268 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 17
frame size: 26
parameter count: 2
bytecode array length: 681
bytecode array length: 535
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(13),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(9),
B(PushContext), R(0),
B(Star), R(12),
B(CreateFunctionContext), U8(1),
B(PushContext), R(10),
B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(5),
B(Mov), R(closure), R(14),
B(Mov), R(this), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2),
B(Star), R(2),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(7),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(9),
B(Mov), R(context), R(16),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
B(Mov), R(2), R(18),
B(Mov), R(2), R(17),
/* 11 E> */ B(SuspendGenerator), R(17), U8(0),
B(Ldar), R(18),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(17), U8(1),
B(Star), R(18),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(17), U8(1),
B(Star), R(19),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(19),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(19),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(Star), R(21),
B(Mov), R(18), R(20),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(20), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(16),
B(Ldar), R(9),
B(Star), R(14),
B(JumpConstant), U8(14),
B(Ldar), R(18),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Mov), R(context), R(10),
B(Mov), R(context), R(11),
/* 35 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(3), U8(3),
B(Star), R(13),
B(CallProperty0), R(13), R(12), U8(5),
B(Star), R(6),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21),
B(LdaNamedProperty), R(21), U8(2), U8(3),
B(Star), R(22),
B(CallProperty0), R(22), R(21), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 35 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(Star), R(4),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 35 E> */ B(TestEqualStrictNoFeedback), R(12),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
/* 30 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(9),
B(Star), R(12),
B(CallProperty0), R(12), R(13), U8(7),
/* 30 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
/* 30 S> */ B(LdaNamedProperty), R(4), U8(4), U8(9),
B(Star), R(21),
B(CallProperty0), R(21), R(4), U8(7),
B(Star), R(5),
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(6), U8(11),
B(JumpIfToBooleanTrue), U8(132),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(7), U8(13),
B(StaContextSlot), R(1), U8(10), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(5), U8(11),
B(JumpIfToBooleanTrue), U8(95),
B(LdaNamedProperty), R(5), U8(6), U8(13),
B(Star), R(7),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(9), U8(0),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(6),
B(Mov), R(7), R(3),
/* 21 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(8),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(12),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(LdaFalse),
B(Star), R(14),
/* 46 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(Mov), R(3), R(0),
/* 40 S> */ B(LdaFalse),
B(Star), R(23),
B(Mov), R(3), R(22),
/* 46 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(22),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(12), U8(0),
B(Ldar), R(13),
B(Mov), R(2), R(21),
B(SuspendGenerator), R(21), U8(0),
B(Ldar), R(22),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(21), U8(1),
B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(21), U8(1),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(2),
B(Star), R(9),
B(Star), R(25),
B(Mov), R(22), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(8),
B(Jump), U8(71),
B(Ldar), R(13),
B(Star), R(17),
B(Jump), U8(59),
B(Ldar), R(22),
/* 40 E> */ B(Throw),
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(200), I8(0),
B(Jump), U8(44),
B(Star), R(12),
B(Star), R(6),
B(JumpLoop), U8(141), I8(0),
B(Jump), U8(36),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(9), U8(10),
B(PushContext), R(2),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(12),
B(CreateCatchContext), R(21), U8(7), U8(8),
B(PushContext), R(11),
B(Star), R(20),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(12), U8(15),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(6), U8(15),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
B(PopContext), R(2),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kReThrow), R(21), U8(1),
B(PopContext), R(11),
B(LdaSmi), I8(-1),
B(Star), R(8),
B(Star), R(17),
B(Jump), U8(8),
B(Star), R(9),
B(Star), R(18),
B(LdaSmi), I8(1),
B(Star), R(8),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(10),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(11),
B(Star), R(19),
B(LdaZero),
B(TestEqualStrict), R(11), U8(16),
B(JumpIfTrue), U8(150),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(11),
B(LdaNamedProperty), R(11), U8(11), U8(17),
B(StaContextSlot), R(1), U8(11), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(6), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(4), U8(9), U8(17),
B(Star), R(8),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(127),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(11),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(11), U8(20),
B(JumpIfFalse), U8(69),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(6), U8(20),
B(JumpIfFalse), U8(61),
B(Ldar), R(8),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(11),
B(LdaConstant), U8(12),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
B(Star), R(20),
B(LdaConstant), U8(10),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw),
B(Mov), R(context), R(11),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(Mov), R(context), R(20),
B(Mov), R(8), R(21),
B(Mov), R(4), R(22),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
B(Jump), U8(20),
B(Star), R(12),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(9), U8(13),
B(Star), R(11),
B(CreateCatchContext), R(21), U8(7), U8(11),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(11),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(47),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
B(Ldar), R(20),
B(PushContext), R(11),
B(PopContext), R(11),
B(Jump), U8(27),
B(Mov), R(8), R(20),
B(Mov), R(4), R(21),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
B(Ldar), R(10),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
B(Ldar), R(19),
B(SetPendingMessage),
B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(23),
B(PopContext), R(1),
B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
B(Jump), U8(19),
B(LdaZero),
B(Star), R(5),
B(Mov), R(9), R(6),
B(Jump), U8(44),
B(PopContext), R(1),
B(Star), R(14),
B(Mov), R(18), R(15),
B(Jump), U8(40),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Mov), R(9), R(6),
B(Jump), U8(33),
B(PopContext), R(1),
B(Star), R(14),
B(Mov), R(18), R(15),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(8),
B(Star), R(17),
B(LdaTrue),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6),
B(Star), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(5),
B(Star), R(14),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(14),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(8), U8(1),
B(Ldar), R(7),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(15),
/* 49 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(15),
B(ReThrow),
B(LdaUndefined),
/* 49 S> */ B(Return),
]
constant pool: [
Smi [56],
Smi [150],
FIXED_ARRAY_TYPE,
Smi [54],
Smi [133],
SYMBOL_TYPE,
Smi [142],
Smi [89],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [16],
Smi [538],
Smi [14],
Smi [398],
Smi [6],
Smi [9],
]
handlers: [
[55, 638, 644],
[134, 411, 417],
[137, 367, 369],
[504, 520, 522],
[55, 496, 502],
[121, 327, 333],
[124, 291, 293],
[394, 404, 406],
]
---
......@@ -1242,249 +1136,194 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 14
frame size: 24
parameter count: 2
bytecode array length: 550
bytecode array length: 397
bytecodes: [
B(CreateFunctionContext), U8(10),
B(PushContext), R(0),
B(CreateFunctionContext), U8(1),
B(PushContext), R(12),
B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(4),
B(CallJSRuntime), U8(%async_function_promise_create), R(4), U8(1),
B(StaCurrentContextSlot), U8(13),
B(Mov), R(context), R(6),
B(Mov), R(context), R(7),
B(Ldar), R(closure),
B(CreateBlockContext), U8(0),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(14),
B(CallJSRuntime), U8(%async_function_promise_create), R(14), U8(1),
B(Star), R(11),
B(Mov), R(context), R(16),
B(Mov), R(context), R(17),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Mov), R(context), R(10),
B(Mov), R(context), R(11),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(1), U8(3),
B(Star), R(13),
B(CallProperty0), R(13), R(12), U8(5),
B(Star), R(7),
B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22),
B(LdaNamedProperty), R(22), U8(0), U8(3),
B(Star), R(23),
B(CallProperty0), R(23), R(22), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
/* 35 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(2), U8(9),
B(Star), R(12),
B(CallProperty0), R(12), R(13), U8(7),
/* 35 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(Star), R(5),
/* 35 S> */ B(LdaNamedProperty), R(5), U8(1), U8(9),
B(Star), R(22),
B(CallProperty0), R(22), R(5), U8(7),
B(Star), R(6),
/* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(3), U8(11),
B(JumpIfToBooleanTrue), U8(73),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(4), U8(13),
B(StaContextSlot), R(1), U8(10), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(2), U8(11),
B(JumpIfToBooleanTrue), U8(28),
B(LdaNamedProperty), R(6), U8(3), U8(13),
B(Star), R(8),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(9), U8(0),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(7),
B(Mov), R(8), R(4),
/* 26 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(5),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(StaCurrentContextSlot), U8(4),
B(Ldar), R(closure),
B(CreateBlockContext), U8(6),
B(PushContext), R(3),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 55 S> */ B(LdaImmutableContextSlot), R(3), U8(4), U8(0),
/* 55 E> */ B(StaCurrentContextSlot), U8(4),
B(PopContext), R(3),
B(PopContext), R(2),
B(Mov), R(4), R(1),
/* 55 S> */ B(Mov), R(1), R(0),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(120), I8(0),
B(Jump), U8(48),
B(Star), R(12),
B(Star), R(7),
B(JumpLoop), U8(53), I8(0),
B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(7), U8(8),
B(Star), R(11),
/* 55 E> */ B(CreateCatchContext), R(22), U8(4), U8(5),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(11),
B(PushContext), R(2),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(12),
B(SetPendingMessage),
B(Ldar), R(21),
B(PushContext), R(13),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(12), U8(15),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(7), U8(15),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
B(PopContext), R(2),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
B(PopContext), R(13),
B(LdaSmi), I8(-1),
B(Star), R(8),
B(Star), R(18),
B(Jump), U8(7),
B(Star), R(9),
B(Star), R(19),
B(LdaZero),
B(Star), R(8),
B(Star), R(18),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(10),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(11),
B(Star), R(20),
B(LdaZero),
B(TestEqualStrict), R(11), U8(16),
B(JumpIfTrue), U8(150),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(11),
B(LdaNamedProperty), R(11), U8(9), U8(17),
B(StaContextSlot), R(1), U8(11), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(5), U8(6), U8(17),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(127),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(11),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(11), U8(20),
B(JumpIfFalse), U8(69),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(TestEqualStrict), R(7), U8(20),
B(JumpIfFalse), U8(61),
B(Ldar), R(9),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(11),
B(LdaConstant), U8(10),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
B(Star), R(21),
B(LdaConstant), U8(7),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
B(Mov), R(context), R(11),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(Mov), R(context), R(21),
B(Mov), R(9), R(22),
B(Mov), R(5), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Jump), U8(20),
B(Star), R(12),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(7), U8(11),
B(Star), R(11),
B(CreateCatchContext), R(22), U8(4), U8(8),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(11),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(47),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
B(StaContextSlot), R(1), U8(12), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
B(Ldar), R(21),
B(PushContext), R(13),
B(PopContext), R(13),
B(Jump), U8(27),
B(Mov), R(9), R(21),
B(Mov), R(5), R(22),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
B(Ldar), R(10),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(8),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfFalse), U8(5),
B(Ldar), R(9),
B(Ldar), R(19),
B(ReThrow),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(13),
B(Star), R(9),
B(Star), R(18),
B(LdaUndefined),
B(Star), R(10),
B(CallJSRuntime), U8(%promise_resolve), R(8), U8(3),
B(LdaCurrentContextSlot), U8(13),
B(Star), R(5),
B(Star), R(20),
B(Mov), R(11), R(19),
B(CallJSRuntime), U8(%promise_resolve), R(18), U8(3),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(8),
B(Star), R(14),
B(Mov), R(11), R(15),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(8), U8(7), U8(12),
B(Star), R(7),
B(CreateCatchContext), R(18), U8(4), U8(9),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(7),
B(PushContext), R(1),
B(Ldar), R(17),
B(PushContext), R(13),
B(LdaUndefined),
B(Star), R(8),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(9),
B(Star), R(18),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(10),
B(Star), R(20),
B(LdaFalse),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_internal_reject), R(8), U8(4),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(PopContext), R(1),
B(Star), R(5),
B(Star), R(21),
B(Mov), R(11), R(19),
B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
B(PopContext), R(13),
B(LdaZero),
B(Star), R(4),
B(Star), R(14),
B(Mov), R(11), R(15),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(4),
B(Star), R(14),
B(Jump), U8(8),
B(Star), R(5),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(4),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(6),
B(Star), R(16),
B(LdaUndefined),
B(Star), R(7),
B(LdaCurrentContextSlot), U8(13),
B(Star), R(8),
B(CallJSRuntime), U8(%async_function_promise_release), R(7), U8(2),
B(Ldar), R(6),
B(Star), R(17),
B(Mov), R(11), R(18),
B(CallJSRuntime), U8(%async_function_promise_release), R(17), U8(2),
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
B(Ldar), R(15),
/* 60 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(15),
B(ReThrow),
B(LdaUndefined),
/* 60 S> */ B(Return),
]
constant pool: [
FIXED_ARRAY_TYPE,
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
......@@ -1495,11 +1334,11 @@ constant pool: [
Smi [9],
]
handlers: [
[21, 504, 510],
[24, 453, 455],
[41, 242, 248],
[44, 194, 196],
[334, 350, 352],
[21, 352, 358],
[24, 307, 309],
[30, 152, 158],
[33, 112, 114],
[218, 228, 230],
]
---
......@@ -1509,329 +1348,275 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 18
frame size: 29
parameter count: 2
bytecode array length: 710
bytecode array length: 550
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(15),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(14),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(16),
B(CallRuntime), U16(Runtime::kAbort), R(16), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(11),
B(PushContext), R(0),
B(Star), R(14),
B(CreateFunctionContext), U8(1),
B(PushContext), R(12),
B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(5),
B(Mov), R(closure), R(16),
B(Mov), R(this), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(16), U8(2),
B(Star), R(2),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(5),
B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
B(StaCurrentContextSlot), U8(7),
B(Mov), R(context), R(7),
B(Mov), R(context), R(8),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_promise_create), R(16), U8(1),
B(Star), R(4),
B(Mov), R(context), R(18),
B(Mov), R(context), R(19),
B(LdaZero),
B(StaContextSlot), R(1), U8(11), U8(0),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(2), U8(3),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(5),
B(Star), R(8),
B(Mov), R(context), R(22),
B(Mov), R(context), R(23),
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(24),
B(LdaNamedProperty), R(24), U8(1), U8(3),
B(Star), R(25),
B(CallProperty0), R(25), R(24), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 40 E> */ B(StaContextSlot), R(1), U8(9), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(0),
B(Star), R(6),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 40 E> */ B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 35 S> */ B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(14),
B(LdaNamedProperty), R(14), U8(4), U8(9),
B(Star), R(13),
B(CallProperty0), R(13), R(14), U8(7),
/* 35 E> */ B(StaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(13), U8(1),
B(Star), R(24),
B(CallRuntime), U16(Runtime::kAbort), R(24), U8(1),
/* 35 S> */ B(LdaNamedProperty), R(6), U8(3), U8(9),
B(Star), R(24),
B(CallProperty0), R(24), R(6), U8(7),
B(Star), R(7),
/* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(11),
B(JumpIfToBooleanTrue), U8(155),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(6), U8(13),
B(StaContextSlot), R(1), U8(12), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(LdaNamedProperty), R(7), U8(4), U8(11),
B(JumpIfToBooleanTrue), U8(105),
B(LdaNamedProperty), R(7), U8(5), U8(13),
B(Star), R(9),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(11), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(8),
B(Mov), R(9), R(5),
/* 26 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(7),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 45 S> */ B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(13),
/* 51 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Mov), R(5), R(0),
/* 45 S> */ B(Nop),
/* 51 S> */ B(Mov), R(5), R(3),
/* 45 S> */ B(LdaUndefined),
B(Star), R(14),
B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(16),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(14),
B(Star), R(25),
B(Mov), R(2), R(26),
B(Mov), R(5), R(27),
B(Mov), R(4), R(28),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(25), U8(4),
B(LdaZero),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
B(Mov), R(2), R(24),
B(Mov), R(4), R(25),
B(SuspendGenerator), R(24), U8(2),
B(Ldar), R(25),
/* 54 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(24), U8(1),
B(Star), R(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(24), U8(1),
B(Star), R(26),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(26),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(2),
B(Star), R(10),
B(Star), R(28),
B(Mov), R(25), R(27),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(27), U8(2),
B(Star), R(21),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(75),
B(Ldar), R(14),
B(Star), R(20),
B(Jump), U8(63),
B(Ldar), R(25),
B(ReThrow),
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(11), U8(0),
B(JumpLoop), U8(223), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Star), R(8),
B(JumpLoop), U8(151), I8(0),
B(Jump), U8(40),
B(Star), R(24),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(8), U8(9),
B(Star), R(12),
B(CreateCatchContext), R(24), U8(6), U8(7),
B(Star), R(23),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(13),
B(Ldar), R(23),
B(PushContext), R(13),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(13), U8(15),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(8), U8(15),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(11), U8(0),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
B(PopContext), R(2),
B(Star), R(24),
B(CallRuntime), U16(Runtime::kReThrow), R(24), U8(1),
B(PopContext), R(13),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Star), R(20),
B(Jump), U8(8),
B(Star), R(10),
B(Star), R(21),
B(LdaSmi), I8(1),
B(Star), R(9),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(12),
B(Star), R(22),
B(LdaZero),
B(TestEqualStrict), R(12), U8(16),
B(JumpIfTrue), U8(150),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(10), U8(17),
B(StaContextSlot), R(1), U8(13), U8(0),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(TestEqualStrict), R(8), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(6), U8(8), U8(17),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(127),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(12),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(20),
B(JumpIfFalse), U8(69),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(TestEqualStrict), R(8), U8(20),
B(JumpIfFalse), U8(61),
B(Ldar), R(10),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(12),
B(LdaConstant), U8(11),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Star), R(23),
B(LdaConstant), U8(9),
B(Star), R(24),
B(CallRuntime), U16(Runtime::kNewTypeError), R(23), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(Mov), R(context), R(23),
B(Mov), R(10), R(24),
B(Mov), R(6), R(25),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(24), U8(2),
B(Jump), U8(20),
B(Star), R(13),
B(Star), R(24),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(8), U8(12),
B(Star), R(12),
B(CreateCatchContext), R(24), U8(6), U8(10),
B(Star), R(23),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(47),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(Ldar), R(23),
B(PushContext), R(13),
B(PopContext), R(13),
B(Jump), U8(27),
B(Mov), R(10), R(23),
B(Mov), R(6), R(24),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(Ldar), R(11),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
B(Ldar), R(22),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(15),
B(PopContext), R(1),
B(Ldar), R(20),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(5),
B(Mov), R(10), R(6),
B(Jump), U8(93),
B(Ldar), R(10),
B(Star), R(16),
B(Mov), R(21), R(17),
B(Jump), U8(83),
B(Ldar), R(21),
B(ReThrow),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(10),
B(Star), R(20),
B(LdaUndefined),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(6),
B(Star), R(22),
B(Mov), R(4), R(21),
B(CallJSRuntime), U8(%promise_resolve), R(20), U8(3),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(9),
B(Star), R(16),
B(Mov), R(4), R(17),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(20),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(8), U8(15),
B(Star), R(8),
B(CreateCatchContext), R(20), U8(6), U8(13),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(Ldar), R(19),
B(PushContext), R(13),
B(LdaUndefined),
B(Star), R(9),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(10),
B(Star), R(20),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(11),
B(Star), R(22),
B(LdaFalse),
B(Star), R(12),
B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(23),
B(Mov), R(4), R(21),
B(CallJSRuntime), U8(%promise_internal_reject), R(20), U8(4),
B(PopContext), R(13),
B(LdaZero),
B(Star), R(5),
B(Star), R(16),
B(Mov), R(4), R(17),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(16),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(17),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(16),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(Star), R(18),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
B(Ldar), R(7),
B(Star), R(19),
B(Mov), R(4), R(20),
B(CallJSRuntime), U8(%async_function_promise_release), R(19), U8(2),
B(Ldar), R(18),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(16),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(17),
/* 54 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(17),
B(ReThrow),
B(LdaUndefined),
/* 54 S> */ B(Return),
]
constant pool: [
Smi [100],
FIXED_ARRAY_TYPE,
Smi [85],
SYMBOL_TYPE,
Smi [165],
Smi [99],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [16],
Smi [14],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[64, 664, 670],
[67, 613, 615],
[84, 388, 394],
[87, 340, 342],
[481, 497, 499],
[64, 505, 511],
[67, 460, 462],
[73, 293, 299],
[76, 253, 255],
[360, 370, 372],
]
......@@ -13,7 +13,7 @@ snippet: "
"
frame size: 11
parameter count: 1
bytecode array length: 173
bytecode array length: 163
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
......@@ -27,19 +27,15 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CreateFunctionContext), U8(1),
B(PushContext), R(0),
B(Mov), R(closure), R(3),
B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(0),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(5),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaZero),
B(Mov), R(0), R(7),
B(Mov), R(0), R(6),
/* 11 E> */ B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 16 S> */ B(Return),
......@@ -83,9 +79,7 @@ bytecodes: [
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(5),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(5),
B(SetPendingMessage),
B(Ldar), R(3),
......@@ -99,12 +93,12 @@ bytecodes: [
/* 16 S> */ B(Return),
]
constant pool: [
Smi [52],
Smi [46],
Smi [6],
Smi [9],
]
handlers: [
[51, 130, 136],
[47, 124, 130],
]
---
......@@ -114,7 +108,7 @@ snippet: "
"
frame size: 11
parameter count: 1
bytecode array length: 245
bytecode array length: 234
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
......@@ -128,19 +122,15 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CreateFunctionContext), U8(1),
B(PushContext), R(0),
B(Mov), R(closure), R(3),
B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(0),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(5),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaZero),
B(Mov), R(0), R(7),
B(Mov), R(0), R(6),
/* 11 E> */ B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 25 S> */ B(Return),
......@@ -163,18 +153,17 @@ bytecodes: [
B(Star), R(4),
B(LdaZero),
B(Star), R(3),
B(Jump), U8(106),
B(Jump), U8(105),
B(Ldar), R(7),
/* 11 E> */ B(Throw),
/* 16 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(LdaSmi), I8(42),
/* 16 S> */ B(LdaSmi), I8(42),
B(Star), R(7),
B(LdaFalse),
B(Star), R(8),
/* 16 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(LdaSmi), I8(1),
B(Mov), R(0), R(6),
B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 25 S> */ B(Return),
......@@ -218,9 +207,7 @@ bytecodes: [
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(5),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(5),
B(SetPendingMessage),
B(Ldar), R(3),
......@@ -234,13 +221,13 @@ bytecodes: [
/* 25 S> */ B(Return),
]
constant pool: [
Smi [52],
Smi [124],
Smi [46],
Smi [117],
Smi [6],
Smi [9],
]
handlers: [
[51, 202, 208],
[47, 195, 201],
]
---
......@@ -248,318 +235,265 @@ snippet: "
function* f() { for (let x of [42]) yield x }
f();
"
frame size: 17
frame size: 25
parameter count: 1
bytecode array length: 677
bytecode array length: 529
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(12),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(11),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(8),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(11),
B(Mov), R(closure), R(13),
B(Mov), R(this), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
B(Star), R(2),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(Mov), R(context), R(15),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
B(Mov), R(2), R(17),
B(Mov), R(2), R(16),
/* 11 E> */ B(SuspendGenerator), R(16), U8(0),
B(Ldar), R(17),
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(16), U8(1),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(16), U8(1),
B(Star), R(18),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(Star), R(20),
B(Mov), R(17), R(19),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(19), U8(2),
B(Star), R(14),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(17),
B(Ldar), R(9),
B(Star), R(13),
B(JumpConstant), U8(15),
B(Ldar), R(17),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Mov), R(context), R(10),
B(Mov), R(context), R(11),
/* 30 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(4), U8(4),
B(Star), R(13),
B(CallProperty0), R(13), R(12), U8(6),
B(Star), R(6),
B(Mov), R(context), R(18),
B(Mov), R(context), R(19),
/* 30 S> */ B(CreateArrayLiteral), U8(2), U8(3), U8(17),
B(Star), R(20),
B(LdaNamedProperty), R(20), U8(3), U8(4),
B(Star), R(21),
B(CallProperty0), R(21), R(20), U8(6),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 30 E> */ B(StaContextSlot), R(1), U8(6), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(Star), R(4),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 30 E> */ B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
/* 25 S> */ B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(6), U8(10),
B(Star), R(12),
B(CallProperty0), R(12), R(13), U8(8),
/* 25 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kAbort), R(20), U8(1),
/* 25 S> */ B(LdaNamedProperty), R(4), U8(5), U8(10),
B(Star), R(20),
B(CallProperty0), R(20), R(4), U8(8),
B(Star), R(5),
/* 25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(7), U8(12),
B(JumpIfToBooleanTrue), U8(132),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(8), U8(14),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(6), U8(12),
B(JumpIfToBooleanTrue), U8(95),
B(LdaNamedProperty), R(5), U8(7), U8(14),
B(Star), R(7),
B(LdaSmi), I8(2),
B(StaContextSlot), R(1), U8(8), U8(0),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(6),
B(Mov), R(7), R(3),
/* 16 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(9),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 36 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(LdaFalse),
B(Star), R(14),
/* 42 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(Mov), R(3), R(0),
/* 36 S> */ B(LdaFalse),
B(Star), R(22),
B(Mov), R(3), R(21),
/* 42 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(21), U8(2),
B(Star), R(21),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(12), U8(0),
B(Ldar), R(13),
B(Mov), R(2), R(20),
B(SuspendGenerator), R(20), U8(0),
B(Ldar), R(21),
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(20), U8(1),
B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(20), U8(1),
B(Star), R(22),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(22),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(22),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(2),
B(Star), R(9),
B(Star), R(24),
B(Mov), R(21), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(17),
B(LdaZero),
B(Star), R(8),
B(Jump), U8(71),
B(Ldar), R(13),
B(Star), R(16),
B(Jump), U8(59),
B(Ldar), R(21),
/* 36 E> */ B(Throw),
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(JumpLoop), U8(200), I8(0),
B(Jump), U8(44),
B(Star), R(12),
B(Star), R(6),
B(JumpLoop), U8(141), I8(0),
B(Jump), U8(36),
B(Star), R(20),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(10), U8(11),
B(PushContext), R(2),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(CreateCatchContext), R(20), U8(8), U8(9),
B(PushContext), R(10),
B(Star), R(19),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(12), U8(16),
B(JumpIfFalse), U8(8),
B(TestEqualStrict), R(6), U8(16),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
B(PopContext), R(2),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kReThrow), R(20), U8(1),
B(PopContext), R(10),
B(LdaSmi), I8(-1),
B(Star), R(8),
B(Star), R(16),
B(Jump), U8(8),
B(Star), R(9),
B(Star), R(17),
B(LdaSmi), I8(1),
B(Star), R(8),
B(Star), R(16),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(10),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(11),
B(Star), R(18),
B(LdaZero),
B(TestEqualStrict), R(11), U8(17),
B(JumpIfTrue), U8(150),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(11),
B(LdaNamedProperty), R(11), U8(12), U8(18),
B(StaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(TestEqualStrict), R(6), U8(17),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(4), U8(10), U8(18),
B(Star), R(8),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(127),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(11),
B(Jump), U8(93),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(11), U8(21),
B(JumpIfFalse), U8(69),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(TestEqualStrict), R(6), U8(21),
B(JumpIfFalse), U8(61),
B(Ldar), R(8),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(11),
B(LdaConstant), U8(13),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
B(Star), R(19),
B(LdaConstant), U8(11),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
B(Throw),
B(Mov), R(context), R(11),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(Mov), R(context), R(19),
B(Mov), R(8), R(20),
B(Mov), R(4), R(21),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
B(Jump), U8(20),
B(Star), R(12),
B(Star), R(20),
B(Ldar), R(closure),
B(CreateCatchContext), R(12), U8(10), U8(14),
B(Star), R(11),
B(CreateCatchContext), R(20), U8(8), U8(12),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(11),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(47),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
B(StaContextSlot), R(1), U8(11), U8(0),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
B(Ldar), R(19),
B(PushContext), R(10),
B(PopContext), R(10),
B(Jump), U8(27),
B(Mov), R(8), R(19),
B(Mov), R(4), R(20),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(19), U8(2),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(13),
B(LdaContextSlot), R(1), U8(11), U8(0),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
B(Ldar), R(10),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
B(Ldar), R(18),
B(SetPendingMessage),
B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(23),
B(PopContext), R(1),
B(Ldar), R(16),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(19),
B(LdaZero),
B(Star), R(5),
B(Mov), R(9), R(6),
B(Jump), U8(44),
B(PopContext), R(1),
B(Star), R(13),
B(Mov), R(17), R(14),
B(Jump), U8(40),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Mov), R(9), R(6),
B(Jump), U8(33),
B(PopContext), R(1),
B(Star), R(13),
B(Mov), R(17), R(14),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(8),
B(Star), R(16),
B(LdaTrue),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(14),
B(LdaZero),
B(Star), R(5),
B(Star), R(13),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(13),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(14),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(13),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(8), U8(1),
B(Ldar), R(7),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(15),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(18), U8(2), I8(0),
B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(14),
/* 44 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(14),
B(ReThrow),
B(LdaUndefined),
/* 44 S> */ B(Return),
]
constant pool: [
Smi [52],
Smi [146],
FIXED_ARRAY_TYPE,
Smi [46],
Smi [127],
TUPLE2_TYPE,
SYMBOL_TYPE,
Smi [142],
Smi [89],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [16],
Smi [538],
Smi [14],
Smi [400],
Smi [6],
Smi [9],
]
handlers: [
[51, 634, 640],
[130, 407, 413],
[133, 363, 365],
[500, 516, 518],
[47, 490, 496],
[113, 321, 327],
[116, 285, 287],
[388, 398, 400],
]
---
......@@ -568,332 +502,269 @@ snippet: "
function* f() { yield* g() }
f();
"
frame size: 12
frame size: 20
parameter count: 1
bytecode array length: 679
bytecode array length: 573
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(3),
B(PushContext), R(11),
B(ResumeGenerator), R(new_target),
B(Star), R(2),
B(Star), R(10),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79),
B(Star), R(4),
B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(CreateFunctionContext), U8(9),
B(PushContext), R(0),
B(Mov), R(closure), R(4),
B(Mov), R(this), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(10),
B(Mov), R(closure), R(12),
B(Mov), R(this), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2),
B(Star), R(0),
/* 38 E> */ B(StackCheck),
B(Mov), R(context), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(Mov), R(context), R(14),
B(LdaZero),
/* 38 E> */ B(SuspendGenerator), R(7), U8(0),
B(Ldar), R(8),
B(Mov), R(0), R(16),
B(Mov), R(0), R(15),
/* 38 E> */ B(SuspendGenerator), R(15), U8(0),
B(Ldar), R(16),
/* 54 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(15), U8(1),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(15), U8(1),
B(Star), R(17),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(11),
B(Mov), R(8), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
B(Star), R(5),
B(Star), R(19),
B(Mov), R(16), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(4),
B(JumpConstant), U8(15),
B(Ldar), R(8),
B(Star), R(12),
B(JumpConstant), U8(13),
B(Ldar), R(16),
/* 38 E> */ B(Throw),
/* 43 S> */ B(LdaUndefined),
B(StaCurrentContextSlot), U8(5),
B(Star), R(1),
B(LdaZero),
B(StaCurrentContextSlot), U8(6),
B(Star), R(2),
B(LdaUndefined),
B(StaCurrentContextSlot), U8(7),
B(Star), R(3),
B(LdaGlobal), U8(2), U8(5),
B(Star), R(9),
/* 50 E> */ B(CallUndefinedReceiver0), R(9), U8(3),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(3), U8(7),
B(Star), R(8),
B(CallProperty0), R(8), R(7), U8(9),
B(Star), R(17),
/* 50 E> */ B(CallUndefinedReceiver0), R(17), U8(3),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(3), U8(7),
B(Star), R(16),
B(CallProperty0), R(16), R(15), U8(9),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(StaCurrentContextSlot), U8(8),
B(Ldar), R(2),
B(Star), R(4),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(2),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(7),
B(CallRuntime), U16(Runtime::kAbort), R(7), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
B(StackCheck),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrict), R(7), U8(15),
B(TestEqualStrict), R(2), U8(15),
B(Mov), R(2), R(15),
B(JumpIfTrue), U8(18),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(7), U8(19),
B(JumpIfTrue), U8(55),
B(TestEqualStrict), R(15), U8(19),
B(JumpIfTrue), U8(39),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(28),
B(JumpIfTrue), U8(122),
B(JumpConstant), U8(11),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(LdaNamedProperty), R(9), U8(5), U8(13),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(10),
B(CallProperty1), R(8), R(9), R(10), U8(11),
B(StaCurrentContextSlot), U8(7),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
B(TestEqualStrict), R(15), U8(28),
B(JumpIfTrue), U8(88),
B(Jump), U8(246),
B(LdaNamedProperty), R(4), U8(5), U8(13),
B(Star), R(16),
B(CallProperty1), R(16), R(4), R(1), U8(11),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(11),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
B(JumpConstant), U8(12),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(8),
B(LdaNamedProperty), R(8), U8(6), U8(16),
B(StaCurrentContextSlot), U8(7),
B(LdaCurrentContextSlot), U8(7),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(218),
B(LdaNamedProperty), R(4), U8(6), U8(16),
B(Star), R(3),
B(TestUndetectable),
B(JumpIfFalse), U8(20),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(8),
B(JumpIfFalse), U8(19),
B(LdaTrue),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(5),
B(Star), R(17),
B(Mov), R(1), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(4),
B(JumpConstant), U8(16),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(8), U8(3),
B(StaCurrentContextSlot), U8(7),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
B(Star), R(12),
B(JumpConstant), U8(14),
B(Mov), R(3), R(16),
B(Mov), R(4), R(17),
B(Mov), R(1), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(3),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(11),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
B(Jump), U8(197),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(8),
B(LdaNamedProperty), R(8), U8(7), U8(20),
B(StaCurrentContextSlot), U8(9),
B(LdaCurrentContextSlot), U8(9),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(162),
B(LdaNamedProperty), R(4), U8(7), U8(20),
B(Star), R(5),
B(TestUndetectable),
B(JumpIfFalse), U8(141),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(8),
B(LdaNamedProperty), R(8), U8(6), U8(23),
B(StaCurrentContextSlot), U8(10),
B(LdaCurrentContextSlot), U8(10),
B(JumpIfFalse), U8(123),
B(LdaNamedProperty), R(4), U8(6), U8(23),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(108),
B(Jump), U8(96),
B(LdaZero),
B(Star), R(8),
B(Star), R(16),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(8), U8(26),
B(JumpIfFalse), U8(63),
B(LdaCurrentContextSlot), U8(10),
B(TestEqualStrict), R(16), U8(26),
B(JumpIfFalse), U8(61),
B(Ldar), R(6),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(8),
B(Star), R(16),
B(LdaConstant), U8(8),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kNewTypeError), R(8), U8(2),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw),
B(Mov), R(context), R(8),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(9), U8(2),
B(Mov), R(context), R(16),
B(Mov), R(6), R(17),
B(Mov), R(4), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
B(Jump), U8(20),
B(Star), R(9),
B(Star), R(17),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(9), U8(10),
B(Star), R(8),
B(CreateCatchContext), R(17), U8(9), U8(10),
B(Star), R(16),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(PopContext), R(1),
B(Jump), U8(37),
B(LdaCurrentContextSlot), U8(10),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(8), U8(2),
B(StaCurrentContextSlot), U8(11),
B(LdaCurrentContextSlot), U8(11),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
B(Ldar), R(16),
B(PushContext), R(9),
B(PopContext), R(9),
B(Jump), U8(27),
B(Mov), R(6), R(16),
B(Mov), R(4), R(17),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(11),
B(LdaCurrentContextSlot), U8(11),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(Wide), B(LdaSmi), I16(144),
B(Star), R(8),
B(Star), R(16),
B(LdaConstant), U8(8),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kNewTypeError), R(8), U8(2),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw),
B(LdaCurrentContextSlot), U8(9),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(8), U8(3),
B(StaCurrentContextSlot), U8(7),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
B(Mov), R(5), R(16),
B(Mov), R(4), R(17),
B(Mov), R(1), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(3),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(11),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(2),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(13), U8(29),
B(LdaNamedProperty), R(3), U8(11), U8(29),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(52),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(8),
B(Jump), U8(42),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(7), U8(1),
B(Ldar), R(8),
B(Mov), R(0), R(15),
B(Mov), R(3), R(16),
B(SuspendGenerator), R(15), U8(1),
B(Ldar), R(16),
/* 54 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(15), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(Star), R(2),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(StaCurrentContextSlot), U8(5),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(StaCurrentContextSlot), U8(6),
B(Wide), B(JumpLoop), U16(418), I16(0),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(7),
B(Wide), B(JumpLoop), U16(334), I16(0),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(7), U8(31),
B(JumpIfFalse), U8(26),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(14), U8(32),
B(Star), R(7),
B(TestEqualStrict), R(2), U8(31),
B(JumpIfFalse), U8(22),
B(LdaNamedProperty), R(3), U8(12), U8(32),
B(Star), R(15),
B(LdaTrue),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(5),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(41),
B(LdaCurrentContextSlot), U8(7),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(14), U8(34),
B(StaCurrentContextSlot), U8(12),
B(Star), R(12),
B(Jump), U8(37),
B(LdaNamedProperty), R(3), U8(12), U8(34),
B(Star), R(8),
B(LdaUndefined),
B(Star), R(7),
B(Star), R(15),
B(LdaTrue),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(5),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(4),
B(Star), R(12),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(4),
B(Star), R(12),
B(Jump), U8(8),
B(Star), R(5),
B(Star), R(13),
B(LdaSmi), I8(1),
B(Star), R(4),
B(Star), R(12),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(7), U8(1),
B(Ldar), R(6),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
B(Ldar), R(13),
/* 54 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(13),
B(ReThrow),
B(LdaUndefined),
/* 54 S> */ B(Return),
]
constant pool: [
Smi [52],
Smi [137],
Smi [46],
Smi [131],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
SYMBOL_TYPE,
Smi [387],
Smi [311],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
Smi [315],
Smi [271],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [540],
Smi [374],
Smi [444],
Smi [302],
Smi [6],
Smi [9],
]
handlers: [
[51, 636, 642],
[386, 398, 400],
[47, 534, 540],
[333, 343, 345],
]
......@@ -271,172 +271,132 @@ snippet: "
}
f();
"
frame size: 14
frame size: 17
parameter count: 1
bytecode array length: 331
bytecode array length: 243
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(5),
B(PushContext), R(8),
B(ResumeGenerator), R(new_target),
B(Star), R(4),
B(Star), R(7),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79),
B(Star), R(6),
B(CallRuntime), U16(Runtime::kAbort), R(6), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CreateFunctionContext), U8(4),
B(PushContext), R(0),
B(Mov), R(closure), R(6),
B(Mov), R(this), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(6), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(7),
B(Mov), R(closure), R(9),
B(Mov), R(this), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(9), U8(2),
B(Star), R(3),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(8),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(10),
B(Mov), R(context), R(11),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(10),
B(Mov), R(3), R(13),
B(Mov), R(3), R(12),
/* 11 E> */ B(SuspendGenerator), R(12), U8(0),
B(Ldar), R(13),
/* 62 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(7),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(6),
B(Jump), U8(192),
B(Ldar), R(10),
B(Star), R(9),
B(Jump), U8(114),
B(Ldar), R(13),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 31 S> */ B(LdaZero),
/* 31 E> */ B(StaCurrentContextSlot), U8(4),
B(LdaImmutableCurrentContextSlot), U8(4),
/* 60 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(2),
B(Star), R(4),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(6), U8(0),
B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(9),
B(Star), R(5),
/* 60 E> */ B(StackCheck),
B(Mov), R(4), R(1),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(3),
B(JumpIfFalse), U8(9),
B(TestEqual), R(5), U8(3),
B(JumpIfFalse), U8(7),
B(LdaZero),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(5),
B(Jump), U8(8),
/* 44 S> */ B(LdaCurrentContextSlot), U8(4),
/* 44 S> */ B(Ldar), R(1),
B(Inc), U8(4),
/* 44 E> */ B(StaCurrentContextSlot), U8(4),
B(Star), R(1),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(7), U8(0),
/* 36 S> */ B(LdaCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaSmi), I8(10),
/* 36 E> */ B(TestLessThan), R(9), U8(5),
B(Star), R(6),
/* 36 S> */ B(LdaSmi), I8(10),
/* 36 E> */ B(TestLessThan), R(1), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(69),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(9),
B(Jump), U8(4),
B(Jump), U8(36),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(6),
B(JumpIfFalse), U8(34),
B(TestEqual), R(6), U8(6),
B(JumpIfFalse), U8(17),
/* 18 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(PushContext), R(3),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 57 S> */ B(LdaContextSlot), R(3), U8(4), U8(0),
/* 57 E> */ B(StaCurrentContextSlot), U8(4),
B(PopContext), R(3),
/* 57 S> */ B(Mov), R(1), R(0),
B(LdaZero),
B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaCurrentContextSlot), U8(4),
/* 60 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(JumpLoop), U8(42), I8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(9),
B(Star), R(6),
B(Mov), R(0), R(4),
B(Ldar), R(0),
B(JumpLoop), U8(19), I8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(7),
B(JumpIfFalse), U8(6),
B(PopContext), R(2),
B(Jump), U8(7),
B(PopContext), R(2),
B(JumpLoop), U8(129), I8(0),
B(PopContext), R(1),
/* 60 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(68), I8(0),
B(LdaUndefined),
B(Star), R(9),
B(Star), R(12),
B(LdaTrue),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(7),
B(LdaZero),
B(Star), R(6),
B(Star), R(9),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(6),
B(Star), R(9),
B(Jump), U8(8),
B(Star), R(7),
B(Star), R(10),
B(LdaSmi), I8(1),
B(Star), R(6),
B(Star), R(9),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Ldar), R(8),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(3), U8(1),
B(Ldar), R(11),
B(SetPendingMessage),
B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(7),
B(Ldar), R(10),
/* 62 S> */ B(Return),
B(Ldar), R(7),
B(Ldar), R(10),
B(ReThrow),
B(LdaUndefined),
/* 62 S> */ B(Return),
]
constant pool: [
Smi [52],
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
Smi [46],
Smi [6],
Smi [9],
]
handlers: [
[51, 288, 294],
[47, 204, 210],
]
---
......@@ -446,218 +406,182 @@ snippet: "
}
f();
"
frame size: 13
frame size: 16
parameter count: 1
bytecode array length: 432
bytecode array length: 352
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(7),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(6),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(4),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(6),
B(Mov), R(closure), R(8),
B(Mov), R(this), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(8), U8(2),
B(Star), R(2),
/* 11 E> */ B(StackCheck),
B(Mov), R(context), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(Mov), R(context), R(10),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
B(Mov), R(2), R(12),
B(Mov), R(2), R(11),
/* 11 E> */ B(SuspendGenerator), R(11), U8(0),
B(Ldar), R(12),
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(Star), R(13),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(13),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(10),
B(TestEqualStrictNoFeedback), R(13),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(Star), R(15),
B(Mov), R(12), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
B(Star), R(9),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(6),
B(Ldar), R(9),
B(Star), R(8),
B(Jump), U8(223),
B(Ldar), R(12),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 31 S> */ B(LdaZero),
/* 31 E> */ B(StaCurrentContextSlot), U8(4),
B(LdaImmutableCurrentContextSlot), U8(4),
/* 54 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(1),
B(Star), R(3),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
B(Star), R(4),
B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 54 E> */ B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(4),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(8),
B(Mov), R(3), R(0),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(3),
B(JumpIfFalse), U8(9),
B(TestEqual), R(4), U8(3),
B(JumpIfFalse), U8(7),
B(LdaZero),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(4),
B(Jump), U8(8),
/* 44 S> */ B(LdaCurrentContextSlot), U8(4),
/* 44 S> */ B(Ldar), R(0),
B(Inc), U8(4),
/* 44 E> */ B(StaCurrentContextSlot), U8(4),
B(Star), R(0),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(7), U8(0),
/* 36 S> */ B(LdaCurrentContextSlot), U8(4),
B(Star), R(8),
B(LdaSmi), I8(10),
/* 36 E> */ B(TestLessThan), R(8), U8(5),
B(Star), R(5),
/* 36 S> */ B(LdaSmi), I8(10),
/* 36 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(149),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(Jump), U8(4),
B(Jump), U8(124),
B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(6),
B(JumpIfFalse), U8(93),
B(TestEqual), R(5), U8(6),
B(JumpIfFalse), U8(84),
/* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaFalse),
B(Star), R(10),
/* 53 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(9),
/* 47 S> */ B(LdaFalse),
B(Star), R(13),
B(Mov), R(0), R(12),
/* 53 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
B(Mov), R(2), R(11),
B(SuspendGenerator), R(11), U8(0),
B(Ldar), R(12),
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(Star), R(13),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(13),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(13),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(15),
B(Mov), R(12), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
B(Star), R(9),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(72),
B(Ldar), R(9),
B(Star), R(8),
B(Jump), U8(57),
B(Ldar), R(12),
/* 47 E> */ B(Throw),
B(LdaZero),
B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaCurrentContextSlot), U8(4),
/* 54 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(JumpLoop), U8(122), I8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8),
B(Star), R(5),
B(Mov), R(0), R(3),
B(Ldar), R(0),
B(JumpLoop), U8(107), I8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(7),
B(JumpIfFalse), U8(6),
B(PopContext), R(2),
B(Jump), U8(7),
B(PopContext), R(2),
B(JumpLoop), U8(230), I8(0),
B(PopContext), R(1),
/* 54 E> */ B(TestEqual), R(5), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(177), I8(0),
B(LdaUndefined),
B(Star), R(8),
B(Star), R(11),
B(LdaTrue),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6),
B(LdaZero),
B(Star), R(5),
B(Star), R(8),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(8),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(9),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(8),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(8), U8(1),
B(Ldar), R(7),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(10),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(9),
/* 56 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(9),
B(ReThrow),
B(LdaUndefined),
/* 56 S> */ B(Return),
]
constant pool: [
Smi [52],
Smi [123],
FIXED_ARRAY_TYPE,
Smi [84],
FIXED_ARRAY_TYPE,
Smi [60],
Smi [293],
Smi [46],
Smi [102],
Smi [56],
Smi [50],
Smi [6],
Smi [9],
]
handlers: [
[51, 389, 395],
[47, 313, 319],
]
---
......@@ -667,162 +591,121 @@ snippet: "
}
f();
"
frame size: 12
frame size: 17
parameter count: 1
bytecode array length: 298
bytecode array length: 207
bytecodes: [
B(CreateFunctionContext), U8(5),
B(PushContext), R(0),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(4),
B(CallJSRuntime), U8(%async_function_promise_create), R(4), U8(1),
B(StaCurrentContextSlot), U8(8),
B(Mov), R(context), R(6),
B(Mov), R(context), R(7),
B(Ldar), R(closure),
B(CreateBlockContext), U8(0),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_create), R(9), U8(1),
B(Star), R(7),
B(Mov), R(context), R(11),
B(Mov), R(context), R(12),
/* 36 S> */ B(LdaZero),
/* 36 E> */ B(StaCurrentContextSlot), U8(4),
B(LdaImmutableCurrentContextSlot), U8(4),
/* 65 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(Star), R(2),
B(Star), R(4),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(6), U8(0),
B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(8),
B(Star), R(5),
/* 65 E> */ B(StackCheck),
B(Mov), R(4), R(1),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(3),
B(JumpIfFalse), U8(9),
B(TestEqual), R(5), U8(3),
B(JumpIfFalse), U8(7),
B(LdaZero),
B(StaContextSlot), R(1), U8(6), U8(0),
B(Star), R(5),
B(Jump), U8(8),
/* 49 S> */ B(LdaCurrentContextSlot), U8(4),
/* 49 S> */ B(Ldar), R(1),
B(Inc), U8(4),
/* 49 E> */ B(StaCurrentContextSlot), U8(4),
B(Star), R(1),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(7), U8(0),
/* 41 S> */ B(LdaCurrentContextSlot), U8(4),
B(Star), R(8),
B(LdaSmi), I8(10),
/* 41 E> */ B(TestLessThan), R(8), U8(5),
B(Star), R(6),
/* 41 S> */ B(LdaSmi), I8(10),
/* 41 E> */ B(TestLessThan), R(1), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(69),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8),
B(Jump), U8(4),
B(Jump), U8(36),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(6),
B(JumpIfFalse), U8(34),
B(TestEqual), R(6), U8(6),
B(JumpIfFalse), U8(17),
/* 23 E> */ B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(PushContext), R(3),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
/* 62 S> */ B(LdaContextSlot), R(3), U8(4), U8(0),
/* 62 E> */ B(StaCurrentContextSlot), U8(4),
B(PopContext), R(3),
/* 62 S> */ B(Mov), R(1), R(0),
B(LdaZero),
B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaCurrentContextSlot), U8(4),
/* 65 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(JumpLoop), U8(42), I8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8),
B(Star), R(6),
B(Mov), R(0), R(4),
B(Ldar), R(0),
B(JumpLoop), U8(19), I8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(7),
B(JumpIfFalse), U8(6),
B(PopContext), R(2),
B(Jump), U8(7),
B(PopContext), R(2),
B(JumpLoop), U8(129), I8(0),
B(PopContext), R(1),
/* 65 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(68), I8(0),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(9),
B(Star), R(13),
B(LdaUndefined),
B(Star), R(10),
B(CallJSRuntime), U8(%promise_resolve), R(8), U8(3),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(5),
B(Star), R(15),
B(Mov), R(7), R(14),
B(CallJSRuntime), U8(%promise_resolve), R(13), U8(3),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(8),
B(Star), R(9),
B(Mov), R(7), R(10),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(13),
B(Ldar), R(closure),
B(CreateCatchContext), R(8), U8(3), U8(4),
B(Star), R(7),
B(CreateCatchContext), R(13), U8(0), U8(1),
B(Star), R(12),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(7),
B(PushContext), R(1),
B(Ldar), R(12),
B(PushContext), R(8),
B(LdaUndefined),
B(Star), R(8),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(9),
B(Star), R(13),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(10),
B(Star), R(15),
B(LdaFalse),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_internal_reject), R(8), U8(4),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(PopContext), R(1),
B(Star), R(5),
B(Star), R(16),
B(Mov), R(7), R(14),
B(CallJSRuntime), U8(%promise_internal_reject), R(13), U8(4),
B(PopContext), R(8),
B(LdaZero),
B(Star), R(4),
B(Star), R(9),
B(Mov), R(7), R(10),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(4),
B(Star), R(9),
B(Jump), U8(8),
B(Star), R(5),
B(Star), R(10),
B(LdaSmi), I8(1),
B(Star), R(4),
B(Star), R(9),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(6),
B(Star), R(11),
B(LdaUndefined),
B(Star), R(7),
B(LdaCurrentContextSlot), U8(8),
B(Star), R(8),
B(CallJSRuntime), U8(%async_function_promise_release), R(7), U8(2),
B(Ldar), R(6),
B(Star), R(12),
B(Mov), R(7), R(13),
B(CallJSRuntime), U8(%async_function_promise_release), R(12), U8(2),
B(Ldar), R(11),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
B(Ldar), R(10),
/* 67 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(10),
B(ReThrow),
B(LdaUndefined),
/* 67 S> */ B(Return),
]
constant pool: [
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[17, 252, 258],
[20, 201, 203],
[13, 162, 168],
[16, 117, 119],
]
---
......@@ -832,229 +715,190 @@ snippet: "
}
f();
"
frame size: 14
frame size: 20
parameter count: 1
bytecode array length: 465
bytecode array length: 369
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(PushContext), R(10),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(Star), R(9),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CreateFunctionContext), U8(6),
B(PushContext), R(0),
B(Mov), R(closure), R(5),
B(Mov), R(this), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
B(StaCurrentContextSlot), U8(4),
B(Star), R(9),
B(Mov), R(closure), R(11),
B(Mov), R(this), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(11), U8(2),
B(Star), R(2),
/* 16 E> */ B(StackCheck),
B(LdaUndefined),
B(Star), R(5),
B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
B(StaCurrentContextSlot), U8(6),
B(Mov), R(context), R(7),
B(Mov), R(context), R(8),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
B(PushContext), R(1),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(Star), R(11),
B(CallJSRuntime), U8(%async_function_promise_create), R(11), U8(1),
B(Star), R(4),
B(Mov), R(context), R(13),
B(Mov), R(context), R(14),
/* 36 S> */ B(LdaZero),
/* 36 E> */ B(StaCurrentContextSlot), U8(4),
B(LdaImmutableCurrentContextSlot), U8(4),
/* 59 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(Star), R(1),
B(Star), R(5),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
B(Star), R(6),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(1), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
/* 59 E> */ B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
B(StackCheck),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(PushContext), R(2),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(9),
B(Mov), R(5), R(0),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(3),
B(JumpIfFalse), U8(9),
B(TestEqual), R(6), U8(3),
B(JumpIfFalse), U8(7),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(Star), R(6),
B(Jump), U8(8),
/* 49 S> */ B(LdaCurrentContextSlot), U8(4),
/* 49 S> */ B(Ldar), R(0),
B(Inc), U8(4),
/* 49 E> */ B(StaCurrentContextSlot), U8(4),
B(Star), R(0),
B(LdaSmi), I8(1),
B(StaContextSlot), R(1), U8(9), U8(0),
/* 41 S> */ B(LdaCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaSmi), I8(10),
/* 41 E> */ B(TestLessThan), R(9), U8(5),
B(Star), R(7),
/* 41 S> */ B(LdaSmi), I8(10),
/* 41 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(172),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(0),
B(Jump), U8(4),
B(Jump), U8(134),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(3),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(9),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(6),
B(JumpIfFalse), U8(116),
B(TestEqual), R(7), U8(6),
B(JumpIfFalse), U8(94),
/* 23 E> */ B(StackCheck),
/* 52 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(9),
/* 58 S> */ B(LdaCurrentContextSlot), U8(4),
B(StaContextSlot), R(1), U8(5), U8(0),
/* 52 S> */ B(Nop),
/* 58 S> */ B(Mov), R(0), R(3),
/* 52 S> */ B(LdaUndefined),
B(Star), R(10),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(13),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(10), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(10),
B(Star), R(16),
B(Mov), R(2), R(17),
B(Mov), R(0), R(18),
B(Mov), R(4), R(19),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(16), U8(4),
B(LdaZero),
B(SuspendGenerator), R(9), U8(2),
B(Ldar), R(10),
B(Mov), R(2), R(15),
B(Mov), R(4), R(16),
B(SuspendGenerator), R(15), U8(2),
B(Ldar), R(16),
/* 61 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(15), U8(1),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(15), U8(1),
B(Star), R(17),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(30),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(19),
B(Mov), R(16), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(12),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(129),
B(Ldar), R(10),
B(Star), R(11),
B(Jump), U8(106),
B(Ldar), R(16),
B(ReThrow),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(LdaCurrentContextSlot), U8(4),
/* 59 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(JumpLoop), U8(145), I8(1),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(9),
B(Star), R(7),
B(Mov), R(0), R(5),
B(Ldar), R(0),
B(JumpLoop), U8(117), I8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(7),
B(JumpIfFalse), U8(6),
B(PopContext), R(2),
B(Jump), U8(7),
B(PopContext), R(2),
B(JumpLoop), U8(253), I8(0),
B(PopContext), R(1),
/* 59 E> */ B(TestEqual), R(7), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(187), I8(0),
B(LdaUndefined),
B(Star), R(9),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(10),
B(Star), R(15),
B(LdaUndefined),
B(Star), R(11),
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(6),
B(Star), R(17),
B(Mov), R(4), R(16),
B(CallJSRuntime), U8(%promise_resolve), R(15), U8(3),
B(LdaZero),
B(Star), R(5),
B(Jump), U8(65),
B(Jump), U8(51),
B(Star), R(9),
B(Star), R(11),
B(Mov), R(4), R(12),
B(Jump), U8(59),
B(Jump), U8(45),
B(Star), R(15),
B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(5), U8(6),
B(Star), R(8),
B(CreateCatchContext), R(15), U8(3), U8(4),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(8),
B(PushContext), R(1),
B(Ldar), R(14),
B(PushContext), R(8),
B(LdaUndefined),
B(Star), R(9),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(10),
B(Star), R(15),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(11),
B(Star), R(17),
B(LdaFalse),
B(Star), R(12),
B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(PopContext), R(1),
B(Star), R(6),
B(Star), R(18),
B(Mov), R(4), R(16),
B(CallJSRuntime), U8(%promise_internal_reject), R(15), U8(4),
B(PopContext), R(8),
B(LdaZero),
B(Star), R(5),
B(Star), R(11),
B(Mov), R(4), R(12),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(5),
B(Star), R(11),
B(Jump), U8(8),
B(Star), R(6),
B(Star), R(12),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Star), R(11),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(7),
B(Star), R(13),
B(LdaUndefined),
B(Star), R(8),
B(LdaCurrentContextSlot), U8(6),
B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
B(Ldar), R(7),
B(Star), R(14),
B(Mov), R(4), R(15),
B(CallJSRuntime), U8(%async_function_promise_release), R(14), U8(2),
B(Ldar), R(13),
B(SetPendingMessage),
B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(6),
B(Ldar), R(12),
/* 61 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(12),
B(ReThrow),
B(LdaUndefined),
/* 61 S> */ B(Return),
]
constant pool: [
Smi [73],
FIXED_ARRAY_TYPE,
Smi [84],
FIXED_ARRAY_TYPE,
Smi [83],
Smi [54],
Smi [56],
Smi [60],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[60, 419, 425],
[63, 368, 370],
[56, 324, 330],
[59, 279, 281],
]
......@@ -107,7 +107,7 @@ function *gen1() {
}
var g = gen1();
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
......@@ -120,7 +120,7 @@ function *gen2(a) {
}
g = gen2(42);
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 42}, 0, g);
......@@ -134,7 +134,7 @@ function *gen3(a) {
}
g = gen3(0);
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 0, b: undefined}, 0, g);
......@@ -148,11 +148,12 @@ function *gen4(a, b) {
var x = 2;
yield a;
var y = 3;
yield a;
return b;
}
g = gen4(0, 1);
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 0, b: 1, x: undefined, y: undefined}, 0, g);
......@@ -167,12 +168,13 @@ CheckScopeContent({a: 0, b: 1, x: 2, y: 3}, 0, g);
function *gen5(a) {
eval('var b = 2');
yield a;
return b;
}
g = gen5(1);
g.next();
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1, b: 2}, 0, g);
......@@ -190,13 +192,13 @@ function *gen6() {
g = gen6();
g.next();
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
g.next();
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
......@@ -216,7 +218,7 @@ g = gen7();
g.next();
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.With,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
......@@ -237,7 +239,7 @@ g = gen8();
g.next();
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.With,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 2, b: 1}, 0, g);
......@@ -259,7 +261,7 @@ function *gen9() {
g = gen9();
g.next();
CheckScopeChain([debug.ScopeType.Catch,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({e: 42}, 0, g);
......@@ -274,24 +276,23 @@ function *gen10() {
g = gen10();
g.next();
CheckScopeChain([debug.ScopeType.Block,
debug.ScopeType.Block,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({i: 0}, 0, g);
g.next();
CheckScopeContent({i: 1}, 0, g);
CheckScopeContent({i: 0}, 1, g); // Additional block scope with i = 0;
// Nested generators.
var gen12;
function *gen11() {
var b = 2;
gen12 = function*() {
var a = 1;
yield 1;
return 2;
return b;
}();
var a = 0;
......@@ -301,12 +302,12 @@ function *gen11() {
gen11().next();
g = gen12;
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Closure,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1}, 0, g);
CheckScopeContent({a: 0}, 1, g);
CheckScopeContent({b: 2}, 1, g);
// Set a variable in an empty scope.
......@@ -355,7 +356,7 @@ var g = gen15();
assertEquals(1, g.next().value);
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1, b: 2}, 0, g);
......@@ -376,7 +377,7 @@ CheckScopeContent({a: 1, b: 2}, 0, g);
CheckScopeContent({c: 1, d: 4, e: 42}, 1, g);
assertEquals(5, g.next().value); // Initialized after set.
CheckScopeChain([debug.ScopeType.Closure,
CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
......@@ -404,15 +405,15 @@ g.next();
CheckScopeChain([debug.ScopeType.Block,
debug.ScopeType.With,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({d: 4}, 0, g);
CheckScopeContent({d: 4, e: undefined}, 0, g);
CheckScopeContent({a: 1, b: 2}, 1, g);
CheckScopeContent({c: 3}, 2, g);
Debug.generatorScope(g, 0).setVariableValue("d", 1);
CheckScopeContent({d: 1}, 0, g);
CheckScopeContent({d: 1, e: undefined}, 0, g);
assertEquals(1, g.next().value);
......@@ -434,7 +435,7 @@ g = gen17();
g.next();
CheckScopeChain([debug.ScopeType.Catch,
debug.ScopeType.Closure,
debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({e: 42}, 0, g);
......
......@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --noalways-opt
var Debug = debug.Debug;
var breakPointCount = 0;
......@@ -12,10 +14,9 @@ function listener(event, exec_state, event_data, data) {
if (breakPointCount === 1) {
assertEquals(
"inner", exec_state.frame(0).evaluate("inner").value());
assertThrows(() => exec_state.frame(0).evaluate("letInner").value(),
ReferenceError);
assertThrows(() => exec_state.frame(0).evaluate("constInner").value(),
ReferenceError);
// Variables in TDZ have 'undefined' as their values.
assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value());
assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value());
assertEquals("outer", exec_state.frame(0).evaluate("outer").value());
assertEquals(
......@@ -29,16 +30,15 @@ function listener(event, exec_state, event_data, data) {
assertEquals(
"let outer", exec_state.frame(1).evaluate("letOuter").value());
assertThrows(() => exec_state.frame(0).evaluate("withVar").value(),
ReferenceError);
// Variables in TDZ have 'undefined' as their values.
assertEquals(undefined, exec_state.frame(0).evaluate("withVar").value());
} else if (breakPointCount === 2) {
assertEquals(
"inner", exec_state.frame(0).evaluate("inner").value());
assertThrows(() => exec_state.frame(0).evaluate("letInner").value(),
ReferenceError);
assertThrows(() => exec_state.frame(0).evaluate("constInner").value(),
ReferenceError);
// Variables in TDZ have 'undefined' as their values.
assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value());
assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value());
assertEquals(57, exec_state.frame(0).evaluate("x").value());
assertEquals(100, exec_state.frame(0).evaluate("y").value());
......@@ -70,8 +70,8 @@ function listener(event, exec_state, event_data, data) {
"Error",
exec_state.frame(0).evaluate("error.constructor.name").value());
assertEquals("floof", exec_state.frame(0).evaluate("bun").value());
assertThrows(() => exec_state.frame(0).evaluate("cow").value(),
ReferenceError);
// Variables in TDZ have 'undefined' as their values.
assertEquals(undefined, exec_state.frame(0).evaluate("cow").value())
assertEquals("outer", exec_state.frame(0).evaluate("outer").value());
assertEquals(
......
......@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --noalways-opt
var Debug = debug.Debug;
var global_marker = 7;
......@@ -400,7 +402,7 @@ await test(
debug.ScopeType.Closure,
debug.ScopeType.Script,
debug.ScopeType.Global], exec_state);
CheckScopeContent({a:1, x: 2}, 1, exec_state);
CheckScopeContent({a:1}, 1, exec_state);
},
result => result());
......@@ -418,7 +420,7 @@ await test(
debug.ScopeType.Script,
debug.ScopeType.Global], exec_state);
CheckScopeContent({e: 'Exception'}, 0, exec_state);
CheckScopeContent({a:1, x: 2}, 2, exec_state);
CheckScopeContent({a:1}, 2, exec_state);
},
result => result());
......
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --noalways-opt
Debug = debug.Debug
......
......@@ -9,11 +9,11 @@ Running test: testScopesPaused
configurable : true
enumerable : true
isOwn : true
name : a
name : b
value : {
description : 420
description : 42
type : number
value : 420
value : 42
}
writable : true
}
......@@ -21,11 +21,11 @@ Running test: testScopesPaused
configurable : true
enumerable : true
isOwn : true
name : b
name : a
value : {
description : 42
description : 420
type : number
value : 42
value : 420
}
writable : true
}
......@@ -42,11 +42,9 @@ Running test: testScopesNonPaused
configurable : true
enumerable : true
isOwn : true
name : a
name : b
value : {
description : 430
type : number
value : 430
type : undefined
}
writable : true
}
......@@ -54,9 +52,11 @@ Running test: testScopesNonPaused
configurable : true
enumerable : true
isOwn : true
name : b
name : a
value : {
type : undefined
description : 430
type : number
value : 430
}
writable : true
}
......
......@@ -339,16 +339,6 @@ expression: gen1.next();gen1
}
}
}
[4] : {
name : [[Scopes]]
value : {
className : Array
description : Scopes[2]
objectId : <objectId>
subtype : internal#scopeList
type : object
}
}
]
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment