Commit 7fa77063 authored by jarin's avatar jarin Committed by Commit Bot

Move generator-close on exception from the generator function to the GeneratorResume builtin.

The change also moves creation of the iterator result from the parser to the bytecode generator.

Unfortunately, async generators will stay on the old scheme (try-finally around generator body) because I am not exactly sure how they work.

Review-Url: https://codereview.chromium.org/2917263002
Cr-Commit-Position: refs/heads/master@{#45713}
parent e5e55c61
...@@ -2541,6 +2541,10 @@ class Suspend final : public Expression { ...@@ -2541,6 +2541,10 @@ class Suspend final : public Expression {
return suspend_id() > 0 && (flags() & SuspendFlags::kAsyncGeneratorAwait) == return suspend_id() > 0 && (flags() & SuspendFlags::kAsyncGeneratorAwait) ==
SuspendFlags::kAsyncGenerator; SuspendFlags::kAsyncGenerator;
} }
inline bool IsNonInitialGeneratorYield() const {
// Return true if is_generator() && !is_await() && yield_id() > 0
return suspend_id() > 0 && (flags() == SuspendFlags::kGeneratorYield);
}
void set_expression(Expression* e) { expression_ = e; } void set_expression(Expression* e) { expression_ = e; }
void set_suspend_id(int id) { suspend_id_ = id; } void set_suspend_id(int id) { suspend_id_ = id; }
......
...@@ -1049,7 +1049,11 @@ namespace internal { ...@@ -1049,7 +1049,11 @@ namespace internal {
#define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseHandleReject) #define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseHandleReject)
#define BUILTIN_EXCEPTION_UNCAUGHT_PREDICTION_LIST(V) V(MapConstructor) #define BUILTIN_EXCEPTION_UNCAUGHT_PREDICTION_LIST(V) \
V(MapConstructor) \
V(GeneratorPrototypeNext) \
V(GeneratorPrototypeReturn) \
V(GeneratorPrototypeThrow)
#define IGNORE_BUILTIN(...) #define IGNORE_BUILTIN(...)
......
...@@ -47,12 +47,32 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume( ...@@ -47,12 +47,32 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume(
GotoIf(SmiLessThan(receiver_continuation, closed), &if_receiverisrunning); GotoIf(SmiLessThan(receiver_continuation, closed), &if_receiverisrunning);
// Resume the {receiver} using our trampoline. // Resume the {receiver} using our trampoline.
VARIABLE(var_exception, MachineRepresentation::kTagged, UndefinedConstant());
Label if_exception(this, Label::kDeferred), if_final_return(this);
Node* result = Node* result =
CallStub(CodeFactory::ResumeGenerator(isolate()), context, value, CallStub(CodeFactory::ResumeGenerator(isolate()), context, value,
receiver, SmiConstant(resume_mode), receiver, SmiConstant(resume_mode),
SmiConstant(static_cast<int>(SuspendFlags::kGeneratorYield))); SmiConstant(static_cast<int>(SuspendFlags::kGeneratorYield)));
// Make sure we close the generator if there was an exception.
GotoIfException(result, &if_exception, &var_exception);
// If the generator is not suspended (i.e., it's state is 'closed'),
// wrap the return value in IteratorResult.
Node* result_continuation =
LoadObjectField(receiver, JSGeneratorObject::kContinuationOffset);
GotoIf(SmiEqual(result_continuation, closed), &if_final_return);
Return(result); Return(result);
Callable create_iter_result_object =
CodeFactory::CreateIterResultObject(isolate());
BIND(&if_final_return);
{
// Return the wrapped result.
Return(
CallStub(create_iter_result_object, context, result, TrueConstant()));
}
BIND(&if_receiverisincompatible); BIND(&if_receiverisincompatible);
{ {
// The {receiver} is not a valid JSGeneratorObject. // The {receiver} is not a valid JSGeneratorObject.
...@@ -65,9 +85,6 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume( ...@@ -65,9 +85,6 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume(
BIND(&if_receiverisclosed); BIND(&if_receiverisclosed);
{ {
Callable create_iter_result_object =
CodeFactory::CreateIterResultObject(isolate());
// The {receiver} is closed already. // The {receiver} is closed already.
Node* result = nullptr; Node* result = nullptr;
switch (resume_mode) { switch (resume_mode) {
...@@ -91,6 +108,14 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume( ...@@ -91,6 +108,14 @@ void GeneratorBuiltinsAssembler::GeneratorPrototypeResume(
CallRuntime(Runtime::kThrowGeneratorRunning, context); CallRuntime(Runtime::kThrowGeneratorRunning, context);
Unreachable(); Unreachable();
} }
BIND(&if_exception);
{
StoreObjectFieldNoWriteBarrier(
receiver, JSGeneratorObject::kContinuationOffset, closed);
CallRuntime(Runtime::kReThrow, context, var_exception.value());
Unreachable();
}
} }
// ES6 #sec-generator.prototype.next // ES6 #sec-generator.prototype.next
......
...@@ -981,13 +981,16 @@ void BytecodeGenerator::BuildGeneratorPrologue() { ...@@ -981,13 +981,16 @@ void BytecodeGenerator::BuildGeneratorPrologue() {
// This is a resume call. Restore the current context and the registers, // This is a resume call. Restore the current context and the registers,
// then perform state dispatch. // then perform state dispatch.
Register generator_context = register_allocator()->NewRegister(); {
builder() RegisterAllocationScope register_scope(this);
->CallRuntime(Runtime::kInlineGeneratorGetContext, generator_object_) Register generator_context = register_allocator()->NewRegister();
.PushContext(generator_context) builder()
.RestoreGeneratorState(generator_object_) ->CallRuntime(Runtime::kInlineGeneratorGetContext, generator_object_)
.StoreAccumulatorInRegister(generator_state_) .PushContext(generator_context)
.SwitchOnSmiNoFeedback(generator_jump_table_); .RestoreGeneratorState(generator_object_)
.StoreAccumulatorInRegister(generator_state_)
.SwitchOnSmiNoFeedback(generator_jump_table_);
}
// We fall through when the generator state is not in the jump table. // We fall through when the generator state is not in the jump table.
// TODO(leszeks): Only generate this for debug builds. // TODO(leszeks): Only generate this for debug builds.
BuildAbort(BailoutReason::kInvalidJumpTableIndex); BuildAbort(BailoutReason::kInvalidJumpTableIndex);
...@@ -2183,6 +2186,15 @@ void BytecodeGenerator::BuildReturn() { ...@@ -2183,6 +2186,15 @@ void BytecodeGenerator::BuildReturn() {
if (info()->literal()->feedback_vector_spec()->HasTypeProfileSlot()) { if (info()->literal()->feedback_vector_spec()->HasTypeProfileSlot()) {
builder()->CollectTypeProfile(info()->literal()->return_position()); builder()->CollectTypeProfile(info()->literal()->return_position());
} }
if (IsGeneratorFunction(info()->literal()->kind())) {
// Mark the generator as closed if returning from a generator function.
RegisterAllocationScope register_scope(this);
Register result = register_allocator()->NewRegister();
builder()
->StoreAccumulatorInRegister(result)
.CallRuntime(Runtime::kInlineGeneratorClose, generator_object_)
.LoadAccumulatorWithRegister(result);
}
builder()->Return(); builder()->Return();
} }
...@@ -2533,7 +2545,15 @@ void BytecodeGenerator::BuildGeneratorSuspend(Suspend* expr, ...@@ -2533,7 +2545,15 @@ void BytecodeGenerator::BuildGeneratorSuspend(Suspend* expr,
->LoadLiteral(Smi::FromInt(expr->suspend_id())) ->LoadLiteral(Smi::FromInt(expr->suspend_id()))
.SuspendGenerator(generator_object_, registers_to_save, expr->flags()); .SuspendGenerator(generator_object_, registers_to_save, expr->flags());
if (expr->IsNonInitialAsyncGeneratorYield()) { if (expr->IsNonInitialGeneratorYield()) {
// GeneratorYield: Wrap the value into IteratorResult.
RegisterList args = register_allocator()->NewRegisterList(2);
builder()
->MoveRegister(value, args[0])
.LoadFalse()
.StoreAccumulatorInRegister(args[1])
.CallRuntime(Runtime::kInlineCreateIterResultObject, args);
} else if (expr->IsNonInitialAsyncGeneratorYield()) {
// AsyncGenerator yields (with the exception of the initial yield) delegate // AsyncGenerator yields (with the exception of the initial yield) delegate
// to AsyncGeneratorResolve(), implemented via the runtime call below. // to AsyncGeneratorResolve(), implemented via the runtime call below.
RegisterList args = register_allocator()->NewRegisterList(3); RegisterList args = register_allocator()->NewRegisterList(3);
...@@ -2606,17 +2626,11 @@ void BytecodeGenerator::BuildGeneratorResume( ...@@ -2606,17 +2626,11 @@ void BytecodeGenerator::BuildGeneratorResume(
{ {
// Resume with return. // Resume with return.
builder()->Bind(jump_table, JSGeneratorObject::kReturn); builder()->Bind(jump_table, JSGeneratorObject::kReturn);
builder()->LoadAccumulatorWithRegister(input);
if (expr->is_async_generator()) { if (expr->is_async_generator()) {
// Async generator methods will produce the iter result object. // Async generator methods will produce the iter result object.
builder()->LoadAccumulatorWithRegister(input);
execution_control()->AsyncReturnAccumulator(); execution_control()->AsyncReturnAccumulator();
} else { } else {
RegisterList args = register_allocator()->NewRegisterList(2);
builder()
->MoveRegister(input, args[0])
.LoadTrue()
.StoreAccumulatorInRegister(args[1])
.CallRuntime(Runtime::kInlineCreateIterResultObject, args);
execution_control()->ReturnAccumulator(); execution_control()->ReturnAccumulator();
} }
} }
......
...@@ -1388,10 +1388,6 @@ class ParserBase { ...@@ -1388,10 +1388,6 @@ class ParserBase {
// Convenience method which determines the type of return statement to emit // Convenience method which determines the type of return statement to emit
// depending on the current function type. // depending on the current function type.
inline StatementT BuildReturnStatement(ExpressionT expr, int pos) { inline StatementT BuildReturnStatement(ExpressionT expr, int pos) {
if (is_generator() && !is_async_generator()) {
expr = impl()->BuildIteratorResult(expr, true);
}
if (is_async_function()) { if (is_async_function()) {
return factory()->NewAsyncReturnStatement(expr, pos); return factory()->NewAsyncReturnStatement(expr, pos);
} }
...@@ -2999,12 +2995,6 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseYieldExpression( ...@@ -2999,12 +2995,6 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseYieldExpression(
return impl()->RewriteYieldStar(expression, pos); return impl()->RewriteYieldStar(expression, pos);
} }
if (!is_async_generator()) {
// Async generator yield is rewritten in Ignition, and doesn't require
// producing an Iterator Result.
expression = impl()->BuildIteratorResult(expression, false);
}
// Hackily disambiguate o from o.next and o [Symbol.iterator](). // Hackily disambiguate o from o.next and o [Symbol.iterator]().
// TODO(verwaest): Come up with a better solution. // TODO(verwaest): Come up with a better solution.
ExpressionT yield = BuildSuspend(expression, pos, Suspend::kOnExceptionThrow, ExpressionT yield = BuildSuspend(expression, pos, Suspend::kOnExceptionThrow,
...@@ -4091,7 +4081,9 @@ void ParserBase<Impl>::ParseFunctionBody( ...@@ -4091,7 +4081,9 @@ void ParserBase<Impl>::ParseFunctionBody(
{ {
BlockState block_state(&scope_, inner_scope); BlockState block_state(&scope_, inner_scope);
if (IsGeneratorFunction(kind)) { if (IsAsyncGeneratorFunction(kind)) {
impl()->ParseAndRewriteAsyncGeneratorFunctionBody(pos, kind, body, ok);
} else if (IsGeneratorFunction(kind)) {
impl()->ParseAndRewriteGeneratorFunctionBody(pos, kind, body, ok); impl()->ParseAndRewriteGeneratorFunctionBody(pos, kind, body, ok);
} else if (IsAsyncFunction(kind)) { } else if (IsAsyncFunction(kind)) {
const bool accept_IN = true; const bool accept_IN = true;
......
...@@ -352,19 +352,6 @@ Expression* Parser::BuildUnaryExpression(Expression* expression, ...@@ -352,19 +352,6 @@ Expression* Parser::BuildUnaryExpression(Expression* expression,
return factory()->NewUnaryOperation(op, expression, pos); return factory()->NewUnaryOperation(op, expression, pos);
} }
Expression* Parser::BuildIteratorResult(Expression* value, bool done) {
int pos = kNoSourcePosition;
if (value == nullptr) value = factory()->NewUndefinedLiteral(pos);
auto args = new (zone()) ZoneList<Expression*>(2, zone());
args->Add(value, zone());
args->Add(factory()->NewBooleanLiteral(done, pos), zone());
return factory()->NewCallRuntime(Runtime::kInlineCreateIterResultObject, args,
pos);
}
Expression* Parser::NewThrowError(Runtime::FunctionId id, Expression* Parser::NewThrowError(Runtime::FunctionId id,
MessageTemplate::Template message, MessageTemplate::Template message,
const AstRawString* arg, int pos) { const AstRawString* arg, int pos) {
...@@ -1778,11 +1765,15 @@ Statement* Parser::RewriteTryStatement(Block* try_block, Block* catch_block, ...@@ -1778,11 +1765,15 @@ Statement* Parser::RewriteTryStatement(Block* try_block, Block* catch_block,
void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind, void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind,
ZoneList<Statement*>* body, ZoneList<Statement*>* body,
bool* ok) { bool* ok) {
// For ES6 Generators, we produce: // For ES6 Generators, we just prepend the initial yield.
// Expression* initial_yield = BuildInitialYield(pos, kind);
// try { InitialYield; ...body...; return {value: undefined, done: true} } body->Add(factory()->NewExpressionStatement(initial_yield, kNoSourcePosition),
// finally { %_GeneratorClose(generator) } zone());
// ParseStatementList(body, Token::RBRACE, ok);
}
void Parser::ParseAndRewriteAsyncGeneratorFunctionBody(
int pos, FunctionKind kind, ZoneList<Statement*>* body, bool* ok) {
// For ES2017 Async Generators, we produce: // For ES2017 Async Generators, we produce:
// //
// try { // try {
...@@ -1803,6 +1794,7 @@ void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind, ...@@ -1803,6 +1794,7 @@ void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind,
// - BytecodeGenerator performs special handling for ReturnStatements in // - BytecodeGenerator performs special handling for ReturnStatements in
// async generator functions, resolving the appropriate Promise with an // async generator functions, resolving the appropriate Promise with an
// "done" iterator result object containing a Promise-unwrapped value. // "done" iterator result object containing a Promise-unwrapped value.
DCHECK(IsAsyncGeneratorFunction(kind));
Block* try_block = factory()->NewBlock(nullptr, 3, false, kNoSourcePosition); Block* try_block = factory()->NewBlock(nullptr, 3, false, kNoSourcePosition);
Expression* initial_yield = BuildInitialYield(pos, kind); Expression* initial_yield = BuildInitialYield(pos, kind);
...@@ -1812,49 +1804,45 @@ void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind, ...@@ -1812,49 +1804,45 @@ void Parser::ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind,
ParseStatementList(try_block->statements(), Token::RBRACE, ok); ParseStatementList(try_block->statements(), Token::RBRACE, ok);
if (!*ok) return; if (!*ok) return;
if (IsAsyncGeneratorFunction(kind)) { // Don't create iterator result for async generators, as the resume methods
// Don't create iterator result for async generators, as the resume methods // will create it.
// will create it. Statement* final_return = BuildReturnStatement(
Statement* final_return = BuildReturnStatement( factory()->NewUndefinedLiteral(kNoSourcePosition), kNoSourcePosition);
factory()->NewUndefinedLiteral(kNoSourcePosition), kNoSourcePosition); try_block->statements()->Add(final_return, zone());
try_block->statements()->Add(final_return, zone());
// For AsyncGenerators, a top-level catch block will reject the Promise. // For AsyncGenerators, a top-level catch block will reject the Promise.
Scope* catch_scope = NewHiddenCatchScopeWithParent(scope()); Scope* catch_scope = NewHiddenCatchScopeWithParent(scope());
ZoneList<Expression*>* args = new (zone()) ZoneList<Expression*>(2, zone()); ZoneList<Expression*>* reject_args =
args->Add(factory()->NewVariableProxy( new (zone()) ZoneList<Expression*>(2, zone());
function_state_->generator_object_variable()), reject_args->Add(
zone()); factory()->NewVariableProxy(function_state_->generator_object_variable()),
args->Add(factory()->NewVariableProxy(catch_scope->catch_variable()), zone());
zone()); reject_args->Add(factory()->NewVariableProxy(catch_scope->catch_variable()),
zone());
Expression* call = factory()->NewCallRuntime( Expression* reject_call = factory()->NewCallRuntime(
Runtime::kInlineAsyncGeneratorReject, args, kNoSourcePosition); Runtime::kInlineAsyncGeneratorReject, reject_args, kNoSourcePosition);
Block* catch_block = IgnoreCompletion( Block* catch_block = IgnoreCompletion(
factory()->NewReturnStatement(call, kNoSourcePosition)); factory()->NewReturnStatement(reject_call, kNoSourcePosition));
TryStatement* try_catch = factory()->NewTryCatchStatementForAsyncAwait( TryStatement* try_catch = factory()->NewTryCatchStatementForAsyncAwait(
try_block, catch_scope, catch_block, kNoSourcePosition); try_block, catch_scope, catch_block, kNoSourcePosition);
try_block = factory()->NewBlock(nullptr, 1, false, kNoSourcePosition); try_block = factory()->NewBlock(nullptr, 1, false, kNoSourcePosition);
try_block->statements()->Add(try_catch, zone()); try_block->statements()->Add(try_catch, zone());
} else {
Statement* final_return = factory()->NewReturnStatement(
BuildIteratorResult(nullptr, true), kNoSourcePosition);
try_block->statements()->Add(final_return, zone());
}
Block* finally_block = Block* finally_block =
factory()->NewBlock(nullptr, 1, false, kNoSourcePosition); factory()->NewBlock(nullptr, 1, false, kNoSourcePosition);
ZoneList<Expression*>* args = new (zone()) ZoneList<Expression*>(1, zone()); ZoneList<Expression*>* close_args =
new (zone()) ZoneList<Expression*>(1, zone());
VariableProxy* call_proxy = VariableProxy* call_proxy =
factory()->NewVariableProxy(function_state_->generator_object_variable()); factory()->NewVariableProxy(function_state_->generator_object_variable());
args->Add(call_proxy, zone()); close_args->Add(call_proxy, zone());
Expression* call = factory()->NewCallRuntime(Runtime::kInlineGeneratorClose, Expression* close_call = factory()->NewCallRuntime(
args, kNoSourcePosition); Runtime::kInlineGeneratorClose, close_args, kNoSourcePosition);
finally_block->statements()->Add( finally_block->statements()->Add(
factory()->NewExpressionStatement(call, kNoSourcePosition), zone()); factory()->NewExpressionStatement(close_call, kNoSourcePosition), zone());
body->Add(factory()->NewTryFinallyStatement(try_block, finally_block, body->Add(factory()->NewTryFinallyStatement(try_block, finally_block,
kNoSourcePosition), kNoSourcePosition),
......
...@@ -352,6 +352,9 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { ...@@ -352,6 +352,9 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
void ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind, void ParseAndRewriteGeneratorFunctionBody(int pos, FunctionKind kind,
ZoneList<Statement*>* body, ZoneList<Statement*>* body,
bool* ok); bool* ok);
void ParseAndRewriteAsyncGeneratorFunctionBody(int pos, FunctionKind kind,
ZoneList<Statement*>* body,
bool* ok);
void CreateFunctionNameAssignment(const AstRawString* function_name, int pos, void CreateFunctionNameAssignment(const AstRawString* function_name, int pos,
FunctionLiteral::FunctionType function_type, FunctionLiteral::FunctionType function_type,
DeclarationScope* function_scope, DeclarationScope* function_scope,
...@@ -874,8 +877,6 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { ...@@ -874,8 +877,6 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
Expression* BuildUnaryExpression(Expression* expression, Token::Value op, Expression* BuildUnaryExpression(Expression* expression, Token::Value op,
int pos); int pos);
Expression* BuildIteratorResult(Expression* value, bool done);
// Generate AST node that throws a ReferenceError with the given type. // Generate AST node that throws a ReferenceError with the given type.
V8_INLINE Expression* NewThrowReferenceError( V8_INLINE Expression* NewThrowReferenceError(
MessageTemplate::Template message, int pos) { MessageTemplate::Template message, int pos) {
......
...@@ -1076,6 +1076,10 @@ class PreParser : public ParserBase<PreParser> { ...@@ -1076,6 +1076,10 @@ class PreParser : public ParserBase<PreParser> {
int pos, FunctionKind kind, PreParserStatementList body, bool* ok) { int pos, FunctionKind kind, PreParserStatementList body, bool* ok) {
ParseStatementList(body, Token::RBRACE, ok); ParseStatementList(body, Token::RBRACE, ok);
} }
V8_INLINE void ParseAndRewriteAsyncGeneratorFunctionBody(
int pos, FunctionKind kind, PreParserStatementList body, bool* ok) {
ParseStatementList(body, Token::RBRACE, ok);
}
V8_INLINE void CreateFunctionNameAssignment( V8_INLINE void CreateFunctionNameAssignment(
PreParserIdentifier function_name, int pos, PreParserIdentifier function_name, int pos,
FunctionLiteral::FunctionType function_type, FunctionLiteral::FunctionType function_type,
...@@ -1289,11 +1293,6 @@ class PreParser : public ParserBase<PreParser> { ...@@ -1289,11 +1293,6 @@ class PreParser : public ParserBase<PreParser> {
return PreParserExpression::Default(); return PreParserExpression::Default();
} }
V8_INLINE PreParserExpression BuildIteratorResult(PreParserExpression value,
bool done) {
return PreParserExpression::Default();
}
V8_INLINE PreParserStatement V8_INLINE PreParserStatement
BuildInitializationBlock(DeclarationParsingResult* parsing_result, BuildInitializationBlock(DeclarationParsingResult* parsing_result,
ZoneList<const AstRawString*>* names, bool* ok) { ZoneList<const AstRawString*>* names, bool* ok) {
......
...@@ -14,9 +14,9 @@ snippet: " ...@@ -14,9 +14,9 @@ snippet: "
} }
f(); f();
" "
frame size: 26 frame size: 25
parameter count: 1 parameter count: 1
bytecode array length: 703 bytecode array length: 676
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(11), B(Mov), R(new_target), R(11),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -27,40 +27,40 @@ bytecodes: [ ...@@ -27,40 +27,40 @@ bytecodes: [
B(Star), R(12), B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(Mov), R(closure), R(14), B(Mov), R(closure), R(13),
B(Mov), R(this), R(15), B(Mov), R(this), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
B(Star), R(2), B(Star), R(2),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(14), B(Star), R(13),
B(CallJSRuntime), U8(%async_function_promise_create), R(14), U8(1), B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
B(Star), R(7), B(Star), R(7),
B(Mov), R(context), R(16), B(Mov), R(context), R(15),
B(Mov), R(2), R(11), B(Mov), R(2), R(11),
B(Mov), R(context), R(17), B(Mov), R(context), R(16),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20), B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17), /* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(22), U8(4), U8(8), B(LdaNamedProperty), R(21), U8(4), U8(8),
B(JumpIfUndefined), U8(17), B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15), B(JumpIfNull), U8(15),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(10), B(CallProperty0), R(22), R(21), U8(10),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(22), U8(5), U8(4), B(LdaNamedProperty), R(21), U8(5), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(6), B(CallProperty0), R(22), R(21), U8(6),
B(Star), R(23), B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(23), U8(1), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
B(Star), R(4), B(Star), R(4),
B(Ldar), R(12), B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
...@@ -68,41 +68,37 @@ bytecodes: [ ...@@ -68,41 +68,37 @@ bytecodes: [
/* 43 E> */ B(TestEqualStrictNoFeedback), R(12), /* 43 E> */ B(TestEqualStrictNoFeedback), R(12),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kAbort), R(22), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
/* 40 S> */ B(LdaUndefined), /* 40 S> */ B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(4), U8(7), U8(14), B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(24), B(Star), R(23),
B(CallProperty0), R(24), R(4), U8(12), B(CallProperty0), R(23), R(4), U8(12),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4),
B(LdaZero), B(LdaZero),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
/* 40 E> */ B(ReThrow), /* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(19),
B(LdaZero), B(LdaZero),
B(Star), R(18), B(Star), R(17),
B(Mov), R(21), R(18),
B(Jump), U8(98), B(Jump), U8(98),
B(Mov), R(22), R(5), B(Mov), R(21), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(22), U8(1), /* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
...@@ -117,213 +113,205 @@ bytecodes: [ ...@@ -117,213 +113,205 @@ bytecodes: [
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(JumpLoop), U8(141), I8(0), B(JumpLoop), U8(132), I8(0),
B(Jump), U8(40), B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(13),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(20), B(TestEqualStrict), R(6), U8(20),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
B(PopContext), R(22), B(PopContext), R(21),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(18), B(Star), R(17),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(19),
B(LdaSmi), I8(1),
B(Star), R(18), B(Star), R(18),
B(LdaSmi), I8(1),
B(Star), R(17),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(20), B(Star), R(19),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(6), U8(21), B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrue), U8(247), B(JumpIfTrue), U8(229),
B(LdaNamedProperty), R(4), U8(14), U8(22), B(LdaNamedProperty), R(4), U8(14), U8(22),
B(Star), R(9), B(Star), R(9),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(236), B(Jump), U8(218),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(25), B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(133), B(JumpIfFalse), U8(124),
B(Ldar), R(9), B(Ldar), R(9),
B(TestTypeOf), U8(5), B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(21), B(Star), R(20),
B(LdaConstant), U8(15), B(LdaConstant), U8(15),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(21), B(Mov), R(context), R(20),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(Mov), R(9), R(24), B(Mov), R(9), R(23),
B(Mov), R(4), R(25), B(Mov), R(4), R(24),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(24), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(4),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(222), B(Mov), R(21), R(14),
B(Ldar), R(22), B(Jump), U8(213),
B(Ldar), R(21),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(18),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(PopContext), R(22), B(PopContext), R(21),
B(Jump), U8(98), B(Jump), U8(89),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(21), B(Star), R(20),
B(Mov), R(9), R(23), B(Mov), R(9), R(22),
B(Mov), R(4), R(24), B(Mov), R(4), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Star), R(23), B(Star), R(22),
B(Mov), R(2), R(22), B(Mov), R(2), R(21),
B(Mov), R(7), R(24), B(Mov), R(7), R(23),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(4),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Mov), R(7), R(21), B(Mov), R(7), R(20),
B(SuspendGenerator), R(11), R(0), U8(21), U8(2), B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
B(Ldar), R(21), B(Ldar), R(20),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(21), B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(21), B(Star), R(20),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(21), B(Ldar), R(20),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(23),
B(Mov), R(21), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(20), R(14),
B(Jump), U8(118), B(Jump), U8(118),
B(Mov), R(21), R(10), B(Mov), R(20), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20), B(Ldar), R(19),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(18), B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0),
B(Jump), U8(13), B(Jump), U8(13),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(19), R(15), B(Mov), R(18), R(14),
B(Jump), U8(83), B(Jump), U8(83),
B(Ldar), R(19), B(Ldar), R(18),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(18), B(Star), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(20), B(Star), R(19),
B(Mov), R(7), R(19), B(Mov), R(7), R(18),
B(CallJSRuntime), U8(%promise_resolve), R(18), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(59), B(Jump), U8(59),
B(Jump), U8(45), B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(12), U8(23),
B(Star), R(17), B(Star), R(17),
B(Ldar), R(closure),
B(CreateCatchContext), R(17), U8(12), U8(23),
B(Star), R(16),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(17), B(Ldar), R(16),
B(PushContext), R(18), B(PushContext), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(19), B(Star), R(18),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21), B(Star), R(20),
B(LdaFalse), B(LdaFalse),
B(Star), R(22), B(Star), R(21),
B(Mov), R(7), R(20), B(Mov), R(7), R(19),
B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(4), B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
B(PopContext), R(18), B(PopContext), R(17),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(14), B(Star), R(14),
B(LdaSmi), I8(1),
B(Star), R(13),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(16), B(Star), R(15),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(17), B(Star), R(16),
B(Mov), R(7), R(18), B(Mov), R(7), R(17),
B(CallJSRuntime), U8(%async_function_promise_release), R(17), U8(2), B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
B(Ldar), R(16), B(Ldar), R(15),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(14), B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0),
B(Jump), U8(8), B(Jump), U8(8),
B(Ldar), R(15), B(Ldar), R(14),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
B(Ldar), R(15), B(Ldar), R(14),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [102], Smi [102],
Smi [391], Smi [382],
Smi [495], Smi [477],
TUPLE2_TYPE, TUPLE2_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [56], Smi [56],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
...@@ -331,10 +319,10 @@ constant pool: [ ...@@ -331,10 +319,10 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24], Smi [15],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [24], Smi [15],
Smi [7], Smi [7],
Smi [6], Smi [6],
Smi [14], Smi [14],
...@@ -343,11 +331,11 @@ constant pool: [ ...@@ -343,11 +331,11 @@ constant pool: [
Smi [9], Smi [9],
] ]
handlers: [ handlers: [
[62, 658, 664], [62, 631, 637],
[65, 613, 615], [65, 586, 588],
[71, 303, 309], [71, 294, 300],
[74, 263, 265], [74, 254, 256],
[370, 452, 454], [361, 434, 436],
] ]
--- ---
...@@ -357,9 +345,9 @@ snippet: " ...@@ -357,9 +345,9 @@ snippet: "
} }
f(); f();
" "
frame size: 26 frame size: 25
parameter count: 1 parameter count: 1
bytecode array length: 731 bytecode array length: 704
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(11), B(Mov), R(new_target), R(11),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -370,40 +358,40 @@ bytecodes: [ ...@@ -370,40 +358,40 @@ bytecodes: [
B(Star), R(12), B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(Mov), R(closure), R(14), B(Mov), R(closure), R(13),
B(Mov), R(this), R(15), B(Mov), R(this), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
B(Star), R(2), B(Star), R(2),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(14), B(Star), R(13),
B(CallJSRuntime), U8(%async_function_promise_create), R(14), U8(1), B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
B(Star), R(7), B(Star), R(7),
B(Mov), R(context), R(16), B(Mov), R(context), R(15),
B(Mov), R(2), R(11), B(Mov), R(2), R(11),
B(Mov), R(context), R(17), B(Mov), R(context), R(16),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20), B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17), /* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(22), U8(4), U8(8), B(LdaNamedProperty), R(21), U8(4), U8(8),
B(JumpIfUndefined), U8(17), B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15), B(JumpIfNull), U8(15),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(10), B(CallProperty0), R(22), R(21), U8(10),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(22), U8(5), U8(4), B(LdaNamedProperty), R(21), U8(5), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(6), B(CallProperty0), R(22), R(21), U8(6),
B(Star), R(23), B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(23), U8(1), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
B(Star), R(4), B(Star), R(4),
B(Ldar), R(12), B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
...@@ -411,41 +399,37 @@ bytecodes: [ ...@@ -411,41 +399,37 @@ bytecodes: [
/* 43 E> */ B(TestEqualStrictNoFeedback), R(12), /* 43 E> */ B(TestEqualStrictNoFeedback), R(12),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kAbort), R(22), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
/* 40 S> */ B(LdaUndefined), /* 40 S> */ B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(4), U8(7), U8(14), B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(24), B(Star), R(23),
B(CallProperty0), R(24), R(4), U8(12), B(CallProperty0), R(23), R(4), U8(12),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4),
B(LdaZero), B(LdaZero),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
/* 40 E> */ B(ReThrow), /* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(19),
B(LdaZero), B(LdaZero),
B(Star), R(18), B(Star), R(17),
B(Mov), R(21), R(18),
B(Jump), U8(101), B(Jump), U8(101),
B(Mov), R(22), R(5), B(Mov), R(21), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(22), U8(1), /* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
...@@ -459,226 +443,218 @@ bytecodes: [ ...@@ -459,226 +443,218 @@ bytecodes: [
/* 23 E> */ B(StackCheck), /* 23 E> */ B(StackCheck),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
/* 56 S> */ B(LdaSmi), I8(1), /* 56 S> */ B(LdaSmi), I8(1),
B(Star), R(18), B(Star), R(17),
B(Mov), R(0), R(19), B(Mov), R(0), R(18),
B(Jump), U8(54), B(Jump), U8(54),
B(Jump), U8(40), B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(13),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(20), B(TestEqualStrict), R(6), U8(20),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
B(PopContext), R(22), B(PopContext), R(21),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(18), B(Star), R(17),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(19),
B(LdaSmi), I8(2),
B(Star), R(18), B(Star), R(18),
B(LdaSmi), I8(2),
B(Star), R(17),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(20), B(Star), R(19),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(6), U8(21), B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrue), U8(247), B(JumpIfTrue), U8(229),
B(LdaNamedProperty), R(4), U8(14), U8(22), B(LdaNamedProperty), R(4), U8(14), U8(22),
B(Star), R(9), B(Star), R(9),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(236), B(Jump), U8(218),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(25), B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(133), B(JumpIfFalse), U8(124),
B(Ldar), R(9), B(Ldar), R(9),
B(TestTypeOf), U8(5), B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(21), B(Star), R(20),
B(LdaConstant), U8(15), B(LdaConstant), U8(15),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(21), B(Mov), R(context), R(20),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(Mov), R(9), R(24), B(Mov), R(9), R(23),
B(Mov), R(4), R(25), B(Mov), R(4), R(24),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(24), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(4),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(231), B(Mov), R(21), R(14),
B(Ldar), R(22), B(Jump), U8(222),
B(Ldar), R(21),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(18),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(PopContext), R(22), B(PopContext), R(21),
B(Jump), U8(98), B(Jump), U8(89),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(21), B(Star), R(20),
B(Mov), R(9), R(23), B(Mov), R(9), R(22),
B(Mov), R(4), R(24), B(Mov), R(4), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Star), R(23), B(Star), R(22),
B(Mov), R(2), R(22), B(Mov), R(2), R(21),
B(Mov), R(7), R(24), B(Mov), R(7), R(23),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(4),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Mov), R(7), R(21), B(Mov), R(7), R(20),
B(SuspendGenerator), R(11), R(0), U8(21), U8(2), B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
B(Ldar), R(21), B(Ldar), R(20),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(21), B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(21), B(Star), R(20),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(21), B(Ldar), R(20),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(23),
B(Mov), R(21), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(20), R(14),
B(Jump), U8(127), B(Jump), U8(127),
B(Mov), R(21), R(10), B(Mov), R(20), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20), B(Ldar), R(19),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(18), B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0),
B(Jump), U8(22), B(Jump), U8(22),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(19), R(15), B(Mov), R(18), R(14),
B(Jump), U8(92), B(Jump), U8(92),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(14), B(Star), R(13),
B(Mov), R(19), R(15), B(Mov), R(18), R(14),
B(Jump), U8(83), B(Jump), U8(83),
B(Ldar), R(19), B(Ldar), R(18),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(18), B(Star), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(20), B(Star), R(19),
B(Mov), R(7), R(19), B(Mov), R(7), R(18),
B(CallJSRuntime), U8(%promise_resolve), R(18), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(59), B(Jump), U8(59),
B(Jump), U8(45), B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(12), U8(24),
B(Star), R(17), B(Star), R(17),
B(Ldar), R(closure),
B(CreateCatchContext), R(17), U8(12), U8(24),
B(Star), R(16),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(17), B(Ldar), R(16),
B(PushContext), R(18), B(PushContext), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(19), B(Star), R(18),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21), B(Star), R(20),
B(LdaFalse), B(LdaFalse),
B(Star), R(22), B(Star), R(21),
B(Mov), R(7), R(20), B(Mov), R(7), R(19),
B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(4), B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
B(PopContext), R(18), B(PopContext), R(17),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(15),
B(LdaSmi), I8(2),
B(Star), R(14), B(Star), R(14),
B(LdaSmi), I8(2),
B(Star), R(13),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(16), B(Star), R(15),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(17), B(Star), R(16),
B(Mov), R(7), R(18), B(Mov), R(7), R(17),
B(CallJSRuntime), U8(%async_function_promise_release), R(17), U8(2), B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
B(Ldar), R(16), B(Ldar), R(15),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(14), B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(25), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(25), U8(3), I8(0),
B(Jump), U8(24), B(Jump), U8(24),
B(Ldar), R(15), B(Ldar), R(14),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(17), B(Star), R(16),
B(Mov), R(7), R(18), B(Mov), R(7), R(17),
B(Mov), R(15), R(19), B(Mov), R(14), R(18),
B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(16), U8(3),
B(Ldar), R(7), B(Ldar), R(7),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
B(Ldar), R(15), B(Ldar), R(14),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [102], Smi [102],
Smi [394], Smi [385],
Smi [498], Smi [480],
TUPLE2_TYPE, TUPLE2_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [56], Smi [56],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
...@@ -686,10 +662,10 @@ constant pool: [ ...@@ -686,10 +662,10 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24], Smi [15],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [24], Smi [15],
Smi [7], Smi [7],
Smi [6], Smi [6],
Smi [14], Smi [14],
...@@ -700,11 +676,11 @@ constant pool: [ ...@@ -700,11 +676,11 @@ constant pool: [
Smi [25], Smi [25],
] ]
handlers: [ handlers: [
[62, 670, 676], [62, 643, 649],
[65, 625, 627], [65, 598, 600],
[71, 306, 312], [71, 297, 303],
[74, 266, 268], [74, 257, 259],
[373, 455, 457], [364, 437, 439],
] ]
--- ---
...@@ -717,9 +693,9 @@ snippet: " ...@@ -717,9 +693,9 @@ snippet: "
} }
f(); f();
" "
frame size: 26 frame size: 25
parameter count: 1 parameter count: 1
bytecode array length: 721 bytecode array length: 694
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(11), B(Mov), R(new_target), R(11),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -730,40 +706,40 @@ bytecodes: [ ...@@ -730,40 +706,40 @@ bytecodes: [
B(Star), R(12), B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(Mov), R(closure), R(14), B(Mov), R(closure), R(13),
B(Mov), R(this), R(15), B(Mov), R(this), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
B(Star), R(2), B(Star), R(2),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(14), B(Star), R(13),
B(CallJSRuntime), U8(%async_function_promise_create), R(14), U8(1), B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
B(Star), R(7), B(Star), R(7),
B(Mov), R(context), R(16), B(Mov), R(context), R(15),
B(Mov), R(2), R(11), B(Mov), R(2), R(11),
B(Mov), R(context), R(17), B(Mov), R(context), R(16),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20), B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17), /* 43 S> */ B(CreateArrayLiteral), U8(3), U8(3), U8(17),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(22), U8(4), U8(8), B(LdaNamedProperty), R(21), U8(4), U8(8),
B(JumpIfUndefined), U8(17), B(JumpIfUndefined), U8(17),
B(JumpIfNull), U8(15), B(JumpIfNull), U8(15),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(10), B(CallProperty0), R(22), R(21), U8(10),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
B(LdaNamedProperty), R(22), U8(5), U8(4), B(LdaNamedProperty), R(21), U8(5), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(22), U8(6), B(CallProperty0), R(22), R(21), U8(6),
B(Star), R(23), B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(23), U8(1), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
B(Star), R(4), B(Star), R(4),
B(Ldar), R(12), B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
...@@ -771,41 +747,37 @@ bytecodes: [ ...@@ -771,41 +747,37 @@ bytecodes: [
/* 43 E> */ B(TestEqualStrictNoFeedback), R(12), /* 43 E> */ B(TestEqualStrictNoFeedback), R(12),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kAbort), R(22), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
/* 40 S> */ B(LdaUndefined), /* 40 S> */ B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(LdaNamedProperty), R(4), U8(7), U8(14), B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(24), B(Star), R(23),
B(CallProperty0), R(24), R(4), U8(12), B(CallProperty0), R(23), R(4), U8(12),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4),
B(LdaZero), B(LdaZero),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
/* 40 E> */ B(ReThrow), /* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(19),
B(LdaZero), B(LdaZero),
B(Star), R(18), B(Star), R(17),
B(Mov), R(21), R(18),
B(Jump), U8(116), B(Jump), U8(116),
B(Mov), R(22), R(5), B(Mov), R(21), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(22), U8(1), /* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
...@@ -828,213 +800,205 @@ bytecodes: [ ...@@ -828,213 +800,205 @@ bytecodes: [
/* 103 S> */ B(Jump), U8(8), /* 103 S> */ B(Jump), U8(8),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(JumpLoop), U8(159), I8(0), B(JumpLoop), U8(150), I8(0),
B(Jump), U8(40), B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(13),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(22), B(TestEqualStrict), R(6), U8(22),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(23), B(Star), R(22),
B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
B(PopContext), R(22), B(PopContext), R(21),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(18), B(Star), R(17),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(19),
B(LdaSmi), I8(1),
B(Star), R(18), B(Star), R(18),
B(LdaSmi), I8(1),
B(Star), R(17),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(20), B(Star), R(19),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(6), U8(23), B(TestEqualStrict), R(6), U8(23),
B(JumpIfTrue), U8(247), B(JumpIfTrue), U8(229),
B(LdaNamedProperty), R(4), U8(14), U8(24), B(LdaNamedProperty), R(4), U8(14), U8(24),
B(Star), R(9), B(Star), R(9),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(236), B(Jump), U8(218),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(27), B(TestEqualStrict), R(6), U8(27),
B(JumpIfFalse), U8(133), B(JumpIfFalse), U8(124),
B(Ldar), R(9), B(Ldar), R(9),
B(TestTypeOf), U8(5), B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(21), B(Star), R(20),
B(LdaConstant), U8(15), B(LdaConstant), U8(15),
B(Star), R(22), B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(21), B(Mov), R(context), R(20),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(22), B(Star), R(21),
B(Mov), R(9), R(24), B(Mov), R(9), R(23),
B(Mov), R(4), R(25), B(Mov), R(4), R(24),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(24), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2),
B(Star), R(24), B(Star), R(23),
B(Mov), R(2), R(23), B(Mov), R(2), R(22),
B(Mov), R(7), R(25), B(Mov), R(7), R(24),
B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(4), B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(4),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Mov), R(7), R(22), B(Mov), R(7), R(21),
B(SuspendGenerator), R(11), R(0), U8(22), U8(2), B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
B(Ldar), R(22), B(Ldar), R(21),
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(22), B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(22), B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(22), B(Ldar), R(21),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(222), B(Mov), R(21), R(14),
B(Ldar), R(22), B(Jump), U8(213),
B(Ldar), R(21),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21), B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(12), U8(18),
B(Star), R(20),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(20),
B(PushContext), R(22), B(PushContext), R(21),
B(PopContext), R(22), B(PopContext), R(21),
B(Jump), U8(98), B(Jump), U8(89),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(21), B(Star), R(20),
B(Mov), R(9), R(23), B(Mov), R(9), R(22),
B(Mov), R(4), R(24), B(Mov), R(4), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Star), R(23), B(Star), R(22),
B(Mov), R(2), R(22), B(Mov), R(2), R(21),
B(Mov), R(7), R(24), B(Mov), R(7), R(23),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(4), B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(4),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Mov), R(7), R(21), B(Mov), R(7), R(20),
B(SuspendGenerator), R(11), R(0), U8(21), U8(2), B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
B(Ldar), R(21), B(Ldar), R(20),
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(21), B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(21), B(Star), R(20),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(21), B(Ldar), R(20),
B(ReThrow), B(ReThrow),
B(LdaTrue),
B(Star), R(23),
B(Mov), R(21), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(20), R(14),
B(Jump), U8(118), B(Jump), U8(118),
B(Mov), R(21), R(10), B(Mov), R(20), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20), B(Ldar), R(19),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(18), B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0),
B(Jump), U8(13), B(Jump), U8(13),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(19), R(15), B(Mov), R(18), R(14),
B(Jump), U8(83), B(Jump), U8(83),
B(Ldar), R(19), B(Ldar), R(18),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(18), B(Star), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(20), B(Star), R(19),
B(Mov), R(7), R(19), B(Mov), R(7), R(18),
B(CallJSRuntime), U8(%promise_resolve), R(18), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(59), B(Jump), U8(59),
B(Jump), U8(45), B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(12), U8(23),
B(Star), R(17), B(Star), R(17),
B(Ldar), R(closure),
B(CreateCatchContext), R(17), U8(12), U8(23),
B(Star), R(16),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(17), B(Ldar), R(16),
B(PushContext), R(18), B(PushContext), R(17),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(19), B(Star), R(18),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21), B(Star), R(20),
B(LdaFalse), B(LdaFalse),
B(Star), R(22), B(Star), R(21),
B(Mov), R(7), R(20), B(Mov), R(7), R(19),
B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(4), B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
B(PopContext), R(18), B(PopContext), R(17),
B(LdaZero), B(LdaZero),
B(Star), R(14), B(Star), R(13),
B(Mov), R(7), R(15), B(Mov), R(7), R(14),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(14), B(Star), R(13),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(14), B(Star), R(14),
B(LdaSmi), I8(1),
B(Star), R(13),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(16), B(Star), R(15),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(17), B(Star), R(16),
B(Mov), R(7), R(18), B(Mov), R(7), R(17),
B(CallJSRuntime), U8(%async_function_promise_release), R(17), U8(2), B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
B(Ldar), R(16), B(Ldar), R(15),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(14), B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0),
B(Jump), U8(8), B(Jump), U8(8),
B(Ldar), R(15), B(Ldar), R(14),
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
B(Ldar), R(15), B(Ldar), R(14),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [102], Smi [102],
Smi [409], Smi [400],
Smi [513], Smi [495],
TUPLE2_TYPE, TUPLE2_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [56], Smi [56],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
...@@ -1042,10 +1006,10 @@ constant pool: [ ...@@ -1042,10 +1006,10 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24], Smi [15],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [24], Smi [15],
Smi [7], Smi [7],
Smi [6], Smi [6],
Smi [14], Smi [14],
...@@ -1054,11 +1018,11 @@ constant pool: [ ...@@ -1054,11 +1018,11 @@ constant pool: [
Smi [9], Smi [9],
] ]
handlers: [ handlers: [
[62, 676, 682], [62, 649, 655],
[65, 631, 633], [65, 604, 606],
[71, 321, 327], [71, 312, 318],
[74, 281, 283], [74, 272, 274],
[388, 470, 472], [379, 452, 454],
] ]
--- ---
......
...@@ -641,9 +641,9 @@ snippet: " ...@@ -641,9 +641,9 @@ snippet: "
} }
f([1, 2, 3]); f([1, 2, 3]);
" "
frame size: 24 frame size: 20
parameter count: 2 parameter count: 2
bytecode array length: 434 bytecode array length: 370
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(11), B(Mov), R(new_target), R(11),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -654,58 +654,52 @@ bytecodes: [ ...@@ -654,58 +654,52 @@ bytecodes: [
B(Star), R(12), B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(CreateFunctionContext), U8(1), B(CreateFunctionContext), U8(1),
B(PushContext), R(14), B(PushContext), R(13),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(15), B(Mov), R(closure), R(14),
B(Mov), R(this), R(16), B(Mov), R(this), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(15), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2),
B(Star), R(3), B(Star), R(3),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(11),
B(Mov), R(context), R(17),
B(LdaZero), B(LdaZero),
B(Mov), R(3), R(18), B(Mov), R(3), R(11),
/* 11 E> */ B(SuspendGenerator), R(11), R(0), U8(18), U8(0), B(Mov), R(3), R(14),
B(Ldar), R(18), /* 11 E> */ B(SuspendGenerator), R(11), R(0), U8(14), U8(0),
B(Ldar), R(14),
/* 55 S> */ B(Return), /* 55 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(18), B(RestoreGeneratorRegisters), R(11), R(0), U8(14),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(18), B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(18), B(Ldar), R(14),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(11), U8(1),
B(Star), R(20), B(Ldar), R(14),
B(Mov), R(18), R(19), /* 55 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(19), U8(2),
B(Star), R(16),
B(LdaZero),
B(Star), R(15),
B(JumpConstant), U8(12),
B(LdaZero), B(LdaZero),
B(Star), R(7), B(Star), R(7),
B(Mov), R(context), R(20), B(Mov), R(context), R(16),
B(Mov), R(context), R(21), B(Mov), R(context), R(17),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4), /* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22), B(Star), R(18),
B(LdaNamedProperty), R(22), U8(3), U8(3), B(LdaNamedProperty), R(18), U8(3), U8(3),
B(Star), R(23), B(Star), R(19),
B(CallProperty0), R(23), R(22), U8(5), B(CallProperty0), R(19), R(18), U8(5),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(5), B(Star), R(5),
/* 30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(9), /* 30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(9),
B(Star), R(22), B(Star), R(18),
B(CallProperty0), R(22), R(5), U8(7), B(CallProperty0), R(18), R(5), U8(7),
B(Star), R(6), B(Star), R(6),
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1), /* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
...@@ -725,29 +719,29 @@ bytecodes: [ ...@@ -725,29 +719,29 @@ bytecodes: [
B(Star), R(7), B(Star), R(7),
B(JumpLoop), U8(53), I8(0), B(JumpLoop), U8(53), I8(0),
B(Jump), U8(36), B(Jump), U8(36),
B(Star), R(22), B(Star), R(18),
B(Ldar), R(closure), B(Ldar), R(closure),
/* 50 E> */ B(CreateCatchContext), R(22), U8(7), U8(8), /* 50 E> */ B(CreateCatchContext), R(18), U8(7), U8(8),
B(PushContext), R(22), B(PushContext), R(18),
B(Star), R(21), B(Star), R(17),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(15), B(TestEqualStrict), R(7), U8(15),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(7), B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(23), B(Star), R(19),
B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(19), U8(1),
B(PopContext), R(22), B(PopContext), R(18),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(18), B(Star), R(14),
B(Jump), U8(7), B(Jump), U8(7),
B(Star), R(19), B(Star), R(15),
B(LdaZero), B(LdaZero),
B(Star), R(18), B(Star), R(14),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(20), B(Star), R(16),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(7), U8(16), B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104), B(JumpIfTrue), U8(104),
...@@ -764,77 +758,50 @@ bytecodes: [ ...@@ -764,77 +758,50 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(21), B(Star), R(17),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(22), B(Star), R(18),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(21), B(Mov), R(context), R(17),
B(Mov), R(9), R(22), B(Mov), R(9), R(18),
B(Mov), R(5), R(23), B(Mov), R(5), R(19),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(18), U8(2),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(22), B(Star), R(18),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(7), U8(11), B(CreateCatchContext), R(18), U8(7), U8(11),
B(Star), R(21), B(Star), R(17),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(21), B(Ldar), R(17),
B(PushContext), R(22), B(PushContext), R(18),
B(PopContext), R(22), B(PopContext), R(18),
B(Jump), U8(27), B(Jump), U8(27),
B(Mov), R(9), R(21), B(Mov), R(9), R(17),
B(Mov), R(5), R(22), B(Mov), R(5), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(20), B(Ldar), R(16),
B(SetPendingMessage), B(SetPendingMessage),
B(LdaZero), B(LdaZero),
B(TestEqualStrictNoFeedback), R(18), B(TestEqualStrictNoFeedback), R(14),
B(JumpIfFalse), U8(11), B(JumpIfFalse), U8(5),
B(LdaSmi), I8(1),
B(Star), R(15),
B(Mov), R(19), R(16),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(18),
B(LdaTrue),
B(Star), R(19),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(16),
B(LdaZero),
B(Star), R(15),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(15),
B(Jump), U8(8),
B(Star), R(16),
B(LdaSmi), I8(1),
B(Star), R(15),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(3), U8(1),
B(Ldar), R(17),
B(SetPendingMessage),
B(Ldar), R(15), B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(16),
/* 55 S> */ B(Return),
B(Ldar), R(16),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(11), U8(1),
B(Ldar), R(14),
/* 55 S> */ B(Return), /* 55 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [55], Smi [53],
Smi [24], Smi [14],
Smi [7], Smi [7],
SYMBOL_TYPE, SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
...@@ -845,15 +812,11 @@ constant pool: [ ...@@ -845,15 +812,11 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [295],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[60, 395, 401], [108, 226, 232],
[120, 238, 244], [111, 190, 192],
[123, 202, 204], [292, 302, 304],
[304, 314, 316],
] ]
--- ---
...@@ -863,9 +826,9 @@ snippet: " ...@@ -863,9 +826,9 @@ snippet: "
} }
f([1, 2, 3]); f([1, 2, 3]);
" "
frame size: 24 frame size: 20
parameter count: 2 parameter count: 2
bytecode array length: 528 bytecode array length: 453
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(10), B(Mov), R(new_target), R(10),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -876,52 +839,46 @@ bytecodes: [ ...@@ -876,52 +839,46 @@ bytecodes: [
B(Star), R(11), B(Star), R(11),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(13), B(Star), R(12),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(CreateFunctionContext), U8(1), B(CreateFunctionContext), U8(1),
B(PushContext), R(13), B(PushContext), R(12),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(14), B(Mov), R(closure), R(13),
B(Mov), R(this), R(15), B(Mov), R(this), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
B(Star), R(2), B(Star), R(2),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(10),
B(Mov), R(context), R(16),
B(LdaZero), B(LdaZero),
B(Mov), R(2), R(17), B(Mov), R(2), R(10),
/* 11 E> */ B(SuspendGenerator), R(10), R(0), U8(17), U8(0), B(Mov), R(2), R(13),
B(Ldar), R(17), /* 11 E> */ B(SuspendGenerator), R(10), R(0), U8(13), U8(0),
B(Ldar), R(13),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(RestoreGeneratorRegisters), R(10), R(0), U8(17), B(RestoreGeneratorRegisters), R(10), R(0), U8(13),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(Star), R(17), B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(17), B(Ldar), R(13),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Star), R(19), B(Ldar), R(13),
B(Mov), R(17), R(18), /* 49 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(JumpConstant), U8(18),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(context), R(19), B(Mov), R(context), R(15),
B(Mov), R(context), R(20), B(Mov), R(context), R(16),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4), /* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21), B(Star), R(17),
B(LdaNamedProperty), R(21), U8(4), U8(3), B(LdaNamedProperty), R(17), U8(4), U8(3),
B(Star), R(22), B(Star), R(18),
B(CallProperty0), R(22), R(21), U8(5), B(CallProperty0), R(18), R(17), U8(5),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4), B(Star), R(4),
...@@ -931,18 +888,18 @@ bytecodes: [ ...@@ -931,18 +888,18 @@ bytecodes: [
/* 35 E> */ B(TestEqualStrictNoFeedback), R(11), /* 35 E> */ B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(21), B(Star), R(17),
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(17), U8(1),
/* 30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(9), /* 30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(9),
B(Star), R(21), B(Star), R(17),
B(CallProperty0), R(21), R(4), U8(7), B(CallProperty0), R(17), R(4), U8(7),
B(Star), R(5), B(Star), R(5),
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1), /* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(7), U8(11), B(LdaNamedProperty), R(5), U8(7), U8(11),
B(JumpIfToBooleanTrue), U8(89), B(JumpIfToBooleanTrue), U8(79),
B(LdaNamedProperty), R(5), U8(8), U8(13), B(LdaNamedProperty), R(5), U8(8), U8(13),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
...@@ -950,59 +907,54 @@ bytecodes: [ ...@@ -950,59 +907,54 @@ bytecodes: [
B(Mov), R(7), R(3), B(Mov), R(7), R(3),
/* 21 E> */ B(StackCheck), /* 21 E> */ B(StackCheck),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
/* 40 S> */ B(LdaFalse), /* 40 S> */ B(LdaSmi), I8(1),
B(Star), R(22), B(Mov), R(0), R(17),
B(Mov), R(0), R(21), B(SuspendGenerator), R(10), R(0), U8(17), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(21), U8(2), B(LdaFalse),
B(Star), R(21), B(Star), R(19),
B(LdaSmi), I8(1), B(Mov), R(17), R(18),
B(SuspendGenerator), R(10), R(0), U8(21), U8(0), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Ldar), R(21),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(RestoreGeneratorRegisters), R(10), R(0), U8(21), B(RestoreGeneratorRegisters), R(10), R(0), U8(17),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(Star), R(21), B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
B(Ldar), R(21), B(Ldar), R(17),
/* 40 E> */ B(Throw), /* 40 E> */ B(Throw),
B(LdaTrue),
B(Star), R(23),
B(Mov), R(21), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(18),
B(LdaZero), B(LdaZero),
B(Star), R(17), B(Star), R(13),
B(Mov), R(17), R(14),
B(Jump), U8(56), B(Jump), U8(56),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(JumpLoop), U8(135), I8(0), B(JumpLoop), U8(125), I8(0),
B(Jump), U8(36), B(Jump), U8(36),
B(Star), R(21), B(Star), R(17),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(11), U8(12), B(CreateCatchContext), R(17), U8(11), U8(12),
B(PushContext), R(21), B(PushContext), R(17),
B(Star), R(20), B(Star), R(16),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(15), B(TestEqualStrict), R(6), U8(15),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22), B(Star), R(18),
B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
B(PopContext), R(21), B(PopContext), R(17),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(17), B(Star), R(13),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(18), B(Star), R(14),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(17), B(Star), R(13),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(19), B(Star), R(15),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(6), U8(16), B(TestEqualStrict), R(6), U8(16),
B(JumpIfTrue), U8(104), B(JumpIfTrue), U8(104),
...@@ -1019,89 +971,61 @@ bytecodes: [ ...@@ -1019,89 +971,61 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(20), B(Star), R(16),
B(LdaConstant), U8(14), B(LdaConstant), U8(14),
B(Star), R(21), B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(20), B(Mov), R(context), R(16),
B(Mov), R(8), R(21), B(Mov), R(8), R(17),
B(Mov), R(4), R(22), B(Mov), R(4), R(18),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(21), B(Star), R(17),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(11), U8(15), B(CreateCatchContext), R(17), U8(11), U8(15),
B(Star), R(20), B(Star), R(16),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(20), B(Ldar), R(16),
B(PushContext), R(21), B(PushContext), R(17),
B(PopContext), R(21), B(PopContext), R(17),
B(Jump), U8(27), B(Jump), U8(27),
B(Mov), R(8), R(20), B(Mov), R(8), R(16),
B(Mov), R(4), R(21), B(Mov), R(4), R(17),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
B(Star), R(9), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
B(Ldar), R(19), B(Ldar), R(15),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(17), B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(19), B(Jump), U8(12),
B(LdaZero), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Star), R(14),
B(Mov), R(18), R(15),
B(Jump), U8(40),
B(LdaSmi), I8(1),
B(Star), R(14),
B(Mov), R(18), R(15),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(17),
B(LdaTrue),
B(Star), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(14),
B(Jump), U8(8),
B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14), B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(15),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(Ldar), R(15), B(Ldar), R(14),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Ldar), R(13),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [55], Smi [53],
Smi [129], Smi [117],
Smi [24], Smi [14],
Smi [7], Smi [7],
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [88], Smi [87],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
...@@ -1109,16 +1033,12 @@ constant pool: [ ...@@ -1109,16 +1033,12 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [14], Smi [13],
Smi [389],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[60, 489, 495], [108, 298, 304],
[120, 320, 326], [111, 262, 264],
[123, 284, 286], [365, 375, 377],
[387, 397, 399],
] ]
--- ---
...@@ -1340,9 +1260,9 @@ snippet: " ...@@ -1340,9 +1260,9 @@ snippet: "
} }
f([1, 2, 3]); f([1, 2, 3]);
" "
frame size: 27 frame size: 26
parameter count: 2 parameter count: 2
bytecode array length: 546 bytecode array length: 537
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(11), B(Mov), R(new_target), R(11),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -1353,35 +1273,35 @@ bytecodes: [ ...@@ -1353,35 +1273,35 @@ bytecodes: [
B(Star), R(12), B(Star), R(12),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(CreateFunctionContext), U8(1), B(CreateFunctionContext), U8(1),
B(PushContext), R(14), B(PushContext), R(13),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Mov), R(closure), R(15), B(Mov), R(closure), R(14),
B(Mov), R(this), R(16), B(Mov), R(this), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(15), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2),
B(Star), R(2), B(Star), R(2),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(15), B(Star), R(14),
B(CallJSRuntime), U8(%async_function_promise_create), R(15), U8(1), B(CallJSRuntime), U8(%async_function_promise_create), R(14), U8(1),
B(Star), R(3), B(Star), R(3),
B(Mov), R(context), R(17), B(Mov), R(context), R(16),
B(Mov), R(2), R(11), B(Mov), R(2), R(11),
B(Mov), R(context), R(18), B(Mov), R(context), R(17),
B(LdaZero), B(LdaZero),
B(Star), R(7), B(Star), R(7),
B(Mov), R(context), R(20),
B(Mov), R(context), R(21), B(Mov), R(context), R(21),
B(Mov), R(context), R(22),
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4), /* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22),
B(LdaNamedProperty), R(22), U8(1), U8(3),
B(Star), R(23), B(Star), R(23),
B(LdaNamedProperty), R(23), U8(1), U8(3), B(CallProperty0), R(23), R(22), U8(5),
B(Star), R(24),
B(CallProperty0), R(24), R(23), U8(5),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(5), B(Star), R(5),
...@@ -1391,18 +1311,18 @@ bytecodes: [ ...@@ -1391,18 +1311,18 @@ bytecodes: [
/* 40 E> */ B(TestEqualStrictNoFeedback), R(12), /* 40 E> */ B(TestEqualStrictNoFeedback), R(12),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(23), B(Star), R(22),
B(CallRuntime), U16(Runtime::kAbort), R(23), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(22), U8(1),
/* 35 S> */ B(LdaNamedProperty), R(5), U8(3), U8(9), /* 35 S> */ B(LdaNamedProperty), R(5), U8(3), U8(9),
B(Star), R(23), B(Star), R(22),
B(CallProperty0), R(23), R(5), U8(7), B(CallProperty0), R(22), R(5), U8(7),
B(Star), R(6), B(Star), R(6),
/* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1), /* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(4), U8(11), B(LdaNamedProperty), R(6), U8(4), U8(11),
B(JumpIfToBooleanTrue), U8(95), B(JumpIfToBooleanTrue), U8(86),
B(LdaNamedProperty), R(6), U8(5), U8(13), B(LdaNamedProperty), R(6), U8(5), U8(13),
B(Star), R(8), B(Star), R(8),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
...@@ -1411,63 +1331,59 @@ bytecodes: [ ...@@ -1411,63 +1331,59 @@ bytecodes: [
/* 26 E> */ B(StackCheck), /* 26 E> */ B(StackCheck),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
/* 45 S> */ B(LdaUndefined), /* 45 S> */ B(LdaUndefined),
B(Star), R(23), B(Star), R(22),
B(Mov), R(2), R(24), B(Mov), R(2), R(23),
B(Mov), R(4), R(25), B(Mov), R(4), R(24),
B(Mov), R(3), R(26), B(Mov), R(3), R(25),
/* 51 E> */ B(CallJSRuntime), U8(%async_function_await_uncaught), R(23), U8(4), /* 51 E> */ B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(4),
B(LdaZero), B(LdaZero),
B(Mov), R(3), R(23), B(Mov), R(3), R(22),
B(SuspendGenerator), R(11), R(0), U8(23), U8(2), B(SuspendGenerator), R(11), R(0), U8(22), U8(2),
B(Ldar), R(23), B(Ldar), R(22),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(RestoreGeneratorRegisters), R(11), R(0), U8(23), B(RestoreGeneratorRegisters), R(11), R(0), U8(22),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(12), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
B(Star), R(23), B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Ldar), R(23), B(Ldar), R(22),
/* 45 E> */ B(ReThrow), /* 45 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(20),
B(LdaZero), B(LdaZero),
B(Star), R(19), B(Star), R(18),
B(Mov), R(22), R(19),
B(Jump), U8(60), B(Jump), U8(60),
B(LdaZero), B(LdaZero),
B(Star), R(7), B(Star), R(7),
B(JumpLoop), U8(141), I8(0), B(JumpLoop), U8(132), I8(0),
B(Jump), U8(40), B(Jump), U8(40),
B(Star), R(23),
B(Ldar), R(closure),
B(CreateCatchContext), R(23), U8(8), U8(9),
B(Star), R(22), B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(8), U8(9),
B(Star), R(21),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(22), B(Ldar), R(21),
B(PushContext), R(23), B(PushContext), R(22),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(15), B(TestEqualStrict), R(7), U8(15),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(7), B(Star), R(7),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(24), B(Star), R(23),
B(CallRuntime), U16(Runtime::kReThrow), R(24), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1),
B(PopContext), R(23), B(PopContext), R(22),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(19), B(Star), R(18),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(20),
B(LdaSmi), I8(1),
B(Star), R(19), B(Star), R(19),
B(LdaSmi), I8(1),
B(Star), R(18),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(21), B(Star), R(20),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(7), U8(16), B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104), B(JumpIfTrue), U8(104),
...@@ -1484,98 +1400,98 @@ bytecodes: [ ...@@ -1484,98 +1400,98 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(22), B(Star), R(21),
B(LdaConstant), U8(11), B(LdaConstant), U8(11),
B(Star), R(23), B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(22), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(22), B(Mov), R(context), R(21),
B(Mov), R(9), R(23), B(Mov), R(9), R(22),
B(Mov), R(5), R(24), B(Mov), R(5), R(23),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(23), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(23),
B(Ldar), R(closure),
B(CreateCatchContext), R(23), U8(8), U8(12),
B(Star), R(22), B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(8), U8(12),
B(Star), R(21),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(22), B(Ldar), R(21),
B(PushContext), R(23), B(PushContext), R(22),
B(PopContext), R(23), B(PopContext), R(22),
B(Jump), U8(27), B(Jump), U8(27),
B(Mov), R(9), R(22), B(Mov), R(9), R(21),
B(Mov), R(5), R(23), B(Mov), R(5), R(22),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
B(Ldar), R(21), B(Ldar), R(20),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(19), B(Ldar), R(18),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(13), B(Jump), U8(13),
B(LdaZero), B(LdaZero),
B(Star), R(15), B(Star), R(14),
B(Mov), R(20), R(16), B(Mov), R(19), R(15),
B(Jump), U8(83), B(Jump), U8(83),
B(Ldar), R(20), B(Ldar), R(19),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(19), B(Star), R(18),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(21), B(Star), R(20),
B(Mov), R(3), R(20), B(Mov), R(3), R(19),
B(CallJSRuntime), U8(%promise_resolve), R(19), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(18), U8(3),
B(LdaZero), B(LdaZero),
B(Star), R(15), B(Star), R(14),
B(Mov), R(3), R(16), B(Mov), R(3), R(15),
B(Jump), U8(59), B(Jump), U8(59),
B(Jump), U8(45), B(Jump), U8(45),
B(Star), R(19),
B(Ldar), R(closure),
B(CreateCatchContext), R(19), U8(8), U8(15),
B(Star), R(18), B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(8), U8(15),
B(Star), R(17),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(18), B(Ldar), R(17),
B(PushContext), R(19), B(PushContext), R(18),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(20), B(Star), R(19),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22), B(Star), R(21),
B(LdaFalse), B(LdaFalse),
B(Star), R(23), B(Star), R(22),
B(Mov), R(3), R(21), B(Mov), R(3), R(20),
B(CallJSRuntime), U8(%promise_internal_reject), R(20), U8(4), B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(4),
B(PopContext), R(19), B(PopContext), R(18),
B(LdaZero), B(LdaZero),
B(Star), R(15), B(Star), R(14),
B(Mov), R(3), R(16), B(Mov), R(3), R(15),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(15), B(Star), R(14),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(16),
B(LdaSmi), I8(1),
B(Star), R(15), B(Star), R(15),
B(LdaSmi), I8(1),
B(Star), R(14),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(17), B(Star), R(16),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(18), B(Star), R(17),
B(Mov), R(3), R(19), B(Mov), R(3), R(18),
B(CallJSRuntime), U8(%async_function_promise_release), R(18), U8(2), B(CallJSRuntime), U8(%async_function_promise_release), R(17), U8(2),
B(Ldar), R(17), B(Ldar), R(16),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(15), B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(8), B(Jump), U8(8),
B(Ldar), R(16), B(Ldar), R(15),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(Ldar), R(16), B(Ldar), R(15),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
...@@ -1587,7 +1503,7 @@ constant pool: [ ...@@ -1587,7 +1503,7 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
...@@ -1601,10 +1517,10 @@ constant pool: [ ...@@ -1601,10 +1517,10 @@ constant pool: [
Smi [9], Smi [9],
] ]
handlers: [ handlers: [
[70, 501, 507], [70, 492, 498],
[73, 456, 458], [73, 447, 449],
[79, 289, 295], [79, 280, 286],
[82, 249, 251], [82, 240, 242],
[356, 366, 368], [347, 357, 359],
] ]
...@@ -11,9 +11,9 @@ snippet: " ...@@ -11,9 +11,9 @@ snippet: "
function* f() { } function* f() { }
f(); f();
" "
frame size: 10 frame size: 5
parameter count: 1 parameter count: 1
bytecode array length: 162 bytecode array length: 104
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(1), B(Mov), R(new_target), R(1),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -24,79 +24,45 @@ bytecodes: [ ...@@ -24,79 +24,45 @@ bytecodes: [
B(Star), R(2), B(Star), R(2),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(4), B(Star), R(3),
B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(2), B(Star), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(Star), R(0), B(Star), R(0),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(1),
B(Mov), R(context), R(6),
B(LdaZero), B(LdaZero),
B(Mov), R(0), R(7), B(Mov), R(0), R(1),
/* 11 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(0), B(Mov), R(0), R(3),
B(Ldar), R(7), /* 11 E> */ B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
B(Ldar), R(3),
/* 16 S> */ B(Return), /* 16 S> */ B(Return),
B(RestoreGeneratorRegisters), R(1), R(0), U8(7), B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(2), B(Star), R(2),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
B(Star), R(7), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(7), B(Ldar), R(3),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
B(Star), R(9), B(Ldar), R(3),
B(Mov), R(7), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(7),
B(LdaTrue),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(4),
B(Jump), U8(8),
B(Star), R(5),
B(LdaSmi), I8(1),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(6),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
/* 16 S> */ B(Return), /* 16 S> */ B(Return),
B(Ldar), R(5),
B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
B(Ldar), R(3),
/* 16 S> */ B(Return), /* 16 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 123, 129],
] ]
--- ---
...@@ -104,9 +70,9 @@ snippet: " ...@@ -104,9 +70,9 @@ snippet: "
function* f() { yield 42 } function* f() { yield 42 }
f(); f();
" "
frame size: 10 frame size: 6
parameter count: 1 parameter count: 1
bytecode array length: 227 bytecode array length: 158
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(1), B(Mov), R(new_target), R(1),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -117,109 +83,69 @@ bytecodes: [ ...@@ -117,109 +83,69 @@ bytecodes: [
B(Star), R(2), B(Star), R(2),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(4), B(Star), R(3),
B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(2), B(Star), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(Star), R(0), B(Star), R(0),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(1),
B(Mov), R(context), R(6),
B(LdaZero), B(LdaZero),
B(Mov), R(0), R(7), B(Mov), R(0), R(1),
/* 11 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(0), B(Mov), R(0), R(3),
B(Ldar), R(7), /* 11 E> */ B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
B(Ldar), R(3),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
B(RestoreGeneratorRegisters), R(1), R(0), U8(7), B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(2), B(Star), R(2),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
B(Star), R(7), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(7), B(Ldar), R(3),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
B(Star), R(9), B(Ldar), R(3),
B(Mov), R(7), R(8), /* 25 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(96),
/* 16 S> */ B(LdaSmi), I8(42), /* 16 S> */ B(LdaSmi), I8(42),
B(Star), R(7), B(Star), R(3),
B(LdaFalse),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(SuspendGenerator), R(1), R(0), U8(7), U8(0), B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
B(Ldar), R(7), B(LdaFalse),
B(Star), R(5),
B(Mov), R(3), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
B(RestoreGeneratorRegisters), R(1), R(0), U8(7), B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(2), B(Star), R(2),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
B(Star), R(7), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(Ldar), R(7), B(Ldar), R(3),
/* 16 E> */ B(Throw), /* 16 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
B(Star), R(9), B(Ldar), R(3),
B(Mov), R(7), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(7),
B(LdaTrue),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(4),
B(Jump), U8(8),
B(Star), R(5),
B(LdaSmi), I8(1),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(6),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(6),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
B(Ldar), R(5),
B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
B(Ldar), R(3),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [112], Smi [99],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 188, 194],
] ]
--- ---
...@@ -227,9 +153,9 @@ snippet: " ...@@ -227,9 +153,9 @@ snippet: "
function* f() { for (let x of [42]) yield x } function* f() { for (let x of [42]) yield x }
f(); f();
" "
frame size: 23 frame size: 19
parameter count: 1 parameter count: 1
bytecode array length: 522 bytecode array length: 447
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(10), B(Mov), R(new_target), R(10),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -240,48 +166,42 @@ bytecodes: [ ...@@ -240,48 +166,42 @@ bytecodes: [
B(Star), R(11), B(Star), R(11),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(13), B(Star), R(12),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(Mov), R(closure), R(13), B(Mov), R(closure), R(12),
B(Mov), R(this), R(14), B(Mov), R(this), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2),
B(Star), R(2), B(Star), R(2),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(10),
B(Mov), R(context), R(15),
B(LdaZero), B(LdaZero),
B(Mov), R(2), R(16), B(Mov), R(2), R(10),
/* 11 E> */ B(SuspendGenerator), R(10), R(0), U8(16), U8(0), B(Mov), R(2), R(12),
B(Ldar), R(16), /* 11 E> */ B(SuspendGenerator), R(10), R(0), U8(12), U8(0),
B(Ldar), R(12),
/* 44 S> */ B(Return), /* 44 S> */ B(Return),
B(RestoreGeneratorRegisters), R(10), R(0), U8(16), B(RestoreGeneratorRegisters), R(10), R(0), U8(12),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(Star), R(16), B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(16), B(Ldar), R(12),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Star), R(18), B(Ldar), R(12),
B(Mov), R(16), R(17), /* 44 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(14),
B(LdaZero),
B(Star), R(13),
B(JumpConstant), U8(19),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(context), R(18), B(Mov), R(context), R(14),
B(Mov), R(context), R(19), B(Mov), R(context), R(15),
/* 30 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17), /* 30 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17),
B(Star), R(20), B(Star), R(16),
B(LdaNamedProperty), R(20), U8(5), U8(4), B(LdaNamedProperty), R(16), U8(5), U8(4),
B(Star), R(21), B(Star), R(17),
B(CallProperty0), R(21), R(20), U8(6), B(CallProperty0), R(17), R(16), U8(6),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4), B(Star), R(4),
...@@ -291,18 +211,18 @@ bytecodes: [ ...@@ -291,18 +211,18 @@ bytecodes: [
/* 30 E> */ B(TestEqualStrictNoFeedback), R(11), /* 30 E> */ B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(20), B(Star), R(16),
B(CallRuntime), U16(Runtime::kAbort), R(20), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(16), U8(1),
/* 25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(10), /* 25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(10),
B(Star), R(20), B(Star), R(16),
B(CallProperty0), R(20), R(4), U8(8), B(CallProperty0), R(16), R(4), U8(8),
B(Star), R(5), B(Star), R(5),
/* 25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1), /* 25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot), B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(12), B(LdaNamedProperty), R(5), U8(8), U8(12),
B(JumpIfToBooleanTrue), U8(89), B(JumpIfToBooleanTrue), U8(79),
B(LdaNamedProperty), R(5), U8(9), U8(14), B(LdaNamedProperty), R(5), U8(9), U8(14),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
...@@ -310,59 +230,54 @@ bytecodes: [ ...@@ -310,59 +230,54 @@ bytecodes: [
B(Mov), R(7), R(3), B(Mov), R(7), R(3),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
/* 36 S> */ B(LdaFalse), /* 36 S> */ B(LdaSmi), I8(1),
B(Star), R(21), B(Mov), R(0), R(16),
B(Mov), R(0), R(20), B(SuspendGenerator), R(10), R(0), U8(16), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(20), U8(2), B(LdaFalse),
B(Star), R(20), B(Star), R(18),
B(LdaSmi), I8(1), B(Mov), R(16), R(17),
B(SuspendGenerator), R(10), R(0), U8(20), U8(0), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Ldar), R(20),
/* 44 S> */ B(Return), /* 44 S> */ B(Return),
B(RestoreGeneratorRegisters), R(10), R(0), U8(20), B(RestoreGeneratorRegisters), R(10), R(0), U8(16),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(11), B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(Star), R(20), B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Ldar), R(20), B(Ldar), R(16),
/* 36 E> */ B(Throw), /* 36 E> */ B(Throw),
B(LdaTrue),
B(Star), R(22),
B(Mov), R(20), R(21),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(21), U8(2),
B(Star), R(17),
B(LdaZero), B(LdaZero),
B(Star), R(16), B(Star), R(12),
B(Mov), R(16), R(13),
B(Jump), U8(56), B(Jump), U8(56),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(JumpLoop), U8(135), I8(0), B(JumpLoop), U8(125), I8(0),
B(Jump), U8(36), B(Jump), U8(36),
B(Star), R(20), B(Star), R(16),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(20), U8(12), U8(13), B(CreateCatchContext), R(16), U8(12), U8(13),
B(PushContext), R(20), B(PushContext), R(16),
B(Star), R(19), B(Star), R(15),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(16), B(TestEqualStrict), R(6), U8(16),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21), B(Star), R(17),
B(CallRuntime), U16(Runtime::kReThrow), R(21), U8(1), B(CallRuntime), U16(Runtime::kReThrow), R(17), U8(1),
B(PopContext), R(20), B(PopContext), R(16),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(16), B(Star), R(12),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(17), B(Star), R(13),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(16), B(Star), R(12),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(18), B(Star), R(14),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(6), U8(17), B(TestEqualStrict), R(6), U8(17),
B(JumpIfTrue), U8(104), B(JumpIfTrue), U8(104),
...@@ -379,90 +294,62 @@ bytecodes: [ ...@@ -379,90 +294,62 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(19), B(Star), R(15),
B(LdaConstant), U8(15), B(LdaConstant), U8(15),
B(Star), R(20), B(Star), R(16),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(19), B(Mov), R(context), R(15),
B(Mov), R(8), R(20), B(Mov), R(8), R(16),
B(Mov), R(4), R(21), B(Mov), R(4), R(17),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(20), B(Star), R(16),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(20), U8(12), U8(16), B(CreateCatchContext), R(16), U8(12), U8(16),
B(Star), R(19), B(Star), R(15),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(19), B(Ldar), R(15),
B(PushContext), R(20), B(PushContext), R(16),
B(PopContext), R(20), B(PopContext), R(16),
B(Jump), U8(27), B(Jump), U8(27),
B(Mov), R(8), R(19), B(Mov), R(8), R(15),
B(Mov), R(4), R(20), B(Mov), R(4), R(16),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(19), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
B(Star), R(9), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
B(Ldar), R(18), B(Ldar), R(14),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(16), B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Jump), U8(19), B(Jump), U8(12),
B(LdaZero), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Star), R(13),
B(Mov), R(17), R(14),
B(Jump), U8(40),
B(LdaSmi), I8(1),
B(Star), R(13),
B(Mov), R(17), R(14),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(16),
B(LdaTrue),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(14),
B(LdaZero),
B(Star), R(13),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(13),
B(Jump), U8(8),
B(Star), R(14),
B(LdaSmi), I8(1),
B(Star), R(13),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(15),
B(SetPendingMessage),
B(Ldar), R(13), B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(20), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(14),
/* 44 S> */ B(Return), /* 44 S> */ B(Return),
B(Ldar), R(14), B(Ldar), R(13),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
B(Ldar), R(12),
/* 44 S> */ B(Return), /* 44 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [123], Smi [111],
Smi [24], Smi [14],
Smi [7], Smi [7],
TUPLE2_TYPE, TUPLE2_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [88], Smi [87],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
...@@ -470,16 +357,12 @@ constant pool: [ ...@@ -470,16 +357,12 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [14], Smi [13],
Smi [391],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 483, 489], [100, 292, 298],
[112, 314, 320], [103, 256, 258],
[115, 278, 280], [359, 369, 371],
[381, 391, 393],
] ]
--- ---
...@@ -488,9 +371,9 @@ snippet: " ...@@ -488,9 +371,9 @@ snippet: "
function* f() { yield* g() } function* f() { yield* g() }
f(); f();
" "
frame size: 19 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 575 bytecode array length: 500
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(9), B(Mov), R(new_target), R(9),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -501,39 +384,33 @@ bytecodes: [ ...@@ -501,39 +384,33 @@ bytecodes: [
B(Star), R(10), B(Star), R(10),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(12), B(Star), R(11),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(10), B(Star), R(10),
B(Mov), R(closure), R(12), B(Mov), R(closure), R(11),
B(Mov), R(this), R(13), B(Mov), R(this), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(11), U8(2),
B(Star), R(0), B(Star), R(0),
/* 38 E> */ B(StackCheck), /* 38 E> */ B(StackCheck),
B(Star), R(9),
B(Mov), R(context), R(14),
B(LdaZero), B(LdaZero),
B(Mov), R(0), R(15), B(Mov), R(0), R(9),
/* 38 E> */ B(SuspendGenerator), R(9), R(0), U8(15), U8(0), B(Mov), R(0), R(11),
B(Ldar), R(15), /* 38 E> */ B(SuspendGenerator), R(9), R(0), U8(11), U8(0),
B(Ldar), R(11),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(RestoreGeneratorRegisters), R(9), R(0), U8(15), B(RestoreGeneratorRegisters), R(9), R(0), U8(11),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(15), B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(15), B(Ldar), R(11),
/* 38 E> */ B(Throw), /* 38 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Star), R(17), B(Ldar), R(11),
B(Mov), R(15), R(16), /* 54 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(12),
B(JumpConstant), U8(15),
/* 43 S> */ B(LdaUndefined), /* 43 S> */ B(LdaUndefined),
B(Star), R(1), B(Star), R(1),
B(LdaZero), B(LdaZero),
...@@ -541,12 +418,12 @@ bytecodes: [ ...@@ -541,12 +418,12 @@ bytecodes: [
B(LdaUndefined), B(LdaUndefined),
B(Star), R(3), B(Star), R(3),
B(LdaGlobal), U8(4), U8(5), B(LdaGlobal), U8(4), U8(5),
B(Star), R(17), B(Star), R(13),
/* 50 E> */ B(CallUndefinedReceiver0), R(17), U8(3), /* 50 E> */ B(CallUndefinedReceiver0), R(13), U8(3),
B(Star), R(15), B(Star), R(11),
B(LdaNamedProperty), R(15), U8(5), U8(7), B(LdaNamedProperty), R(11), U8(5), U8(7),
B(Star), R(16), B(Star), R(12),
B(CallProperty0), R(16), R(15), U8(9), B(CallProperty0), R(12), R(11), U8(9),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4), B(Star), R(4),
...@@ -556,45 +433,40 @@ bytecodes: [ ...@@ -556,45 +433,40 @@ bytecodes: [
B(TestEqualStrictNoFeedback), R(10), B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(15), B(Star), R(11),
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
B(StackCheck), B(StackCheck),
B(LdaZero), B(LdaZero),
B(TestEqualStrict), R(2), U8(15), B(TestEqualStrict), R(2), U8(15),
B(Mov), R(2), R(15), B(Mov), R(2), R(11),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(15), U8(19), B(TestEqualStrict), R(11), U8(19),
B(JumpIfTrue), U8(39), B(JumpIfTrue), U8(39),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrict), R(15), U8(28), B(TestEqualStrict), R(11), U8(28),
B(JumpIfTrue), U8(88), B(JumpIfTrue), U8(78),
B(Jump), U8(246), B(Jump), U8(236),
B(LdaNamedProperty), R(4), U8(7), U8(13), B(LdaNamedProperty), R(4), U8(7), U8(13),
B(Star), R(16), B(Star), R(12),
B(CallProperty1), R(16), R(4), R(1), U8(11), B(CallProperty1), R(12), R(4), R(1), U8(11),
B(Star), R(3), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(218), B(Jump), U8(208),
B(LdaNamedProperty), R(4), U8(8), U8(16), B(LdaNamedProperty), R(4), U8(8), U8(16),
B(Star), R(3), B(Star), R(3),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(19), B(JumpIfFalse), U8(9),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Star), R(17), B(Ldar), R(1),
B(Mov), R(1), R(16), /* 54 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2), B(Mov), R(3), R(12),
B(Star), R(13), B(Mov), R(4), R(13),
B(LdaZero), B(Mov), R(1), R(14),
B(Star), R(12), B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(3),
B(JumpConstant), U8(16),
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(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
...@@ -611,53 +483,53 @@ bytecodes: [ ...@@ -611,53 +483,53 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(96), B(Jump), U8(96),
B(LdaZero), B(LdaZero),
B(Star), R(16), B(Star), R(12),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(16), U8(26), B(TestEqualStrict), R(12), U8(26),
B(JumpIfFalse), U8(61), B(JumpIfFalse), U8(61),
B(Ldar), R(6), B(Ldar), R(6),
B(TestTypeOf), U8(5), B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(18), B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130), B(Wide), B(LdaSmi), I16(130),
B(Star), R(16), B(Star), R(12),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(17), B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw), B(Throw),
B(Mov), R(context), R(16), B(Mov), R(context), R(12),
B(Mov), R(6), R(17), B(Mov), R(6), R(13),
B(Mov), R(4), R(18), B(Mov), R(4), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(Jump), U8(20), B(Jump), U8(20),
B(Star), R(17), B(Star), R(13),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(17), U8(11), U8(12), B(CreateCatchContext), R(13), U8(11), U8(12),
B(Star), R(16), B(Star), R(12),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(16), B(Ldar), R(12),
B(PushContext), R(17), B(PushContext), R(13),
B(PopContext), R(17), B(PopContext), R(13),
B(Jump), U8(27), B(Jump), U8(27),
B(Mov), R(6), R(16), B(Mov), R(6), R(12),
B(Mov), R(4), R(17), B(Mov), R(4), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2), B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(Star), R(7), B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(7), B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(Wide), B(LdaSmi), I16(144), B(Wide), B(LdaSmi), I16(144),
B(Star), R(16), B(Star), R(12),
B(LdaConstant), U8(10), B(LdaConstant), U8(10),
B(Star), R(17), B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw), B(Throw),
B(Mov), R(5), R(16), B(Mov), R(5), R(12),
B(Mov), R(4), R(17), B(Mov), R(4), R(13),
B(Mov), R(1), R(18), B(Mov), R(1), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(3), B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(3),
B(Star), R(3), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
...@@ -668,11 +540,11 @@ bytecodes: [ ...@@ -668,11 +540,11 @@ bytecodes: [
B(JumpIfToBooleanFalse), U8(4), B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(45), B(Jump), U8(45),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Mov), R(3), R(15), B(Mov), R(3), R(11),
B(SuspendGenerator), R(9), R(0), U8(15), U8(1), B(SuspendGenerator), R(9), R(0), U8(11), U8(1),
B(Ldar), R(15), B(Ldar), R(11),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(RestoreGeneratorRegisters), R(9), R(0), U8(15), B(RestoreGeneratorRegisters), R(9), R(0), U8(11),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
...@@ -680,60 +552,31 @@ bytecodes: [ ...@@ -680,60 +552,31 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(Star), R(2), B(Star), R(2),
B(Wide), B(JumpLoop), U16(337), I16(0), B(Wide), B(JumpLoop), U16(327), I16(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqualStrict), R(2), U8(31), B(TestEqualStrict), R(2), U8(31),
B(JumpIfFalse), U8(22), B(JumpIfFalse), U8(15),
B(LdaNamedProperty), R(3), U8(14), U8(32), B(LdaNamedProperty), R(3), U8(14), U8(32),
B(Star), R(15), B(Star), R(11),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Star), R(16), B(Ldar), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2), /* 54 S> */ B(Return),
B(Star), R(13),
B(LdaZero),
B(Star), R(12),
B(Jump), U8(37),
B(LdaNamedProperty), R(3), U8(14), U8(34), B(LdaNamedProperty), R(3), U8(14), U8(34),
B(Star), R(8), B(Star), R(8),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(15), B(Star), R(11),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
B(Star), R(16), B(Ldar), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(12),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(12),
B(Jump), U8(8),
B(Star), R(13),
B(LdaSmi), I8(1),
B(Star), R(12),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(13),
/* 54 S> */ B(Return),
B(Ldar), R(13),
B(ReThrow),
B(LdaUndefined),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [127], Smi [115],
Smi [24], Smi [14],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
SYMBOL_TYPE, SYMBOL_TYPE,
Smi [310], Smi [300],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
...@@ -742,13 +585,8 @@ constant pool: [ ...@@ -742,13 +585,8 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [444],
Smi [305],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 536, 542], [310, 320, 322],
[332, 342, 344],
] ]
...@@ -11,9 +11,9 @@ top level: yes ...@@ -11,9 +11,9 @@ top level: yes
snippet: " snippet: "
import \"bar\"; import \"bar\";
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 128 bytecode array length: 120
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -24,54 +24,51 @@ bytecodes: [ ...@@ -24,54 +24,51 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 13 S> */ B(Return), /* 13 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 13 S> */ B(Return), /* 13 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 13 S> */ B(Return), /* 13 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
] ]
handlers: [ handlers: [
...@@ -81,9 +78,9 @@ handlers: [ ...@@ -81,9 +78,9 @@ handlers: [
snippet: " snippet: "
import {foo} from \"bar\"; import {foo} from \"bar\";
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 128 bytecode array length: 120
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -94,54 +91,51 @@ bytecodes: [ ...@@ -94,54 +91,51 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 24 S> */ B(Return), /* 24 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 24 S> */ B(Return), /* 24 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 24 S> */ B(Return), /* 24 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
] ]
handlers: [ handlers: [
...@@ -153,9 +147,9 @@ snippet: " ...@@ -153,9 +147,9 @@ snippet: "
goo(42); goo(42);
{ let x; { goo(42) } }; { let x; { goo(42) } };
" "
frame size: 7 frame size: 6
parameter count: 2 parameter count: 2
bytecode array length: 190 bytecode array length: 182
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -166,53 +160,50 @@ bytecodes: [ ...@@ -166,53 +160,50 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 64 S> */ B(Return), /* 64 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 64 S> */ B(Return), /* 64 S> */ B(Return),
/* 32 S> */ B(LdaModuleVariable), I8(-1), U8(0), /* 32 S> */ B(LdaModuleVariable), I8(-1), U8(0),
B(JumpIfNotHole), U8(11), B(JumpIfNotHole), U8(11),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1),
B(Star), R(4), B(Star), R(4),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(4), U8(1),
B(Star), R(3),
B(LdaSmi), I8(42), B(LdaSmi), I8(42),
B(Star), R(5), B(Star), R(4),
/* 32 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(3), /* 32 E> */ B(CallUndefinedReceiver1), R(3), R(4), U8(3),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateBlockContext), U8(5), B(CreateBlockContext), U8(5),
B(PushContext), R(4), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 47 S> */ B(LdaUndefined), /* 47 S> */ B(LdaUndefined),
...@@ -220,25 +211,25 @@ bytecodes: [ ...@@ -220,25 +211,25 @@ bytecodes: [
/* 52 S> */ B(LdaModuleVariable), I8(-1), U8(1), /* 52 S> */ B(LdaModuleVariable), I8(-1), U8(1),
B(JumpIfNotHole), U8(11), B(JumpIfNotHole), U8(11),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star), R(6),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(6), U8(1),
B(Star), R(5), B(Star), R(5),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1),
B(Star), R(4),
B(LdaSmi), I8(42), B(LdaSmi), I8(42),
B(Star), R(6), B(Star), R(5),
/* 52 E> */ B(CallUndefinedReceiver1), R(5), R(6), U8(5), /* 52 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(5),
B(StaContextSlot), R(4), U8(5), U8(0), B(StaContextSlot), R(3), U8(5), U8(0),
B(PopContext), R(4), B(PopContext), R(3),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 64 S> */ B(Return), /* 64 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["goo"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["goo"],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
...@@ -252,9 +243,9 @@ snippet: " ...@@ -252,9 +243,9 @@ snippet: "
foo++; foo++;
{ let x; { foo++ } }; { let x; { foo++ } };
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 170 bytecode array length: 162
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -265,40 +256,37 @@ bytecodes: [ ...@@ -265,40 +256,37 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
/* 17 S> */ B(LdaSmi), I8(42), /* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0), /* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
...@@ -307,30 +295,30 @@ bytecodes: [ ...@@ -307,30 +295,30 @@ bytecodes: [
/* 24 E> */ B(StaModuleVariable), I8(1), U8(0), /* 24 E> */ B(StaModuleVariable), I8(1), U8(0),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateBlockContext), U8(4), B(CreateBlockContext), U8(4),
B(PushContext), R(4), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 34 S> */ B(LdaUndefined), /* 34 S> */ B(LdaUndefined),
/* 34 E> */ B(StaCurrentContextSlot), U8(4), /* 34 E> */ B(StaCurrentContextSlot), U8(4),
/* 39 S> */ B(LdaModuleVariable), I8(1), U8(1), /* 39 S> */ B(LdaModuleVariable), I8(1), U8(1),
B(ToNumber), R(5), U8(4), B(ToNumber), R(4), U8(4),
B(Ldar), R(5), B(Ldar), R(4),
B(Inc), U8(4), B(Inc), U8(4),
/* 42 E> */ B(StaModuleVariable), I8(1), U8(1), /* 42 E> */ B(StaModuleVariable), I8(1), U8(1),
B(Ldar), R(5), B(Ldar), R(4),
B(StaContextSlot), R(4), U8(5), U8(0), B(StaContextSlot), R(3), U8(5), U8(0),
B(PopContext), R(4), B(PopContext), R(3),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
] ]
...@@ -343,9 +331,9 @@ snippet: " ...@@ -343,9 +331,9 @@ snippet: "
foo++; foo++;
{ let x; { foo++ } }; { let x; { foo++ } };
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 174 bytecode array length: 166
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -356,42 +344,39 @@ bytecodes: [ ...@@ -356,42 +344,39 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Star), R(0), B(Star), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
/* 17 S> */ B(LdaSmi), I8(42), /* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0), /* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
...@@ -400,30 +385,30 @@ bytecodes: [ ...@@ -400,30 +385,30 @@ bytecodes: [
/* 24 E> */ B(StaModuleVariable), I8(1), U8(0), /* 24 E> */ B(StaModuleVariable), I8(1), U8(0),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateBlockContext), U8(4), B(CreateBlockContext), U8(4),
B(PushContext), R(4), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 34 S> */ B(LdaUndefined), /* 34 S> */ B(LdaUndefined),
/* 34 E> */ B(StaCurrentContextSlot), U8(4), /* 34 E> */ B(StaCurrentContextSlot), U8(4),
/* 39 S> */ B(LdaModuleVariable), I8(1), U8(1), /* 39 S> */ B(LdaModuleVariable), I8(1), U8(1),
B(ToNumber), R(5), U8(4), B(ToNumber), R(4), U8(4),
B(Ldar), R(5), B(Ldar), R(4),
B(Inc), U8(4), B(Inc), U8(4),
/* 42 E> */ B(StaModuleVariable), I8(1), U8(1), /* 42 E> */ B(StaModuleVariable), I8(1), U8(1),
B(Ldar), R(5), B(Ldar), R(4),
B(StaContextSlot), R(4), U8(5), U8(0), B(StaContextSlot), R(3), U8(5), U8(0),
B(PopContext), R(4), B(PopContext), R(3),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [63], Smi [63],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
] ]
...@@ -436,9 +421,9 @@ snippet: " ...@@ -436,9 +421,9 @@ snippet: "
foo++; foo++;
{ let x; { foo++ } }; { let x; { foo++ } };
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 178 bytecode array length: 170
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -449,42 +434,39 @@ bytecodes: [ ...@@ -449,42 +434,39 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Star), R(0), B(Star), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 51 S> */ B(Return), /* 51 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 51 S> */ B(Return), /* 51 S> */ B(Return),
/* 19 S> */ B(LdaSmi), I8(42), /* 19 S> */ B(LdaSmi), I8(42),
/* 19 E> */ B(StaModuleVariable), I8(1), U8(0), /* 19 E> */ B(StaModuleVariable), I8(1), U8(0),
...@@ -493,30 +475,30 @@ bytecodes: [ ...@@ -493,30 +475,30 @@ bytecodes: [
/* 26 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), /* 26 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateBlockContext), U8(4), B(CreateBlockContext), U8(4),
B(PushContext), R(4), B(PushContext), R(3),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 36 S> */ B(LdaUndefined), /* 36 S> */ B(LdaUndefined),
/* 36 E> */ B(StaCurrentContextSlot), U8(4), /* 36 E> */ B(StaCurrentContextSlot), U8(4),
/* 41 S> */ B(LdaModuleVariable), I8(1), U8(1), /* 41 S> */ B(LdaModuleVariable), I8(1), U8(1),
B(ToNumber), R(5), U8(4), B(ToNumber), R(4), U8(4),
B(Ldar), R(5), B(Ldar), R(4),
B(Inc), U8(4), B(Inc), U8(4),
/* 44 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), /* 44 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(Ldar), R(5), B(Ldar), R(4),
B(StaContextSlot), R(4), U8(5), U8(0), B(StaContextSlot), R(3), U8(5), U8(0),
B(PopContext), R(4), B(PopContext), R(3),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 51 S> */ B(Return), /* 51 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [63], Smi [63],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
] ]
...@@ -527,9 +509,9 @@ handlers: [ ...@@ -527,9 +509,9 @@ handlers: [
snippet: " snippet: "
export default (function () {}); export default (function () {});
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 139 bytecode array length: 131
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -540,58 +522,55 @@ bytecodes: [ ...@@ -540,58 +522,55 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Star), R(0), B(Star), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 32 S> */ B(Return), /* 32 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 32 S> */ B(Return), /* 32 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(4), U8(3), U8(0), B(CreateClosure), U8(4), U8(3), U8(0),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 32 S> */ B(Return), /* 32 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [63], Smi [63],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
SHARED_FUNCTION_INFO_TYPE, SHARED_FUNCTION_INFO_TYPE,
] ]
...@@ -602,9 +581,9 @@ handlers: [ ...@@ -602,9 +581,9 @@ handlers: [
snippet: " snippet: "
export default (class {}); export default (class {});
" "
frame size: 9 frame size: 8
parameter count: 2 parameter count: 2
bytecode array length: 172 bytecode array length: 164
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -615,70 +594,67 @@ bytecodes: [ ...@@ -615,70 +594,67 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Star), R(0), B(Star), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 26 S> */ B(Return), /* 26 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 26 S> */ B(Return), /* 26 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(4), U8(3), U8(0), B(CreateClosure), U8(4), U8(3), U8(0),
B(Star), R(4), B(Star), R(3),
B(LdaTheHole), B(LdaTheHole),
B(Star), R(5), B(Star), R(4),
B(LdaSmi), I8(16), B(LdaSmi), I8(16),
B(Star), R(7), B(Star), R(6),
B(LdaSmi), I8(24), B(LdaSmi), I8(24),
B(Star), R(8), B(Star), R(7),
B(Mov), R(4), R(6), B(Mov), R(3), R(5),
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
B(Star), R(5), B(Star), R(4),
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(4), U8(1), B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1), B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
B(StaModuleVariable), I8(1), U8(0), B(StaModuleVariable), I8(1), U8(0),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 26 S> */ B(Return), /* 26 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [63], Smi [63],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
SHARED_FUNCTION_INFO_TYPE, SHARED_FUNCTION_INFO_TYPE,
] ]
...@@ -689,9 +665,9 @@ handlers: [ ...@@ -689,9 +665,9 @@ handlers: [
snippet: " snippet: "
export {foo as goo} from \"bar\" export {foo as goo} from \"bar\"
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 128 bytecode array length: 120
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -702,54 +678,51 @@ bytecodes: [ ...@@ -702,54 +678,51 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 30 S> */ B(Return), /* 30 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 30 S> */ B(Return), /* 30 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 30 S> */ B(Return), /* 30 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
] ]
handlers: [ handlers: [
...@@ -759,9 +732,9 @@ handlers: [ ...@@ -759,9 +732,9 @@ handlers: [
snippet: " snippet: "
export * from \"bar\" export * from \"bar\"
" "
frame size: 7 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 128 bytecode array length: 120
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -772,54 +745,51 @@ bytecodes: [ ...@@ -772,54 +745,51 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(Star), R(0), B(Star), R(0),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 19 S> */ B(Return), /* 19 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 19 S> */ B(Return), /* 19 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(3),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5), B(LdaCurrentContextSlot), U8(5),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 19 S> */ B(Return), /* 19 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [59], Smi [59],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
] ]
handlers: [ handlers: [
...@@ -830,9 +800,9 @@ snippet: " ...@@ -830,9 +800,9 @@ snippet: "
import * as foo from \"bar\" import * as foo from \"bar\"
foo.f(foo, foo.x); foo.f(foo, foo.x);
" "
frame size: 8 frame size: 7
parameter count: 2 parameter count: 2
bytecode array length: 166 bytecode array length: 158
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(0), B(Mov), R(new_target), R(0),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -843,68 +813,65 @@ bytecodes: [ ...@@ -843,68 +813,65 @@ bytecodes: [
B(Star), R(1), B(Star), R(1),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(3), B(Star), R(2),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star), R(5), B(Star), R(4),
B(Mov), R(arg0), R(3), B(Mov), R(arg0), R(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(3),
B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(3), B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
B(PushContext), R(3), B(PushContext), R(2),
B(Mov), R(this), R(5), B(Mov), R(this), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
B(Star), R(0), B(Star), R(0),
B(LdaZero), B(LdaZero),
B(Star), R(4), B(Star), R(3),
B(CallRuntime), U16(Runtime::kGetModuleNamespace), R(4), U8(1), B(CallRuntime), U16(Runtime::kGetModuleNamespace), R(3), U8(1),
B(StaCurrentContextSlot), U8(5), B(StaCurrentContextSlot), U8(5),
/* 0 E> */ B(StackCheck), /* 0 E> */ B(StackCheck),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4), B(Star), R(3),
B(LdaZero), B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0), /* 0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 45 S> */ B(Return), /* 45 S> */ B(Return),
B(RestoreGeneratorRegisters), R(0), R(0), U8(4), B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(1), B(Star), R(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
B(Star), R(4), B(Star), R(3),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(4), B(Ldar), R(3),
/* 0 E> */ B(Throw), /* 0 E> */ B(Throw),
B(LdaTrue), B(Ldar), R(3),
B(Star), R(6),
B(Mov), R(4), R(5),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(5), U8(2),
/* 45 S> */ B(Return), /* 45 S> */ B(Return),
/* 27 S> */ B(LdaImmutableCurrentContextSlot), U8(5), /* 27 S> */ B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(5),
/* 30 E> */ B(LdaNamedProperty), R(5), U8(4), U8(5),
B(Star), R(4), B(Star), R(4),
/* 30 E> */ B(LdaNamedProperty), R(4), U8(4), U8(5),
B(Star), R(3),
B(LdaImmutableCurrentContextSlot), U8(5), B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(6), B(Star), R(5),
B(LdaImmutableCurrentContextSlot), U8(5), B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(7), B(Star), R(6),
/* 41 E> */ B(LdaNamedProperty), R(7), U8(5), U8(7), /* 41 E> */ B(LdaNamedProperty), R(6), U8(5), U8(7),
B(Star), R(7), B(Star), R(6),
/* 31 E> */ B(CallProperty2), R(4), R(5), R(6), R(7), U8(3), /* 31 E> */ B(CallProperty2), R(3), R(4), R(5), R(6), U8(3),
B(StaCurrentContextSlot), U8(6), B(StaCurrentContextSlot), U8(6),
B(LdaCurrentContextSlot), U8(6), B(LdaCurrentContextSlot), U8(6),
B(Star), R(4), B(Star), R(3),
B(LdaTrue), B(LdaTrue),
B(Star), R(5), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
/* 45 S> */ B(Return), /* 45 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [69], Smi [69],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [18], Smi [10],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
......
...@@ -271,9 +271,9 @@ snippet: " ...@@ -271,9 +271,9 @@ snippet: "
} }
f(); f();
" "
frame size: 16 frame size: 11
parameter count: 1 parameter count: 1
bytecode array length: 242 bytecode array length: 184
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(7), B(Mov), R(new_target), R(7),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -284,39 +284,33 @@ bytecodes: [ ...@@ -284,39 +284,33 @@ bytecodes: [
B(Star), R(8), B(Star), R(8),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(10), B(Star), R(9),
B(CallRuntime), U16(Runtime::kAbort), R(10), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(8), B(Star), R(8),
B(Mov), R(closure), R(10), B(Mov), R(closure), R(9),
B(Mov), R(this), R(11), B(Mov), R(this), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(10), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(9), U8(2),
B(Star), R(3), B(Star), R(3),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(7),
B(Mov), R(context), R(12),
B(LdaZero), B(LdaZero),
B(Mov), R(3), R(13), B(Mov), R(3), R(7),
/* 11 E> */ B(SuspendGenerator), R(7), R(0), U8(13), U8(0), B(Mov), R(3), R(9),
B(Ldar), R(13), /* 11 E> */ B(SuspendGenerator), R(7), R(0), U8(9), U8(0),
B(Ldar), R(9),
/* 62 S> */ B(Return), /* 62 S> */ B(Return),
B(RestoreGeneratorRegisters), R(7), R(0), U8(13), B(RestoreGeneratorRegisters), R(7), R(0), U8(9),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(8), B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(13), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(13), B(Ldar), R(9),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(7), U8(1),
B(Star), R(15), B(Ldar), R(9),
B(Mov), R(13), R(14), /* 62 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
B(Star), R(11),
B(LdaZero),
B(Star), R(10),
B(Jump), U8(111),
/* 31 S> */ B(LdaZero), /* 31 S> */ B(LdaZero),
B(Star), R(2), B(Star), R(2),
B(Star), R(4), B(Star), R(4),
...@@ -356,45 +350,17 @@ bytecodes: [ ...@@ -356,45 +350,17 @@ bytecodes: [
B(Jump), U8(5), B(Jump), U8(5),
B(JumpLoop), U8(68), I8(0), B(JumpLoop), U8(68), I8(0),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(13), B(Star), R(9),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(7), U8(1),
B(Star), R(14), B(Ldar), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(11),
B(LdaZero),
B(Star), R(10),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(10),
B(Jump), U8(8),
B(Star), R(11),
B(LdaSmi), I8(1),
B(Star), R(10),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(12),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(3), U8(1),
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(11),
/* 62 S> */ B(Return),
B(Ldar), R(11),
B(ReThrow),
B(LdaUndefined),
/* 62 S> */ B(Return), /* 62 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 203, 209],
] ]
--- ---
...@@ -404,9 +370,9 @@ snippet: " ...@@ -404,9 +370,9 @@ snippet: "
} }
f(); f();
" "
frame size: 15 frame size: 11
parameter count: 1 parameter count: 1
bytecode array length: 345 bytecode array length: 276
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(6), B(Mov), R(new_target), R(6),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -417,39 +383,33 @@ bytecodes: [ ...@@ -417,39 +383,33 @@ bytecodes: [
B(Star), R(7), B(Star), R(7),
B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(9), B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(7), B(Star), R(7),
B(Mov), R(closure), R(9), B(Mov), R(closure), R(8),
B(Mov), R(this), R(10), B(Mov), R(this), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(9), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(8), U8(2),
B(Star), R(2), B(Star), R(2),
/* 11 E> */ B(StackCheck), /* 11 E> */ B(StackCheck),
B(Star), R(6),
B(Mov), R(context), R(11),
B(LdaZero), B(LdaZero),
B(Mov), R(2), R(12), B(Mov), R(2), R(6),
/* 11 E> */ B(SuspendGenerator), R(6), R(0), U8(12), U8(0), B(Mov), R(2), R(8),
B(Ldar), R(12), /* 11 E> */ B(SuspendGenerator), R(6), R(0), U8(8), U8(0),
B(Ldar), R(8),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
B(RestoreGeneratorRegisters), R(6), R(0), U8(12), B(RestoreGeneratorRegisters), R(6), R(0), U8(8),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(7), B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(12), B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(12), B(Ldar), R(8),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(6), U8(1),
B(Star), R(14), B(Ldar), R(8),
B(Mov), R(12), R(13), /* 56 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(214),
/* 31 S> */ B(LdaZero), /* 31 S> */ B(LdaZero),
B(Star), R(1), B(Star), R(1),
B(Star), R(3), B(Star), R(3),
...@@ -461,8 +421,8 @@ bytecodes: [ ...@@ -461,8 +421,8 @@ bytecodes: [
/* 54 E> */ B(TestEqualStrictNoFeedback), R(7), /* 54 E> */ B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(12), B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(StackCheck), B(StackCheck),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -480,100 +440,66 @@ bytecodes: [ ...@@ -480,100 +440,66 @@ bytecodes: [
/* 36 E> */ B(TestLessThan), R(0), U8(5), /* 36 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(4), B(Jump), U8(4),
B(Jump), U8(118), B(Jump), U8(107),
B(Ldar), R(7), B(Ldar), R(7),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1), B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(7), B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(12), B(Star), R(8),
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqual), R(5), U8(6), B(TestEqual), R(5), U8(6),
B(JumpIfFalse), U8(78), B(JumpIfFalse), U8(67),
/* 18 E> */ B(StackCheck), /* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaFalse), /* 47 S> */ B(LdaSmi), I8(1),
B(Star), R(13), B(Mov), R(0), R(8),
B(Mov), R(0), R(12), B(SuspendGenerator), R(6), R(0), U8(8), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2), B(LdaFalse),
B(Star), R(12), B(Star), R(10),
B(LdaSmi), I8(1), B(Mov), R(8), R(9),
B(SuspendGenerator), R(6), R(0), U8(12), U8(0), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Ldar), R(12),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
B(RestoreGeneratorRegisters), R(6), R(0), U8(12), B(RestoreGeneratorRegisters), R(6), R(0), U8(8),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(7), B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(12), B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Ldar), R(12), B(Ldar), R(8),
/* 47 E> */ B(Throw), /* 47 E> */ B(Throw),
B(LdaTrue), B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(6), U8(1),
B(Star), R(14), B(Ldar), R(8),
B(Mov), R(12), R(13), /* 56 S> */ B(Return),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(54),
B(LdaZero), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Mov), R(0), R(3), B(Mov), R(0), R(3),
B(Ldar), R(0), B(Ldar), R(0),
B(JumpLoop), U8(101), I8(1), B(JumpLoop), U8(90), I8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
/* 54 E> */ B(TestEqual), R(5), U8(7), /* 54 E> */ B(TestEqual), R(5), U8(7),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(5), B(Jump), U8(5),
B(JumpLoop), U8(171), I8(0), B(JumpLoop), U8(160), I8(0),
B(LdaUndefined),
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(LdaZero),
B(Star), R(9),
B(Jump), U8(14),
B(LdaSmi), I8(-1),
B(Star), R(9),
B(Jump), U8(8),
B(Star), R(10),
B(LdaSmi), I8(1),
B(Star), R(9),
B(LdaTheHole),
B(SetPendingMessage),
B(Star), R(11),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
B(Ldar), R(11),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(10),
/* 56 S> */ B(Return),
B(Ldar), R(10),
B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(6), U8(1),
B(Ldar), R(8),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [47], Smi [45],
Smi [98], Smi [86],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [56], Smi [56],
Smi [49], Smi [48],
Smi [24], Smi [14],
Smi [7], Smi [7],
Smi [6],
Smi [9],
] ]
handlers: [ handlers: [
[52, 306, 312],
] ]
--- ---
...@@ -707,9 +633,9 @@ snippet: " ...@@ -707,9 +633,9 @@ snippet: "
} }
f(); f();
" "
frame size: 19 frame size: 18
parameter count: 1 parameter count: 1
bytecode array length: 365 bytecode array length: 356
bytecodes: [ bytecodes: [
B(Mov), R(new_target), R(7), B(Mov), R(new_target), R(7),
B(Ldar), R(new_target), B(Ldar), R(new_target),
...@@ -720,22 +646,22 @@ bytecodes: [ ...@@ -720,22 +646,22 @@ bytecodes: [
B(Star), R(8), B(Star), R(8),
B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(10), B(Star), R(9),
B(CallRuntime), U16(Runtime::kAbort), R(10), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(8), B(Star), R(8),
B(Mov), R(closure), R(10), B(Mov), R(closure), R(9),
B(Mov), R(this), R(11), B(Mov), R(this), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(10), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(9), U8(2),
B(Star), R(2), B(Star), R(2),
/* 16 E> */ B(StackCheck), /* 16 E> */ B(StackCheck),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(10), B(Star), R(9),
B(CallJSRuntime), U8(%async_function_promise_create), R(10), U8(1), B(CallJSRuntime), U8(%async_function_promise_create), R(9), U8(1),
B(Star), R(3), B(Star), R(3),
B(Mov), R(context), R(12), B(Mov), R(context), R(11),
B(Mov), R(2), R(7), B(Mov), R(2), R(7),
B(Mov), R(context), R(13), B(Mov), R(context), R(12),
/* 36 S> */ B(LdaZero), /* 36 S> */ B(LdaZero),
B(Star), R(1), B(Star), R(1),
B(Star), R(4), B(Star), R(4),
...@@ -747,8 +673,8 @@ bytecodes: [ ...@@ -747,8 +673,8 @@ bytecodes: [
/* 59 E> */ B(TestEqualStrictNoFeedback), R(8), /* 59 E> */ B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(StackCheck), B(StackCheck),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -766,110 +692,106 @@ bytecodes: [ ...@@ -766,110 +692,106 @@ bytecodes: [
/* 41 E> */ B(TestLessThan), R(0), U8(5), /* 41 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(4), B(Jump), U8(4),
B(Jump), U8(124), B(Jump), U8(115),
B(Ldar), R(8), B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(8), B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(11), B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79), B(LdaSmi), I8(79),
B(Star), R(14), B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqual), R(6), U8(6), B(TestEqual), R(6), U8(6),
B(JumpIfFalse), U8(84), B(JumpIfFalse), U8(75),
/* 23 E> */ B(StackCheck), /* 23 E> */ B(StackCheck),
/* 52 S> */ B(LdaUndefined), /* 52 S> */ B(LdaUndefined),
B(Star), R(14), B(Star), R(13),
B(Mov), R(2), R(15), B(Mov), R(2), R(14),
B(Mov), R(0), R(16), B(Mov), R(0), R(15),
B(Mov), R(3), R(17), B(Mov), R(3), R(16),
/* 58 E> */ B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4), /* 58 E> */ B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaZero), B(LdaZero),
B(Mov), R(3), R(14), B(Mov), R(3), R(13),
B(SuspendGenerator), R(7), R(0), U8(14), U8(2), B(SuspendGenerator), R(7), R(0), U8(13), U8(2),
B(Ldar), R(14), B(Ldar), R(13),
/* 61 S> */ B(Return), /* 61 S> */ B(Return),
B(RestoreGeneratorRegisters), R(7), R(0), U8(14), B(RestoreGeneratorRegisters), R(7), R(0), U8(13),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
B(Star), R(8), B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(14), B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Ldar), R(14), B(Ldar), R(13),
/* 52 E> */ B(ReThrow), /* 52 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(14), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(11),
B(LdaZero), B(LdaZero),
B(Star), R(10), B(Star), R(9),
B(Mov), R(13), R(10),
B(Jump), U8(103), B(Jump), U8(103),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Mov), R(0), R(4), B(Mov), R(0), R(4),
B(Ldar), R(0), B(Ldar), R(0),
B(JumpLoop), U8(107), I8(1), B(JumpLoop), U8(98), I8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
/* 59 E> */ B(TestEqual), R(6), U8(7), /* 59 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(5), B(Jump), U8(5),
B(JumpLoop), U8(177), I8(0), B(JumpLoop), U8(168), I8(0),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(14), B(Star), R(13),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(16), B(Star), R(15),
B(Mov), R(3), R(15), B(Mov), R(3), R(14),
B(CallJSRuntime), U8(%promise_resolve), R(14), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(13), U8(3),
B(LdaZero), B(LdaZero),
B(Star), R(10), B(Star), R(9),
B(Mov), R(3), R(11), B(Mov), R(3), R(10),
B(Jump), U8(59), B(Jump), U8(59),
B(Jump), U8(45), B(Jump), U8(45),
B(Star), R(14),
B(Ldar), R(closure),
B(CreateCatchContext), R(14), U8(5), U8(6),
B(Star), R(13), B(Star), R(13),
B(Ldar), R(closure),
B(CreateCatchContext), R(13), U8(5), U8(6),
B(Star), R(12),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(13), B(Ldar), R(12),
B(PushContext), R(14), B(PushContext), R(13),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(15), B(Star), R(14),
B(LdaImmutableCurrentContextSlot), U8(4), B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(17), B(Star), R(16),
B(LdaFalse), B(LdaFalse),
B(Star), R(18), B(Star), R(17),
B(Mov), R(3), R(16), B(Mov), R(3), R(15),
B(CallJSRuntime), U8(%promise_internal_reject), R(15), U8(4), B(CallJSRuntime), U8(%promise_internal_reject), R(14), U8(4),
B(PopContext), R(14), B(PopContext), R(13),
B(LdaZero), B(LdaZero),
B(Star), R(10), B(Star), R(9),
B(Mov), R(3), R(11), B(Mov), R(3), R(10),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(10), B(Star), R(9),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(11),
B(LdaSmi), I8(1),
B(Star), R(10), B(Star), R(10),
B(LdaSmi), I8(1),
B(Star), R(9),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(12), B(Star), R(11),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(13), B(Star), R(12),
B(Mov), R(3), R(14), B(Mov), R(3), R(13),
B(CallJSRuntime), U8(%async_function_promise_release), R(13), U8(2), B(CallJSRuntime), U8(%async_function_promise_release), R(12), U8(2),
B(Ldar), R(12), B(Ldar), R(11),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(10), B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Jump), U8(8), B(Jump), U8(8),
B(Ldar), R(11), B(Ldar), R(10),
/* 61 S> */ B(Return), /* 61 S> */ B(Return),
B(Ldar), R(11), B(Ldar), R(10),
B(ReThrow), B(ReThrow),
B(LdaUndefined), B(LdaUndefined),
/* 61 S> */ B(Return), /* 61 S> */ B(Return),
...@@ -878,7 +800,7 @@ constant pool: [ ...@@ -878,7 +800,7 @@ constant pool: [
Smi [57], Smi [57],
Smi [56], Smi [56],
Smi [55], Smi [55],
Smi [24], Smi [15],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
...@@ -886,7 +808,7 @@ constant pool: [ ...@@ -886,7 +808,7 @@ constant pool: [
Smi [9], Smi [9],
] ]
handlers: [ handlers: [
[62, 320, 326], [62, 311, 317],
[65, 275, 277], [65, 266, 268],
] ]
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