[ignition] Use jump table for generator resume mode

Bug: v8:6351
Change-Id: Iad82fcfb4172d7a9cbadffa1e40fd1cd26866895
Reviewed-on: https://chromium-review.googlesource.com/521107
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45705}
This commit is contained in:
Leszek Swirski 2017-06-05 14:23:20 +01:00 committed by Commit Bot
parent a234136074
commit 0ef0fc50b1
6 changed files with 554 additions and 694 deletions

View File

@ -2581,49 +2581,51 @@ void BytecodeGenerator::BuildGeneratorResume(
if (expr->on_abrupt_resume() != Suspend::kNoControl) {
builder()->StoreAccumulatorInRegister(input);
Register resume_mode = register_allocator()->NewRegister();
builder()
->CallRuntime(Runtime::kInlineGeneratorGetResumeMode, generator)
.StoreAccumulatorInRegister(resume_mode);
builder()->CallRuntime(Runtime::kInlineGeneratorGetResumeMode, generator);
// Now dispatch on resume mode.
BytecodeLabel resume_with_next;
BytecodeLabel resume_with_throw;
STATIC_ASSERT(JSGeneratorObject::kNext + 1 == JSGeneratorObject::kReturn);
BytecodeJumpTable* jump_table =
builder()->AllocateJumpTable(2, JSGeneratorObject::kNext);
builder()
->LoadLiteral(Smi::FromInt(JSGeneratorObject::kNext))
.CompareOperation(Token::EQ_STRICT, resume_mode)
.JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &resume_with_next)
.LoadLiteral(Smi::FromInt(JSGeneratorObject::kThrow))
.CompareOperation(Token::EQ_STRICT, resume_mode)
.JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &resume_with_throw);
// Fall through for resuming with return.
builder()->SwitchOnSmiNoFeedback(jump_table);
if (expr->is_async_generator()) {
// Async generator methods will produce the iter result object.
{
// Resume with throw (switch fallthrough).
// TODO(leszeks): Add a debug-only check that the accumulator is
// JSGeneratorObject::kThrow.
builder()->SetExpressionPosition(expr);
builder()->LoadAccumulatorWithRegister(input);
execution_control()->AsyncReturnAccumulator();
} else {
RegisterList args = register_allocator()->NewRegisterList(2);
builder()
->MoveRegister(input, args[0])
.LoadTrue()
.StoreAccumulatorInRegister(args[1])
.CallRuntime(Runtime::kInlineCreateIterResultObject, args);
execution_control()->ReturnAccumulator();
if (expr->rethrow_on_exception()) {
builder()->ReThrow();
} else {
builder()->Throw();
}
}
builder()->Bind(&resume_with_throw);
builder()->SetExpressionPosition(expr);
builder()->LoadAccumulatorWithRegister(input);
if (expr->rethrow_on_exception()) {
builder()->ReThrow();
} else {
builder()->Throw();
{
// Resume with return.
builder()->Bind(jump_table, JSGeneratorObject::kReturn);
if (expr->is_async_generator()) {
// Async generator methods will produce the iter result object.
builder()->LoadAccumulatorWithRegister(input);
execution_control()->AsyncReturnAccumulator();
} else {
RegisterList args = register_allocator()->NewRegisterList(2);
builder()
->MoveRegister(input, args[0])
.LoadTrue()
.StoreAccumulatorInRegister(args[1])
.CallRuntime(Runtime::kInlineCreateIterResultObject, args);
execution_control()->ReturnAccumulator();
}
}
builder()->Bind(&resume_with_next);
builder()->LoadAccumulatorWithRegister(input);
{
// Resume with next.
builder()->Bind(jump_table, JSGeneratorObject::kNext);
builder()->LoadAccumulatorWithRegister(input);
}
}
}

View File

@ -16,7 +16,7 @@ snippet: "
"
frame size: 27
parameter count: 1
bytecode array length: 739
bytecode array length: 712
bytecodes: [
B(Mov), R(new_target), R(11),
B(Ldar), R(new_target),
@ -91,31 +91,25 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(19),
B(LdaZero),
B(Star), R(18),
B(Jump), U8(101),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(Jump), U8(98),
B(Mov), R(23), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(LdaNamedProperty), R(5), U8(10), U8(16),
B(JumpIfToBooleanTrue), U8(25),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(LdaNamedProperty), R(5), U8(11), U8(18),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(6),
@ -124,11 +118,11 @@ bytecodes: [
B(Mov), R(3), R(0),
B(LdaZero),
B(Star), R(6),
B(JumpLoop), U8(153), I8(0),
B(JumpLoop), U8(144), I8(0),
B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(11),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
@ -154,22 +148,22 @@ bytecodes: [
B(Star), R(20),
B(LdaZero),
B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrueConstant), U8(16),
B(LdaNamedProperty), R(4), U8(12), U8(22),
B(JumpIfTrue), U8(253),
B(LdaNamedProperty), R(4), U8(14), U8(22),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(15),
B(Jump), U8(242),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(145),
B(JumpIfFalse), U8(136),
B(Ldar), R(9),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(21),
B(LdaConstant), U8(13),
B(LdaConstant), U8(15),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
@ -195,35 +189,29 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(23),
B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(Jump), U8(237),
B(Ldar), R(23),
B(ReThrow),
B(Jump), U8(225),
B(Ldar), R(23),
B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(14),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(21),
B(PushContext), R(22),
B(PopContext), R(22),
B(Jump), U8(110),
B(Jump), U8(101),
B(LdaUndefined),
B(Star), R(22),
B(Mov), R(9), R(24),
@ -245,23 +233,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(21), U8(1),
B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(21), U8(1),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(22),
B(ReThrow),
B(LdaTrue),
B(Star), R(25),
B(Mov), R(22), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
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(Star), R(14),
B(Jump), U8(121),
B(Ldar), R(22),
B(ReThrow),
B(Jump), U8(118),
B(Mov), R(22), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4),
@ -270,7 +252,7 @@ bytecodes: [
B(Ldar), R(20),
B(SetPendingMessage),
B(Ldar), R(18),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(14),
@ -291,7 +273,7 @@ bytecodes: [
B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(10), U8(19),
B(CreateCatchContext), R(18), U8(12), U8(23),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
@ -326,7 +308,7 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(20), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(15),
/* 57 S> */ B(Return),
@ -337,22 +319,26 @@ bytecodes: [
]
constant pool: [
Smi [102],
Smi [406],
Smi [522],
Smi [397],
Smi [504],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [59],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24],
Smi [7],
FIXED_ARRAY_TYPE,
Smi [260],
Smi [271],
Smi [24],
Smi [7],
Smi [6],
Smi [14],
FIXED_ARRAY_TYPE,
@ -360,11 +346,11 @@ constant pool: [
Smi [9],
]
handlers: [
[62, 694, 700],
[65, 649, 651],
[71, 315, 321],
[74, 275, 277],
[382, 476, 478],
[62, 667, 673],
[65, 622, 624],
[71, 306, 312],
[74, 266, 268],
[373, 458, 460],
]
---
@ -376,7 +362,7 @@ snippet: "
"
frame size: 27
parameter count: 1
bytecode array length: 767
bytecode array length: 740
bytecodes: [
B(Mov), R(new_target), R(11),
B(Ldar), R(new_target),
@ -451,31 +437,25 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(19),
B(LdaZero),
B(Star), R(18),
B(Jump), U8(104),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(Jump), U8(101),
B(Mov), R(23), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(LdaNamedProperty), R(5), U8(10), U8(16),
B(JumpIfToBooleanTrue), U8(28),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(LdaNamedProperty), R(5), U8(11), U8(18),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(6),
@ -489,7 +469,7 @@ bytecodes: [
B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(11),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
@ -515,22 +495,22 @@ bytecodes: [
B(Star), R(20),
B(LdaZero),
B(TestEqualStrict), R(6), U8(21),
B(JumpIfTrueConstant), U8(16),
B(LdaNamedProperty), R(4), U8(12), U8(22),
B(JumpIfTrue), U8(253),
B(LdaNamedProperty), R(4), U8(14), U8(22),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(15),
B(Jump), U8(242),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(25),
B(JumpIfFalse), U8(145),
B(JumpIfFalse), U8(136),
B(Ldar), R(9),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(21),
B(LdaConstant), U8(13),
B(LdaConstant), U8(15),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
@ -556,35 +536,29 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(23),
B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(Jump), U8(246),
B(Ldar), R(23),
B(ReThrow),
B(Jump), U8(234),
B(Ldar), R(23),
B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(14),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(21),
B(PushContext), R(22),
B(PopContext), R(22),
B(Jump), U8(110),
B(Jump), U8(101),
B(LdaUndefined),
B(Star), R(22),
B(Mov), R(9), R(24),
@ -606,23 +580,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(21), U8(1),
B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(21), U8(1),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(22),
B(ReThrow),
B(LdaTrue),
B(Star), R(25),
B(Mov), R(22), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
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(Star), R(14),
B(Jump), U8(130),
B(Ldar), R(22),
B(ReThrow),
B(Jump), U8(127),
B(Mov), R(22), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4),
@ -631,7 +599,7 @@ bytecodes: [
B(Ldar), R(20),
B(SetPendingMessage),
B(Ldar), R(18),
B(SwitchOnSmiNoFeedback), U8(17), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0),
B(Jump), U8(22),
B(LdaZero),
B(Star), R(14),
@ -656,7 +624,7 @@ bytecodes: [
B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(10), U8(20),
B(CreateCatchContext), R(18), U8(12), U8(24),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
@ -691,7 +659,7 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(25), U8(3), I8(0),
B(Jump), U8(24),
B(Ldar), R(15),
/* 68 S> */ B(Return),
@ -709,22 +677,26 @@ bytecodes: [
]
constant pool: [
Smi [102],
Smi [409],
Smi [525],
Smi [400],
Smi [507],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [59],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24],
Smi [7],
FIXED_ARRAY_TYPE,
Smi [260],
Smi [271],
Smi [24],
Smi [7],
Smi [6],
Smi [14],
Smi [23],
@ -734,11 +706,11 @@ constant pool: [
Smi [25],
]
handlers: [
[62, 706, 712],
[65, 661, 663],
[71, 318, 324],
[74, 278, 280],
[385, 479, 481],
[62, 679, 685],
[65, 634, 636],
[71, 309, 315],
[74, 269, 271],
[376, 461, 463],
]
---
@ -753,7 +725,7 @@ snippet: "
"
frame size: 27
parameter count: 1
bytecode array length: 757
bytecode array length: 730
bytecodes: [
B(Mov), R(new_target), R(11),
B(Ldar), R(new_target),
@ -828,31 +800,25 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(19),
B(LdaZero),
B(Star), R(18),
B(Jump), U8(119),
B(Ldar), R(23),
/* 40 E> */ B(ReThrow),
B(Jump), U8(116),
B(Mov), R(23), R(5),
/* 40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(8), U8(16),
B(LdaNamedProperty), R(5), U8(10), U8(16),
B(JumpIfToBooleanTrue), U8(43),
B(LdaNamedProperty), R(5), U8(9), U8(18),
B(LdaNamedProperty), R(5), U8(11), U8(18),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(6),
@ -869,11 +835,11 @@ bytecodes: [
/* 103 S> */ B(Jump), U8(8),
B(LdaZero),
B(Star), R(6),
B(JumpLoop), U8(171), I8(0),
B(JumpLoop), U8(162), I8(0),
B(Jump), U8(40),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(11),
B(CreateCatchContext), R(22), U8(12), U8(13),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
@ -899,22 +865,22 @@ bytecodes: [
B(Star), R(20),
B(LdaZero),
B(TestEqualStrict), R(6), U8(23),
B(JumpIfTrueConstant), U8(16),
B(LdaNamedProperty), R(4), U8(12), U8(24),
B(JumpIfTrue), U8(253),
B(LdaNamedProperty), R(4), U8(14), U8(24),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(JumpConstant), U8(15),
B(Jump), U8(242),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(6), U8(27),
B(JumpIfFalse), U8(145),
B(JumpIfFalse), U8(136),
B(Ldar), R(9),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(21),
B(LdaConstant), U8(13),
B(LdaConstant), U8(15),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
@ -940,35 +906,29 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(22), U8(1),
B(Star), R(23),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(22), U8(1),
B(Star), R(24),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(24),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Ldar), R(23),
B(ReThrow),
B(LdaTrue),
B(Star), R(26),
B(Mov), R(23), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(25),
B(Mov), R(23), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(Jump), U8(237),
B(Ldar), R(23),
B(ReThrow),
B(Jump), U8(225),
B(Ldar), R(23),
B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(10), U8(14),
B(CreateCatchContext), R(22), U8(12), U8(18),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
B(Ldar), R(21),
B(PushContext), R(22),
B(PopContext), R(22),
B(Jump), U8(110),
B(Jump), U8(101),
B(LdaUndefined),
B(Star), R(22),
B(Mov), R(9), R(24),
@ -990,23 +950,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(21), U8(1),
B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(21), U8(1),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Ldar), R(22),
B(ReThrow),
B(LdaTrue),
B(Star), R(25),
B(Mov), R(22), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
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(Star), R(14),
B(Jump), U8(121),
B(Ldar), R(22),
B(ReThrow),
B(Jump), U8(118),
B(Mov), R(22), R(10),
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
B(JumpIfToBooleanFalse), U8(4),
@ -1015,7 +969,7 @@ bytecodes: [
B(Ldar), R(20),
B(SetPendingMessage),
B(Ldar), R(18),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(21), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(14),
@ -1036,7 +990,7 @@ bytecodes: [
B(Jump), U8(45),
B(Star), R(18),
B(Ldar), R(closure),
B(CreateCatchContext), R(18), U8(10), U8(19),
B(CreateCatchContext), R(18), U8(12), U8(23),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
@ -1071,7 +1025,7 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(20), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(24), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(15),
/* 114 S> */ B(Return),
@ -1082,22 +1036,26 @@ bytecodes: [
]
constant pool: [
Smi [102],
Smi [424],
Smi [540],
Smi [415],
Smi [522],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
Smi [59],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [24],
Smi [7],
FIXED_ARRAY_TYPE,
Smi [260],
Smi [271],
Smi [24],
Smi [7],
Smi [6],
Smi [14],
FIXED_ARRAY_TYPE,
@ -1105,11 +1063,11 @@ constant pool: [
Smi [9],
]
handlers: [
[62, 712, 718],
[65, 667, 669],
[71, 333, 339],
[74, 293, 295],
[400, 494, 496],
[62, 685, 691],
[65, 640, 642],
[71, 324, 330],
[74, 284, 286],
[391, 476, 478],
]
---

View File

@ -643,7 +643,7 @@ snippet: "
"
frame size: 24
parameter count: 2
bytecode array length: 446
bytecode array length: 437
bytecodes: [
B(Mov), R(new_target), R(11),
B(Ldar), R(new_target),
@ -681,36 +681,30 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(18), U8(1),
B(Star), R(19),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(18), U8(1),
B(Star), R(20),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(20),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(20),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(19),
/* 11 E> */ B(Throw),
B(LdaTrue),
B(Star), R(22),
B(Mov), R(19), R(21),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(21), U8(2),
B(Star), R(21),
B(Mov), R(19), R(20),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(20), U8(2),
B(Star), R(16),
B(LdaZero),
B(Star), R(15),
B(JumpConstant), U8(10),
B(Ldar), R(19),
/* 11 E> */ B(Throw),
B(JumpConstant), U8(12),
B(LdaZero),
B(Star), R(7),
B(Mov), R(context), R(20),
B(Mov), R(context), R(21),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(22),
B(LdaNamedProperty), R(22), U8(1), U8(3),
B(LdaNamedProperty), R(22), U8(3), U8(3),
B(Star), R(23),
B(CallProperty0), R(23), R(22), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(5),
/* 30 S> */ B(LdaNamedProperty), R(5), U8(2), U8(9),
/* 30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(9),
B(Star), R(22),
B(CallProperty0), R(22), R(5), U8(7),
B(Star), R(6),
@ -718,9 +712,9 @@ bytecodes: [
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(3), U8(11),
B(LdaNamedProperty), R(6), U8(5), U8(11),
B(JumpIfToBooleanTrue), U8(28),
B(LdaNamedProperty), R(6), U8(4), U8(13),
B(LdaNamedProperty), R(6), U8(6), U8(13),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(7),
@ -734,7 +728,7 @@ bytecodes: [
B(Jump), U8(36),
B(Star), R(22),
B(Ldar), R(closure),
/* 50 E> */ B(CreateCatchContext), R(22), U8(5), U8(6),
/* 50 E> */ B(CreateCatchContext), R(22), U8(7), U8(8),
B(PushContext), R(22),
B(Star), R(21),
B(LdaSmi), I8(2),
@ -758,7 +752,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(5), U8(7), U8(17),
B(LdaNamedProperty), R(5), U8(9), U8(17),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -772,7 +766,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(21),
B(LdaConstant), U8(8),
B(LdaConstant), U8(10),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
@ -783,7 +777,7 @@ bytecodes: [
B(Jump), U8(20),
B(Star), R(22),
B(Ldar), R(closure),
B(CreateCatchContext), R(22), U8(5), U8(9),
B(CreateCatchContext), R(22), U8(7), U8(11),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
@ -830,7 +824,7 @@ bytecodes: [
B(Ldar), R(17),
B(SetPendingMessage),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(16),
/* 55 S> */ B(Return),
@ -841,6 +835,8 @@ bytecodes: [
]
constant pool: [
Smi [58],
Smi [24],
Smi [7],
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
@ -850,15 +846,15 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [298],
Smi [295],
Smi [6],
Smi [9],
]
handlers: [
[60, 407, 413],
[132, 250, 256],
[135, 214, 216],
[316, 326, 328],
[60, 398, 404],
[123, 241, 247],
[126, 205, 207],
[307, 317, 319],
]
---
@ -868,9 +864,9 @@ snippet: "
}
f([1, 2, 3]);
"
frame size: 26
frame size: 25
parameter count: 2
bytecode array length: 552
bytecode array length: 534
bytecodes: [
B(Mov), R(new_target), R(10),
B(Ldar), R(new_target),
@ -908,44 +904,38 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(17), U8(1),
B(Star), R(18),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(17), U8(1),
B(Star), R(19),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(19),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(19),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(18),
/* 11 E> */ B(Throw),
B(LdaTrue),
B(Star), R(21),
B(Mov), R(18), R(20),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(20), U8(2),
B(Star), R(20),
B(Mov), R(18), R(19),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(19), U8(2),
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(JumpConstant), U8(14),
B(Ldar), R(18),
/* 11 E> */ B(Throw),
B(JumpConstant), U8(18),
B(LdaZero),
B(Star), R(6),
B(Mov), R(context), R(19),
B(Mov), R(context), R(20),
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
B(Star), R(21),
B(LdaNamedProperty), R(21), U8(2), U8(3),
B(LdaNamedProperty), R(21), U8(4), U8(3),
B(Star), R(22),
B(CallProperty0), R(22), R(21), U8(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(LdaSmi), I8(-2),
/* 35 E> */ B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
/* 30 S> */ B(LdaNamedProperty), R(4), U8(4), U8(9),
/* 30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(9),
B(Star), R(21),
B(CallProperty0), R(21), R(4), U8(7),
B(Star), R(5),
@ -953,9 +943,9 @@ bytecodes: [
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(5), U8(11),
B(JumpIfToBooleanTrue), U8(101),
B(LdaNamedProperty), R(5), U8(6), U8(13),
B(LdaNamedProperty), R(5), U8(7), U8(11),
B(JumpIfToBooleanTrue), U8(92),
B(LdaNamedProperty), R(5), U8(8), U8(13),
B(Star), R(7),
B(LdaSmi), I8(2),
B(Star), R(6),
@ -978,30 +968,24 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(21), U8(1),
B(Star), R(22),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(21), U8(1),
B(Star), R(23),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(23),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
B(Ldar), R(22),
/* 40 E> */ B(Throw),
B(LdaTrue),
B(Star), R(25),
B(Mov), R(22), R(24),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(24), U8(2),
B(Star), R(24),
B(Mov), R(22), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(18),
B(LdaZero),
B(Star), R(17),
B(Jump), U8(59),
B(Ldar), R(22),
/* 40 E> */ B(Throw),
B(Jump), U8(56),
B(LdaZero),
B(Star), R(6),
B(JumpLoop), U8(147), I8(0),
B(JumpLoop), U8(138), I8(0),
B(Jump), U8(36),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(7), U8(8),
B(CreateCatchContext), R(21), U8(11), U8(12),
B(PushContext), R(21),
B(Star), R(20),
B(LdaSmi), I8(2),
@ -1025,7 +1009,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(6), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(4), U8(9), U8(17),
B(LdaNamedProperty), R(4), U8(13), U8(17),
B(Star), R(8),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -1039,7 +1023,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(20),
B(LdaConstant), U8(10),
B(LdaConstant), U8(14),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw),
@ -1050,7 +1034,7 @@ bytecodes: [
B(Jump), U8(20),
B(Star), R(21),
B(Ldar), R(closure),
B(CreateCatchContext), R(21), U8(7), U8(11),
B(CreateCatchContext), R(21), U8(11), U8(15),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
@ -1069,7 +1053,7 @@ bytecodes: [
B(Ldar), R(19),
B(SetPendingMessage),
B(Ldar), R(17),
B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(19),
B(LdaZero),
B(Star), R(14),
@ -1101,7 +1085,7 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(19), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(15),
/* 49 S> */ B(Return),
@ -1112,12 +1096,16 @@ bytecodes: [
]
constant pool: [
Smi [58],
Smi [141],
Smi [132],
Smi [24],
Smi [7],
SYMBOL_TYPE,
Smi [91],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
@ -1125,15 +1113,15 @@ constant pool: [
FIXED_ARRAY_TYPE,
Smi [6],
Smi [14],
Smi [404],
Smi [392],
Smi [6],
Smi [9],
]
handlers: [
[60, 513, 519],
[132, 344, 350],
[135, 308, 310],
[411, 421, 423],
[60, 495, 501],
[123, 326, 332],
[126, 290, 292],
[393, 403, 405],
]
---
@ -1357,7 +1345,7 @@ snippet: "
"
frame size: 28
parameter count: 2
bytecode array length: 558
bytecode array length: 549
bytecodes: [
B(Mov), R(new_target), R(11),
B(Ldar), R(new_target),
@ -1417,7 +1405,7 @@ bytecodes: [
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(4), U8(11),
B(JumpIfToBooleanTrue), U8(107),
B(JumpIfToBooleanTrue), U8(98),
B(LdaNamedProperty), R(6), U8(5), U8(13),
B(Star), R(8),
B(LdaSmi), I8(2),
@ -1443,30 +1431,24 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(23), U8(1),
B(Star), R(24),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(23), U8(1),
B(Star), R(25),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(25),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(25),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Ldar), R(24),
/* 45 E> */ B(ReThrow),
B(LdaTrue),
B(Star), R(27),
B(Mov), R(24), R(26),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(26), U8(2),
B(Star), R(26),
B(Mov), R(24), R(25),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(25), U8(2),
B(Star), R(20),
B(LdaZero),
B(Star), R(19),
B(Jump), U8(63),
B(Ldar), R(24),
/* 45 E> */ B(ReThrow),
B(Jump), U8(60),
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(153), I8(0),
B(JumpLoop), U8(144), I8(0),
B(Jump), U8(40),
B(Star), R(23),
B(Ldar), R(closure),
B(CreateCatchContext), R(23), U8(6), U8(7),
B(CreateCatchContext), R(23), U8(8), U8(9),
B(Star), R(22),
B(LdaTheHole),
B(SetPendingMessage),
@ -1493,7 +1475,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(16),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(5), U8(8), U8(17),
B(LdaNamedProperty), R(5), U8(10), U8(17),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -1507,7 +1489,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(22),
B(LdaConstant), U8(9),
B(LdaConstant), U8(11),
B(Star), R(23),
B(CallRuntime), U16(Runtime::kNewTypeError), R(22), U8(2),
B(Throw),
@ -1518,7 +1500,7 @@ bytecodes: [
B(Jump), U8(20),
B(Star), R(23),
B(Ldar), R(closure),
B(CreateCatchContext), R(23), U8(6), U8(10),
B(CreateCatchContext), R(23), U8(8), U8(12),
B(Star), R(22),
B(LdaTheHole),
B(SetPendingMessage),
@ -1537,7 +1519,7 @@ bytecodes: [
B(Ldar), R(21),
B(SetPendingMessage),
B(Ldar), R(19),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(15),
@ -1558,7 +1540,7 @@ bytecodes: [
B(Jump), U8(45),
B(Star), R(19),
B(Ldar), R(closure),
B(CreateCatchContext), R(19), U8(6), U8(13),
B(CreateCatchContext), R(19), U8(8), U8(15),
B(Star), R(18),
B(LdaTheHole),
B(SetPendingMessage),
@ -1593,7 +1575,7 @@ bytecodes: [
B(Ldar), R(17),
B(SetPendingMessage),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(16),
/* 54 S> */ B(Return),
@ -1609,6 +1591,8 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
@ -1621,10 +1605,10 @@ constant pool: [
Smi [9],
]
handlers: [
[70, 513, 519],
[73, 468, 470],
[79, 301, 307],
[82, 261, 263],
[368, 378, 380],
[70, 504, 510],
[73, 459, 461],
[79, 292, 298],
[82, 252, 254],
[359, 369, 371],
]

View File

@ -11,9 +11,9 @@ snippet: "
function* f() { }
f();
"
frame size: 12
frame size: 11
parameter count: 1
bytecode array length: 174
bytecode array length: 165
bytecodes: [
B(Mov), R(new_target), R(1),
B(Ldar), R(new_target),
@ -47,23 +47,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(8),
/* 11 E> */ B(Throw),
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(8), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(34),
B(Ldar), R(8),
/* 11 E> */ B(Throw),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(7),
B(LdaTrue),
@ -86,7 +80,7 @@ bytecodes: [
B(Ldar), R(6),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
/* 16 S> */ B(Return),
@ -97,11 +91,13 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [24],
Smi [7],
Smi [6],
Smi [9],
]
handlers: [
[52, 135, 141],
[52, 126, 132],
]
---
@ -109,9 +105,9 @@ snippet: "
function* f() { yield 42 }
f();
"
frame size: 12
frame size: 11
parameter count: 1
bytecode array length: 251
bytecode array length: 233
bytecodes: [
B(Mov), R(new_target), R(1),
B(Ldar), R(new_target),
@ -145,23 +141,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(8),
/* 11 E> */ B(Throw),
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(8), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(111),
B(Ldar), R(8),
/* 11 E> */ B(Throw),
B(Jump), U8(99),
/* 16 S> */ B(LdaSmi), I8(42),
B(Star), R(8),
B(LdaFalse),
@ -179,23 +169,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(Ldar), R(8),
/* 16 E> */ B(Throw),
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(8), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(5),
B(LdaZero),
B(Star), R(4),
B(Jump), U8(34),
B(Ldar), R(8),
/* 16 E> */ B(Throw),
B(Jump), U8(31),
B(LdaUndefined),
B(Star), R(7),
B(LdaTrue),
@ -218,7 +202,7 @@ bytecodes: [
B(Ldar), R(6),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
/* 25 S> */ B(Return),
@ -229,12 +213,16 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [127],
Smi [118],
Smi [24],
Smi [7],
Smi [24],
Smi [7],
Smi [6],
Smi [9],
]
handlers: [
[52, 212, 218],
[52, 194, 200],
]
---
@ -242,9 +230,9 @@ snippet: "
function* f() { for (let x of [42]) yield x }
f();
"
frame size: 25
frame size: 24
parameter count: 1
bytecode array length: 546
bytecode array length: 528
bytecodes: [
B(Mov), R(new_target), R(10),
B(Ldar), R(new_target),
@ -278,44 +266,38 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(16), U8(1),
B(Star), R(17),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(16), U8(1),
B(Star), R(18),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(18),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(17),
/* 11 E> */ B(Throw),
B(LdaTrue),
B(Star), R(20),
B(Mov), R(17), R(19),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(19), U8(2),
B(Star), R(19),
B(Mov), R(17), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(14),
B(LdaZero),
B(Star), R(13),
B(JumpConstant), U8(15),
B(Ldar), R(17),
/* 11 E> */ B(Throw),
B(JumpConstant), U8(19),
B(LdaZero),
B(Star), R(6),
B(Mov), R(context), R(18),
B(Mov), R(context), R(19),
/* 30 S> */ B(CreateArrayLiteral), U8(2), U8(3), U8(17),
/* 30 S> */ B(CreateArrayLiteral), U8(4), U8(3), U8(17),
B(Star), R(20),
B(LdaNamedProperty), R(20), U8(3), U8(4),
B(LdaNamedProperty), R(20), U8(5), U8(4),
B(Star), R(21),
B(CallProperty0), R(21), R(20), U8(6),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
B(LdaSmi), I8(-2),
/* 30 E> */ B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(11),
B(LdaSmi), I8(79),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kAbort), R(20), U8(1),
/* 25 S> */ B(LdaNamedProperty), R(4), U8(5), U8(10),
/* 25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(10),
B(Star), R(20),
B(CallProperty0), R(20), R(4), U8(8),
B(Star), R(5),
@ -323,9 +305,9 @@ bytecodes: [
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(6), U8(12),
B(JumpIfToBooleanTrue), U8(101),
B(LdaNamedProperty), R(5), U8(7), U8(14),
B(LdaNamedProperty), R(5), U8(8), U8(12),
B(JumpIfToBooleanTrue), U8(92),
B(LdaNamedProperty), R(5), U8(9), U8(14),
B(Star), R(7),
B(LdaSmi), I8(2),
B(Star), R(6),
@ -348,30 +330,24 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(20), U8(1),
B(Star), R(21),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(20), U8(1),
B(Star), R(22),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(22),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(22),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Ldar), R(21),
/* 36 E> */ B(Throw),
B(LdaTrue),
B(Star), R(24),
B(Mov), R(21), R(23),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(23), U8(2),
B(Star), R(23),
B(Mov), R(21), R(22),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(22), U8(2),
B(Star), R(17),
B(LdaZero),
B(Star), R(16),
B(Jump), U8(59),
B(Ldar), R(21),
/* 36 E> */ B(Throw),
B(Jump), U8(56),
B(LdaZero),
B(Star), R(6),
B(JumpLoop), U8(147), I8(0),
B(JumpLoop), U8(138), I8(0),
B(Jump), U8(36),
B(Star), R(20),
B(Ldar), R(closure),
B(CreateCatchContext), R(20), U8(8), U8(9),
B(CreateCatchContext), R(20), U8(12), U8(13),
B(PushContext), R(20),
B(Star), R(19),
B(LdaSmi), I8(2),
@ -395,7 +371,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(6), U8(17),
B(JumpIfTrue), U8(104),
B(LdaNamedProperty), R(4), U8(10), U8(18),
B(LdaNamedProperty), R(4), U8(14), U8(18),
B(Star), R(8),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -409,7 +385,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(19),
B(LdaConstant), U8(11),
B(LdaConstant), U8(15),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
B(Throw),
@ -420,7 +396,7 @@ bytecodes: [
B(Jump), U8(20),
B(Star), R(20),
B(Ldar), R(closure),
B(CreateCatchContext), R(20), U8(8), U8(12),
B(CreateCatchContext), R(20), U8(12), U8(16),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
@ -439,7 +415,7 @@ bytecodes: [
B(Ldar), R(18),
B(SetPendingMessage),
B(Ldar), R(16),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Jump), U8(19),
B(LdaZero),
B(Star), R(13),
@ -471,7 +447,7 @@ bytecodes: [
B(Ldar), R(15),
B(SetPendingMessage),
B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(20), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(14),
/* 44 S> */ B(Return),
@ -482,13 +458,17 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [135],
Smi [126],
Smi [24],
Smi [7],
TUPLE2_TYPE,
SYMBOL_TYPE,
Smi [91],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
@ -496,15 +476,15 @@ constant pool: [
FIXED_ARRAY_TYPE,
Smi [6],
Smi [14],
Smi [406],
Smi [394],
Smi [6],
Smi [9],
]
handlers: [
[52, 507, 513],
[124, 338, 344],
[127, 302, 304],
[405, 415, 417],
[52, 489, 495],
[115, 320, 326],
[118, 284, 286],
[387, 397, 399],
]
---
@ -513,9 +493,9 @@ snippet: "
function* f() { yield* g() }
f();
"
frame size: 20
frame size: 19
parameter count: 1
bytecode array length: 590
bytecode array length: 581
bytecodes: [
B(Mov), R(new_target), R(9),
B(Ldar), R(new_target),
@ -549,41 +529,35 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(15), U8(1),
B(Star), R(16),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(15), U8(1),
B(Star), R(17),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(17),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(16),
/* 38 E> */ B(Throw),
B(LdaTrue),
B(Star), R(19),
B(Mov), R(16), R(18),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
B(Star), R(18),
B(Mov), R(16), R(17),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
B(Star), R(13),
B(LdaZero),
B(Star), R(12),
B(JumpConstant), U8(13),
B(Ldar), R(16),
/* 38 E> */ B(Throw),
B(JumpConstant), U8(15),
/* 43 S> */ B(LdaUndefined),
B(Star), R(1),
B(LdaZero),
B(Star), R(2),
B(LdaUndefined),
B(Star), R(3),
B(LdaGlobal), U8(2), U8(5),
B(LdaGlobal), U8(4), U8(5),
B(Star), R(17),
/* 50 E> */ B(CallUndefinedReceiver0), R(17), U8(3),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(3), U8(7),
B(LdaNamedProperty), R(15), U8(5), U8(7),
B(Star), R(16),
B(CallProperty0), R(16), R(15), U8(9),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(11),
@ -602,7 +576,7 @@ bytecodes: [
B(TestEqualStrict), R(15), U8(28),
B(JumpIfTrue), U8(88),
B(Jump), U8(246),
B(LdaNamedProperty), R(4), U8(5), U8(13),
B(LdaNamedProperty), R(4), U8(7), U8(13),
B(Star), R(16),
B(CallProperty1), R(16), R(4), R(1), U8(11),
B(Star), R(3),
@ -611,7 +585,7 @@ bytecodes: [
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(218),
B(LdaNamedProperty), R(4), U8(6), U8(16),
B(LdaNamedProperty), R(4), U8(8), U8(16),
B(Star), R(3),
B(TestUndetectable),
B(JumpIfFalse), U8(19),
@ -622,7 +596,7 @@ bytecodes: [
B(Star), R(13),
B(LdaZero),
B(Star), R(12),
B(JumpConstant), U8(14),
B(JumpConstant), U8(16),
B(Mov), R(3), R(16),
B(Mov), R(4), R(17),
B(Mov), R(1), R(18),
@ -633,11 +607,11 @@ bytecodes: [
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(162),
B(LdaNamedProperty), R(4), U8(7), U8(20),
B(LdaNamedProperty), R(4), U8(9), U8(20),
B(Star), R(5),
B(TestUndetectable),
B(JumpIfFalse), U8(123),
B(LdaNamedProperty), R(4), U8(6), U8(23),
B(LdaNamedProperty), R(4), U8(8), U8(23),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -653,7 +627,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(130),
B(Star), R(16),
B(LdaConstant), U8(8),
B(LdaConstant), U8(10),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw),
@ -664,7 +638,7 @@ bytecodes: [
B(Jump), U8(20),
B(Star), R(17),
B(Ldar), R(closure),
B(CreateCatchContext), R(17), U8(9), U8(10),
B(CreateCatchContext), R(17), U8(11), U8(12),
B(Star), R(16),
B(LdaTheHole),
B(SetPendingMessage),
@ -682,7 +656,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(Wide), B(LdaSmi), I16(144),
B(Star), R(16),
B(LdaConstant), U8(8),
B(LdaConstant), U8(10),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw),
@ -696,7 +670,7 @@ bytecodes: [
B(Jump), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(Jump), U8(2),
B(LdaNamedProperty), R(3), U8(11), U8(29),
B(LdaNamedProperty), R(3), U8(13), U8(29),
B(JumpIfToBooleanFalse), U8(4),
B(Jump), U8(48),
B(LdaSmi), I8(1),
@ -717,7 +691,7 @@ bytecodes: [
B(LdaSmi), I8(1),
B(TestEqualStrict), R(2), U8(31),
B(JumpIfFalse), U8(22),
B(LdaNamedProperty), R(3), U8(12), U8(32),
B(LdaNamedProperty), R(3), U8(14), U8(32),
B(Star), R(15),
B(LdaTrue),
B(Star), R(16),
@ -726,7 +700,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(12),
B(Jump), U8(37),
B(LdaNamedProperty), R(3), U8(12), U8(34),
B(LdaNamedProperty), R(3), U8(14), U8(34),
B(Star), R(8),
B(LdaUndefined),
B(Star), R(15),
@ -750,7 +724,7 @@ bytecodes: [
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(13),
/* 54 S> */ B(Return),
@ -761,7 +735,9 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [139],
Smi [130],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
SYMBOL_TYPE,
Smi [313],
@ -773,13 +749,13 @@ constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [450],
Smi [447],
Smi [308],
Smi [6],
Smi [9],
]
handlers: [
[52, 551, 557],
[344, 354, 356],
[52, 542, 548],
[335, 345, 347],
]

View File

@ -11,9 +11,9 @@ top level: yes
snippet: "
import \"bar\";
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 141
bytecode array length: 132
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -53,20 +53,14 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 13 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 13 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
@ -79,6 +73,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
]
handlers: [
]
@ -87,9 +83,9 @@ handlers: [
snippet: "
import {foo} from \"bar\";
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 141
bytecode array length: 132
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -129,20 +125,14 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 24 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 24 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
@ -155,6 +145,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
]
handlers: [
]
@ -165,9 +157,9 @@ snippet: "
goo(42);
{ let x; { goo(42) } };
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 203
bytecode array length: 194
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -207,23 +199,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 64 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 64 S> */ B(Return),
/* 32 S> */ B(LdaModuleVariable), I8(-1), U8(0),
B(JumpIfNotHole), U8(11),
B(LdaConstant), U8(2),
B(LdaConstant), U8(4),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1),
B(Star), R(4),
@ -231,7 +217,7 @@ bytecodes: [
B(Star), R(5),
/* 32 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(3),
B(Ldar), R(closure),
B(CreateBlockContext), U8(3),
B(CreateBlockContext), U8(5),
B(PushContext), R(4),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
@ -239,7 +225,7 @@ bytecodes: [
/* 47 E> */ B(StaCurrentContextSlot), U8(4),
/* 52 S> */ B(LdaModuleVariable), I8(-1), U8(1),
B(JumpIfNotHole), U8(11),
B(LdaConstant), U8(2),
B(LdaConstant), U8(4),
B(Star), R(6),
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(6), U8(1),
B(Star), R(5),
@ -258,6 +244,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["goo"],
FIXED_ARRAY_TYPE,
]
@ -270,9 +258,9 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 183
bytecode array length: 174
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -312,27 +300,21 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 49 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 49 S> */ B(Return),
/* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
/* 21 S> */ B(LdaModuleVariable), I8(1), U8(0),
B(Inc), U8(3),
/* 24 E> */ B(StaModuleVariable), I8(1), U8(0),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(CreateBlockContext), U8(4),
B(PushContext), R(4),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
@ -356,6 +338,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
FIXED_ARRAY_TYPE,
]
handlers: [
@ -367,9 +351,9 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 187
bytecode array length: 178
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -411,27 +395,21 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 49 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 49 S> */ B(Return),
/* 17 S> */ B(LdaSmi), I8(42),
/* 17 E> */ B(StaModuleVariable), I8(1), U8(0),
/* 21 S> */ B(LdaModuleVariable), I8(1), U8(0),
B(Inc), U8(3),
/* 24 E> */ B(StaModuleVariable), I8(1), U8(0),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(CreateBlockContext), U8(4),
B(PushContext), R(4),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
@ -455,6 +433,8 @@ bytecodes: [
constant pool: [
Smi [67],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
FIXED_ARRAY_TYPE,
]
handlers: [
@ -466,9 +446,9 @@ snippet: "
foo++;
{ let x; { foo++ } };
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 191
bytecode array length: 182
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -510,27 +490,21 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 51 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 51 S> */ B(Return),
/* 19 S> */ B(LdaSmi), I8(42),
/* 19 E> */ B(StaModuleVariable), I8(1), U8(0),
/* 23 S> */ B(LdaModuleVariable), I8(1), U8(0),
B(Inc), U8(3),
/* 26 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(Ldar), R(closure),
B(CreateBlockContext), U8(2),
B(CreateBlockContext), U8(4),
B(PushContext), R(4),
B(LdaTheHole),
B(StaCurrentContextSlot), U8(4),
@ -554,6 +528,8 @@ bytecodes: [
constant pool: [
Smi [67],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
FIXED_ARRAY_TYPE,
]
handlers: [
@ -563,9 +539,9 @@ handlers: [
snippet: "
export default (function () {});
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 152
bytecode array length: 143
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -607,23 +583,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 32 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 32 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(2), U8(3), U8(0),
B(CreateClosure), U8(4), U8(3), U8(0),
B(StaModuleVariable), I8(1), U8(0),
B(LdaCurrentContextSlot), U8(5),
B(Star), R(4),
@ -635,6 +605,8 @@ bytecodes: [
constant pool: [
Smi [67],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
@ -646,7 +618,7 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 185
bytecode array length: 176
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -688,23 +660,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 26 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 26 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(2), U8(3), U8(0),
B(CreateClosure), U8(4), U8(3), U8(0),
B(Star), R(4),
B(LdaTheHole),
B(Star), R(5),
@ -728,6 +694,8 @@ bytecodes: [
constant pool: [
Smi [67],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
@ -737,9 +705,9 @@ handlers: [
snippet: "
export {foo as goo} from \"bar\"
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 141
bytecode array length: 132
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -779,20 +747,14 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 30 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 30 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
@ -805,6 +767,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
]
handlers: [
]
@ -813,9 +777,9 @@ handlers: [
snippet: "
export * from \"bar\"
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 141
bytecode array length: 132
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -855,20 +819,14 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 19 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 19 S> */ B(Return),
B(Ldar), R(5),
B(StaCurrentContextSlot), U8(5),
B(LdaCurrentContextSlot), U8(5),
@ -881,6 +839,8 @@ bytecodes: [
constant pool: [
Smi [63],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
]
handlers: [
]
@ -890,9 +850,9 @@ snippet: "
import * as foo from \"bar\"
foo.f(foo, foo.x);
"
frame size: 9
frame size: 8
parameter count: 2
bytecode array length: 179
bytecode array length: 170
bytecodes: [
B(Mov), R(new_target), R(0),
B(Ldar), R(new_target),
@ -936,29 +896,23 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(4), U8(1),
B(Star), R(5),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(6),
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),
/* 45 S> */ B(Return),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(5),
/* 0 E> */ B(Throw),
B(LdaTrue),
B(Star), R(7),
B(Mov), R(5), R(6),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
/* 45 S> */ B(Return),
/* 27 S> */ B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(5),
/* 30 E> */ B(LdaNamedProperty), R(5), U8(2), U8(5),
/* 30 E> */ B(LdaNamedProperty), R(5), U8(4), U8(5),
B(Star), R(4),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(6),
B(LdaImmutableCurrentContextSlot), U8(5),
B(Star), R(7),
/* 41 E> */ B(LdaNamedProperty), R(7), U8(3), U8(7),
/* 41 E> */ B(LdaNamedProperty), R(7), U8(5), U8(7),
B(Star), R(7),
/* 31 E> */ B(CallProperty2), R(4), R(5), R(6), R(7), U8(3),
B(StaCurrentContextSlot), U8(6),
@ -972,6 +926,8 @@ bytecodes: [
constant pool: [
Smi [73],
FIXED_ARRAY_TYPE,
Smi [18],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
]

View File

@ -271,9 +271,9 @@ snippet: "
}
f();
"
frame size: 18
frame size: 17
parameter count: 1
bytecode array length: 254
bytecode array length: 245
bytecodes: [
B(Mov), R(new_target), R(7),
B(Ldar), R(new_target),
@ -307,23 +307,17 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Ldar), R(14),
/* 11 E> */ B(Throw),
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(14), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(11),
B(LdaZero),
B(Star), R(10),
B(Jump), U8(114),
B(Ldar), R(14),
/* 11 E> */ B(Throw),
B(Jump), U8(111),
/* 31 S> */ B(LdaZero),
B(Star), R(2),
B(Star), R(4),
@ -384,7 +378,7 @@ bytecodes: [
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(11),
/* 62 S> */ B(Return),
@ -395,11 +389,13 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [24],
Smi [7],
Smi [6],
Smi [9],
]
handlers: [
[52, 215, 221],
[52, 206, 212],
]
---
@ -409,9 +405,9 @@ snippet: "
}
f();
"
frame size: 17
frame size: 16
parameter count: 1
bytecode array length: 369
bytecode array length: 351
bytecodes: [
B(Mov), R(new_target), R(6),
B(Ldar), R(new_target),
@ -445,30 +441,24 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Ldar), R(13),
/* 11 E> */ B(Throw),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(15),
B(Mov), R(13), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(229),
B(Ldar), R(13),
/* 11 E> */ B(Throw),
B(Jump), U8(217),
/* 31 S> */ B(LdaZero),
B(Star), R(1),
B(Star), R(3),
B(LdaSmi), I8(1),
B(Star), R(4),
B(Ldar), R(7),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(1),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
B(LdaSmi), I8(-2),
/* 54 E> */ B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(11),
@ -492,9 +482,9 @@ bytecodes: [
/* 36 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(4),
B(Jump), U8(130),
B(Jump), U8(121),
B(Ldar), R(7),
B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(LdaSmi), I8(-2),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(11),
@ -503,7 +493,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(5), U8(6),
B(JumpIfFalse), U8(90),
B(JumpIfFalse), U8(81),
/* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaFalse),
B(Star), R(14),
@ -521,33 +511,27 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(14),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(6), U8(2), I8(0),
B(Ldar), R(13),
/* 47 E> */ B(Throw),
B(LdaTrue),
B(Star), R(16),
B(Mov), R(13), R(15),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
B(Star), R(15),
B(Mov), R(13), R(14),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(57),
B(Ldar), R(13),
/* 47 E> */ B(Throw),
B(Jump), U8(54),
B(LdaZero),
B(Star), R(5),
B(Mov), R(0), R(3),
B(Ldar), R(0),
B(JumpLoop), U8(113), I8(1),
B(JumpLoop), U8(104), I8(1),
B(LdaSmi), I8(1),
/* 54 E> */ B(TestEqual), R(5), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(183), I8(0),
B(JumpLoop), U8(174), I8(0),
B(LdaUndefined),
B(Star), R(12),
B(LdaTrue),
@ -570,7 +554,7 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(Ldar), R(9),
B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(10),
/* 56 S> */ B(Return),
@ -581,14 +565,18 @@ bytecodes: [
]
constant pool: [
Smi [50],
Smi [110],
Smi [101],
Smi [24],
Smi [7],
Smi [56],
Smi [52],
Smi [24],
Smi [7],
Smi [6],
Smi [9],
]
handlers: [
[52, 330, 336],
[52, 312, 318],
]
---
@ -724,7 +712,7 @@ snippet: "
"
frame size: 19
parameter count: 1
bytecode array length: 377
bytecode array length: 368
bytecodes: [
B(Mov), R(new_target), R(7),
B(Ldar), R(new_target),
@ -781,7 +769,7 @@ bytecodes: [
/* 41 E> */ B(TestLessThan), R(0), U8(5),
B(JumpIfFalse), U8(4),
B(Jump), U8(4),
B(Jump), U8(136),
B(Jump), U8(127),
B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
B(LdaSmi), I8(-2),
@ -792,7 +780,7 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kAbort), R(14), U8(1),
B(LdaSmi), I8(1),
B(TestEqual), R(6), U8(6),
B(JumpIfFalse), U8(96),
B(JumpIfFalse), U8(87),
/* 23 E> */ B(StackCheck),
/* 52 S> */ B(LdaUndefined),
B(Star), R(15),
@ -812,33 +800,27 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
B(Star), R(15),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(19),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(Ldar), R(15),
/* 52 E> */ B(ReThrow),
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(15), R(16),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
B(Star), R(11),
B(LdaZero),
B(Star), R(10),
B(Jump), U8(106),
B(Ldar), R(15),
/* 52 E> */ B(ReThrow),
B(Jump), U8(103),
B(LdaZero),
B(Star), R(6),
B(Mov), R(0), R(4),
B(Ldar), R(0),
B(JumpLoop), U8(119), I8(1),
B(JumpLoop), U8(110), I8(1),
B(LdaSmi), I8(1),
/* 59 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4),
B(Jump), U8(5),
B(JumpLoop), U8(189), I8(0),
B(JumpLoop), U8(180), I8(0),
B(LdaUndefined),
B(Star), R(14),
B(LdaUndefined),
@ -852,7 +834,7 @@ bytecodes: [
B(Jump), U8(45),
B(Star), R(14),
B(Ldar), R(closure),
B(CreateCatchContext), R(14), U8(3), U8(4),
B(CreateCatchContext), R(14), U8(5), U8(6),
B(Star), R(13),
B(LdaTheHole),
B(SetPendingMessage),
@ -887,7 +869,7 @@ bytecodes: [
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(11),
/* 61 S> */ B(Return),
@ -900,13 +882,15 @@ constant pool: [
Smi [57],
Smi [56],
Smi [58],
Smi [24],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
FIXED_ARRAY_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[62, 332, 338],
[65, 287, 289],
[62, 323, 329],
[65, 278, 280],
]