Commit 98927ea5 authored by Adam Klein's avatar Adam Klein Committed by Commit Bot

[ignition] Be smarter about register allocation in VisitSuspend

Split BytecodeGenerator::VisitSuspend into two pieces, one for
building the suspension code and one for resumption (these
are split into separate Build methods for convenience).
Each gets its own RegisterAllocationScope, which allows us to
reduce the register file size of the empty generator by 1.

For consistency, rename VisitGeneratorPrologue() to
BuildGeneratorPrologue() to match the names of the two
newly-created methods.

Bug: v8:6379
Change-Id: I08a617a44f99706cfff09bf86fb0a25a9cd6e032
Reviewed-on: https://chromium-review.googlesource.com/503593
Commit-Queue: Adam Klein <adamk@chromium.org>
Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45318}
parent 762d689c
......@@ -2388,12 +2388,13 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) {
}
}
void BytecodeGenerator::VisitSuspend(Suspend* expr) {
void BytecodeGenerator::BuildGeneratorSuspend(Suspend* expr,
Register generator) {
RegisterAllocationScope register_scope(this);
builder()->SetExpressionPosition(expr);
Register value = VisitForRegisterValue(expr->expression());
Register generator = VisitForRegisterValue(expr->generator_object());
// Save context, registers, and state. Then return.
builder()
->LoadLiteral(Smi::FromInt(expr->suspend_id()))
......@@ -2416,11 +2417,10 @@ void BytecodeGenerator::VisitSuspend(Suspend* expr) {
builder()->LoadAccumulatorWithRegister(value);
}
builder()->Return(); // Hard return (ignore any finally blocks).
}
builder()->Bind(generator_jump_table_, static_cast<int>(expr->suspend_id()));
// Upon resume, we continue here.
{
void BytecodeGenerator::BuildGeneratorResume(Suspend* expr,
Register generator) {
RegisterAllocationScope register_scope(this);
// Update state to indicate that we have finished resuming. Loop headers
......@@ -2488,7 +2488,14 @@ void BytecodeGenerator::VisitSuspend(Suspend* expr) {
builder()->Bind(&resume_with_next);
builder()->LoadAccumulatorWithRegister(input);
}
}
void BytecodeGenerator::VisitSuspend(Suspend* expr) {
Register generator = VisitForRegisterValue(expr->generator_object());
BuildGeneratorSuspend(expr, generator);
builder()->Bind(generator_jump_table_, static_cast<int>(expr->suspend_id()));
// Upon resume, we continue here.
BuildGeneratorResume(expr, generator);
}
void BytecodeGenerator::VisitThrow(Throw* expr) {
......
......@@ -135,6 +135,8 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
void BuildNewLocalWithContext(Scope* scope);
void BuildGeneratorPrologue();
void BuildGeneratorSuspend(Suspend* expr, Register generator);
void BuildGeneratorResume(Suspend* expr, Register generator);
void VisitArgumentsObject(Variable* variable);
void VisitRestArgumentsArray(Variable* rest);
......
......@@ -14,7 +14,7 @@ snippet: "
}
f();
"
frame size: 19
frame size: 18
parameter count: 1
bytecode array length: 1003
bytecodes: [
......@@ -75,54 +75,54 @@ bytecodes: [
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
/* 40 S> */ B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(LdaNamedProperty), R(14), U8(8), U8(14),
B(Star), R(13),
/* 40 E> */ B(CallProperty0), R(13), R(14), U8(12),
/* 40 E> */ B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
/* 40 S> */ B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaZero),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(155),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(15), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -210,45 +210,45 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(36),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(27),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -257,9 +257,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(20),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
B(Jump), U8(20),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -271,45 +271,45 @@ bytecodes: [
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(156),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(12),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
/* 57 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(37),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -318,9 +318,9 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(168),
B(Ldar), R(14),
B(Ldar), R(13),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
......@@ -477,7 +477,7 @@ snippet: "
}
f();
"
frame size: 19
frame size: 18
parameter count: 1
bytecode array length: 1061
bytecodes: [
......@@ -538,54 +538,54 @@ bytecodes: [
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
/* 40 S> */ B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(LdaNamedProperty), R(14), U8(8), U8(14),
B(Star), R(13),
/* 40 E> */ B(CallProperty0), R(13), R(14), U8(12),
/* 40 E> */ B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
/* 40 S> */ B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaZero),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(167),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(15), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -680,45 +680,45 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(36),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(27),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -727,9 +727,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(20),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
B(Jump), U8(20),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -741,45 +741,45 @@ bytecodes: [
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(156),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(12),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
/* 68 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(37),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -788,9 +788,9 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(191),
B(Ldar), R(14),
B(Ldar), R(13),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
......@@ -972,7 +972,7 @@ snippet: "
}
f();
"
frame size: 19
frame size: 18
parameter count: 1
bytecode array length: 1037
bytecodes: [
......@@ -1033,54 +1033,54 @@ bytecodes: [
B(LdaSmi), I8(79),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
/* 40 S> */ B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(8), U8(14),
B(Star), R(14),
B(LdaNamedProperty), R(14), U8(8), U8(14),
B(Star), R(13),
/* 40 E> */ B(CallProperty0), R(13), R(14), U8(12),
/* 40 E> */ B(CallProperty0), R(14), R(15), U8(12),
B(StaContextSlot), R(1), U8(9), U8(0),
/* 40 S> */ B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaZero),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(189),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
/* 40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(15), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(14), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(13),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -1184,45 +1184,45 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
B(Mov), R(context), R(12),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
B(StaContextSlot), R(1), U8(13), U8(0),
B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_caught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(14),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(36),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(27),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -1231,9 +1231,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(20),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(15),
B(Ldar), R(14),
B(Jump), U8(20),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -1245,45 +1245,45 @@ bytecodes: [
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(156),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(12), U8(0),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
B(StaContextSlot), R(1), U8(15), U8(0),
B(LdaUndefined),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(LdaContextSlot), R(1), U8(15), U8(0),
B(Star), R(15),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaSmi), I8(2),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(12),
B(SuspendGenerator), R(12), U8(2),
B(Ldar), R(13),
/* 114 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(37),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(1),
B(PopContext), R(1),
B(PopContext), R(1),
......@@ -1292,9 +1292,9 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(168),
B(Ldar), R(14),
B(Ldar), R(13),
B(ReThrow),
B(Ldar), R(14),
B(Ldar), R(13),
B(StaContextSlot), R(1), U8(14), U8(0),
B(LdaContextSlot), R(1), U8(14), U8(0),
B(Star), R(12),
......
......@@ -677,30 +677,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(10),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(10), U8(0),
B(Ldar), R(9),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(10),
/* 55 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(Star), R(12),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(14),
B(Mov), R(11), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(7),
B(LdaZero),
B(Star), R(6),
B(JumpConstant), U8(13),
B(Ldar), R(11),
B(Ldar), R(10),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
......@@ -939,7 +939,7 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 18
frame size: 17
parameter count: 2
bytecode array length: 740
bytecodes: [
......@@ -970,30 +970,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(9),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(8),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(14),
B(Ldar), R(10),
B(Ldar), R(9),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
......@@ -1053,34 +1053,34 @@ bytecodes: [
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
/* 40 S> */ B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(12),
B(LdaFalse),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(LdaFalse),
B(Star), R(14),
/* 46 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(13), U8(0),
B(Ldar), R(12),
B(SuspendGenerator), R(12), U8(0),
B(Ldar), R(13),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(40),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(31),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(2),
B(PopContext), R(2),
B(PopContext), R(2),
......@@ -1091,7 +1091,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(8),
B(Jump), U8(71),
B(Ldar), R(14),
B(Ldar), R(13),
/* 40 E> */ B(Throw),
B(PopContext), R(2),
B(LdaZero),
......@@ -1565,7 +1565,7 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 19
frame size: 18
parameter count: 2
bytecode array length: 765
bytecodes: [
......@@ -1654,41 +1654,41 @@ bytecodes: [
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 45 S> */ B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(13),
/* 51 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(StaContextSlot), R(1), U8(6), U8(0),
/* 45 S> */ B(LdaUndefined),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(14),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(15),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(16),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(13),
B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
B(Star), R(17),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(14), U8(4),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(14),
B(LdaZero),
B(SuspendGenerator), R(14), U8(2),
B(Ldar), R(13),
B(SuspendGenerator), R(13), U8(2),
B(Ldar), R(14),
/* 54 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(40),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(31),
B(LdaTrue),
B(Star), R(18),
B(Mov), R(15), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(PopContext), R(2),
B(PopContext), R(2),
B(PopContext), R(2),
......@@ -1699,7 +1699,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(9),
B(Jump), U8(75),
B(Ldar), R(15),
B(Ldar), R(14),
B(ReThrow),
B(PopContext), R(2),
B(LdaZero),
......
......@@ -11,7 +11,7 @@ snippet: "
function* f() { }
f();
"
frame size: 12
frame size: 11
parameter count: 1
bytecode array length: 192
bytecodes: [
......@@ -40,30 +40,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(7), U8(0),
B(Ldar), R(6),
/* 11 E> */ B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 16 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(11),
B(Mov), R(8), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
B(Star), R(10),
B(Mov), R(7), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(4),
B(LdaZero),
B(Star), R(3),
B(Jump), U8(35),
B(Ldar), R(8),
B(Ldar), R(7),
/* 11 E> */ B(Throw),
B(LdaUndefined),
B(Star), R(6),
......@@ -119,7 +119,7 @@ snippet: "
function* f() { yield 42 }
f();
"
frame size: 12
frame size: 11
parameter count: 1
bytecode array length: 276
bytecodes: [
......@@ -148,64 +148,64 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(7),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(7), U8(0),
B(Ldar), R(6),
/* 11 E> */ B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 25 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(11),
B(Mov), R(8), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
B(Star), R(10),
B(Mov), R(7), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(4),
B(LdaZero),
B(Star), R(3),
B(Jump), U8(110),
B(Ldar), R(8),
B(Ldar), R(7),
/* 11 E> */ B(Throw),
/* 16 S> */ B(LdaSmi), I8(42),
/* 16 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(6),
B(LdaFalse),
B(LdaSmi), I8(42),
B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(4),
B(LdaFalse),
B(Star), R(8),
/* 16 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(7), U8(0),
B(Ldar), R(6),
B(SuspendGenerator), R(6), U8(0),
B(Ldar), R(7),
/* 25 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(29),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(20),
B(LdaTrue),
B(Star), R(11),
B(Mov), R(8), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
B(Star), R(10),
B(Mov), R(7), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(4),
B(LdaSmi), I8(1),
B(Star), R(3),
B(Jump), U8(35),
B(Ldar), R(8),
B(Ldar), R(7),
/* 16 E> */ B(Throw),
B(LdaUndefined),
B(Star), R(6),
......@@ -267,7 +267,7 @@ snippet: "
function* f() { for (let x of [42]) yield x }
f();
"
frame size: 18
frame size: 17
parameter count: 1
bytecode array length: 736
bytecodes: [
......@@ -296,30 +296,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(8),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(15),
B(Ldar), R(10),
B(Ldar), R(9),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
......@@ -379,34 +379,34 @@ bytecodes: [
B(StaCurrentContextSlot), U8(4),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(StaCurrentContextSlot), U8(4),
/* 36 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
/* 36 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(12),
B(LdaFalse),
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(LdaFalse),
B(Star), R(14),
/* 42 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(13), U8(0),
B(Ldar), R(12),
B(SuspendGenerator), R(12), U8(0),
B(Ldar), R(13),
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(40),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(31),
B(LdaTrue),
B(Star), R(17),
B(Mov), R(14), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(PopContext), R(2),
B(PopContext), R(2),
B(PopContext), R(2),
......@@ -417,7 +417,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(8),
B(Jump), U8(71),
B(Ldar), R(14),
B(Ldar), R(13),
/* 36 E> */ B(Throw),
B(PopContext), R(2),
B(LdaZero),
......
......@@ -11,7 +11,7 @@ top level: yes
snippet: "
import \"bar\";
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 136
bytecodes: [
......@@ -43,29 +43,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 13 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 13 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(3),
......@@ -85,7 +85,7 @@ handlers: [
snippet: "
import {foo} from \"bar\";
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 136
bytecodes: [
......@@ -117,29 +117,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 24 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 24 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(3),
......@@ -161,7 +161,7 @@ snippet: "
goo(42);
{ let x; { goo(42) } };
"
frame size: 10
frame size: 9
parameter count: 2
bytecode array length: 198
bytecodes: [
......@@ -193,27 +193,27 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(5),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(5), U8(0),
B(Ldar), R(4),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(5),
/* 64 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(5), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(9),
B(Mov), R(6), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
/* 64 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
/* 32 S> */ B(LdaModuleVariable), I8(-1), U8(0),
B(JumpIfNotHole), U8(11),
......@@ -264,7 +264,7 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 10
frame size: 9
parameter count: 2
bytecode array length: 178
bytecodes: [
......@@ -296,27 +296,27 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(5),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(5), U8(0),
B(Ldar), R(4),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(5),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(5), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(9),
B(Mov), R(6), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
/* 49 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
/* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
......@@ -359,7 +359,7 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 10
frame size: 9
parameter count: 2
bytecode array length: 182
bytecodes: [
......@@ -393,27 +393,27 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(5),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(5), U8(0),
B(Ldar), R(4),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(5),
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(5), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(9),
B(Mov), R(6), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
/* 49 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
/* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
......@@ -456,7 +456,7 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 10
frame size: 9
parameter count: 2
bytecode array length: 186
bytecodes: [
......@@ -490,27 +490,27 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(5),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(5), U8(0),
B(Ldar), R(4),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(5),
/* 51 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(2),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(5), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(7),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(9),
B(Mov), R(6), R(8),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
/* 51 S> */ B(Return),
B(Ldar), R(6),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
/* 19 S> */ B(LdaSmi), I8(42),
/* 19 E> */ B(StaModuleVariable), I8(1), U8(0),
......@@ -551,7 +551,7 @@ handlers: [
snippet: "
export default (function () {});
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 147
bytecodes: [
......@@ -585,29 +585,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 32 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 32 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(2), U8(3), U8(0),
B(StaModuleVariable), I8(1), U8(0),
......@@ -630,7 +630,7 @@ handlers: [
snippet: "
export default (class {});
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 180
bytecodes: [
......@@ -664,29 +664,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 26 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 26 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(2), U8(3), U8(0),
B(Star), R(3),
......@@ -721,7 +721,7 @@ handlers: [
snippet: "
export {foo as goo} from \"bar\"
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 136
bytecodes: [
......@@ -753,29 +753,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 30 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 30 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(3),
......@@ -795,7 +795,7 @@ handlers: [
snippet: "
export * from \"bar\"
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 136
bytecodes: [
......@@ -827,29 +827,29 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 19 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 19 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
B(Ldar), R(5),
B(Ldar), R(4),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(3),
......@@ -870,7 +870,7 @@ snippet: "
import * as foo from \"bar\"
foo.f(foo, foo.x);
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 174
bytecodes: [
......@@ -906,27 +906,27 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(4),
B(LdaZero),
/* 0 E> */ B(SuspendGenerator), R(4), U8(0),
B(Ldar), R(3),
/* 0 E> */ B(SuspendGenerator), R(3), U8(0),
B(Ldar), R(4),
/* 45 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
B(Star), R(5),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(13),
B(LdaTrue),
B(Star), R(8),
B(Mov), R(5), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(7), U8(2),
B(Star), R(7),
B(Mov), R(4), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 45 S> */ B(Return),
B(Ldar), R(5),
B(Ldar), R(4),
/* 0 E> */ B(Throw),
/* 27 S> */ B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(4),
......
......@@ -271,7 +271,7 @@ snippet: "
}
f();
"
frame size: 15
frame size: 14
parameter count: 1
bytecode array length: 350
bytecodes: [
......@@ -300,30 +300,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(10),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(10), U8(0),
B(Ldar), R(9),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(10),
/* 62 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(Star), R(12),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(14),
B(Mov), R(11), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(7),
B(LdaZero),
B(Star), R(6),
B(Jump), U8(193),
B(Ldar), R(11),
B(Ldar), R(10),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(1),
......@@ -453,7 +453,7 @@ snippet: "
}
f();
"
frame size: 14
frame size: 13
parameter count: 1
bytecode array length: 469
bytecodes: [
......@@ -482,30 +482,30 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(9),
B(LdaZero),
/* 11 E> */ B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(8),
/* 11 E> */ B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(19),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(Star), R(6),
B(LdaZero),
B(Star), R(5),
B(JumpConstant), U8(6),
B(Ldar), R(10),
B(Ldar), R(9),
/* 11 E> */ B(Throw),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
......@@ -569,34 +569,34 @@ bytecodes: [
B(TestEqual), R(8), U8(6),
B(JumpIfFalse), U8(102),
/* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaCurrentContextSlot), U8(4),
/* 47 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(8),
B(LdaFalse),
B(LdaCurrentContextSlot), U8(4),
B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(8),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(LdaFalse),
B(Star), R(10),
/* 53 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(9),
B(LdaSmi), I8(1),
B(SuspendGenerator), R(9), U8(0),
B(Ldar), R(8),
B(SuspendGenerator), R(8), U8(0),
B(Ldar), R(9),
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(37),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(28),
B(LdaTrue),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(Star), R(12),
B(Mov), R(9), R(11),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
B(PopContext), R(2),
B(PopContext), R(2),
B(PopContext), R(1),
......@@ -605,7 +605,7 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(73),
B(Ldar), R(10),
B(Ldar), R(9),
/* 47 E> */ B(Throw),
B(LdaZero),
B(StaContextSlot), R(1), U8(7), U8(0),
......@@ -862,7 +862,7 @@ snippet: "
}
f();
"
frame size: 15
frame size: 14
parameter count: 1
bytecode array length: 508
bytecodes: [
......@@ -953,41 +953,41 @@ bytecodes: [
B(TestEqual), R(9), U8(6),
B(JumpIfFalse), U8(128),
/* 23 E> */ B(StackCheck),
/* 52 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(9),
/* 58 S> */ B(LdaCurrentContextSlot), U8(4),
B(StaContextSlot), R(1), U8(5), U8(0),
/* 52 S> */ B(LdaUndefined),
B(Star), R(9),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(10),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(11),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(LdaContextSlot), R(1), U8(5), U8(0),
B(Star), R(12),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(9), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(9),
B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(13),
B(CallJSRuntime), U8(%async_function_await_uncaught), R(10), U8(4),
B(LdaContextSlot), R(1), U8(6), U8(0),
B(Star), R(10),
B(LdaZero),
B(SuspendGenerator), R(10), U8(2),
B(Ldar), R(9),
B(SuspendGenerator), R(9), U8(2),
B(Ldar), R(10),
/* 61 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
B(Star), R(12),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(40),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(12),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(31),
B(LdaTrue),
B(Star), R(14),
B(Mov), R(11), R(13),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
B(Star), R(13),
B(Mov), R(10), R(12),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
B(PopContext), R(2),
B(PopContext), R(2),
B(PopContext), R(1),
......@@ -998,7 +998,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(Jump), U8(136),
B(Ldar), R(11),
B(Ldar), R(10),
B(ReThrow),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
......
......@@ -204,17 +204,17 @@ function testClasses() {
|R|}
async function asyncFoo() {
|_|await Promise.resolve().then(v => v |_|* 2|R|);
|_|await Promise.|C|resolve().|C|then(v => v |_|* 2|R|);
|C|return42();
|_|await |C|asyncBoo();
|R|}
async function asyncBoo() {
|_|await Promise.resolve();
|_|await Promise.|C|resolve();
|R|}
async function testAsyncAwait() {
|_|await asyncFoo();
|_|await |C|asyncFoo();
|_|await |C|awaitBoo();
|R|}
......@@ -247,7 +247,7 @@ async function testPromiseComplex() {
var testPromise = |C|new Promise(resolve => nextTest |_|= resolve|R|);
async function main() {
async function foo() {
|_|await Promise.resolve();
|_|await Promise.|C|resolve();
|_|return 42;
|R|}
var x = |_|1;
......
......@@ -798,11 +798,21 @@ break at:
Running test: testAsyncAwait
break at:
async function testAsyncAwait() {
#await asyncFoo();
await awaitBoo();
break at:
async function testAsyncAwait() {
await #asyncFoo();
await awaitBoo();
break at:
async function asyncFoo() {
#await Promise.resolve().then(v => v * 2);
return42();
break at:
async function asyncFoo() {
await Promise.resolve().#then(v => v * 2);
......@@ -833,6 +843,11 @@ break at:
#}
break at:
async function asyncBoo() {
#await Promise.resolve();
}
break at:
async function asyncBoo() {
await Promise.#resolve();
......@@ -870,6 +885,11 @@ break at:
#setTimeout(returnCall, 0);
await foo();
break at:
setTimeout(returnCall, 0);
#await foo();
await foo();
break at:
setTimeout(returnCall, 0);
await #foo();
......@@ -895,6 +915,11 @@ break at:
#setTimeout(resolveNested, 0);
await p;
break at:
setTimeout(resolveNested, 0);
#await p;
}
break at:
setTimeout(resolveNested, 0);
await #p;
......@@ -925,6 +950,11 @@ break at:
#setTimeout(resolveNested, 0);
await p;
break at:
setTimeout(resolveNested, 0);
#await p;
}
break at:
setTimeout(resolveNested, 0);
await #p;
......@@ -1052,6 +1082,11 @@ break at:
returnFunction(emptyFunction(), x++, --y, x => 2 * x, returnCall())().a = await #foo((a => 2 *a)(5));
nextTest();
break at:
async function foo() {
#await Promise.resolve();
return 42;
break at:
async function foo() {
await Promise.#resolve();
......
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