Commit cf8cd1c4 authored by Georg Neis's avatar Georg Neis Committed by Commit Bot

[interpreter] Only create spread-related feedback slots when necessary.

Only create spread-related feedback slots when the array literal
actually contains a spread.

Bug: v8:5940
Change-Id: I0afad81d4bf1a86ebc1bf81f1213f680eb22bc49
Reviewed-on: https://chromium-review.googlesource.com/947955
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51721}
parent d1df5630
......@@ -2329,35 +2329,36 @@ void BytecodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
}
if (iter != expr->EndValue()) {
builder()->LoadLiteral(array_index).StoreAccumulatorInRegister(index);
}
// Handle the first spread element and everything that follows.
FeedbackSlot element_slot = feedback_spec()->AddStoreInArrayLiteralICSlot();
FeedbackSlot index_slot = feedback_spec()->AddBinaryOpICSlot();
FeedbackSlot length_slot =
feedback_spec()->AddStoreICSlot(LanguageMode::kStrict);
for (; iter != expr->EndValue(); ++iter) {
Expression* subexpr = *iter;
if (subexpr->IsSpread()) {
BuildArrayLiteralSpread(subexpr->AsSpread(), literal, index, index_slot,
element_slot);
} else if (!subexpr->IsTheHoleLiteral()) {
// literal[index++] = subexpr
VisitForAccumulatorValue(subexpr);
builder()
->StoreInArrayLiteral(literal, index, feedback_index(element_slot))
.LoadAccumulatorWithRegister(index)
.UnaryOperation(Token::INC, feedback_index(index_slot))
.StoreAccumulatorInRegister(index);
} else {
// literal.length = ++index
auto length = ast_string_constants()->length_string();
builder()
->LoadAccumulatorWithRegister(index)
.UnaryOperation(Token::INC, feedback_index(index_slot))
.StoreAccumulatorInRegister(index)
.StoreNamedProperty(literal, length, feedback_index(length_slot),
LanguageMode::kStrict);
// Handle the first spread element and everything that follows.
FeedbackSlot element_slot = feedback_spec()->AddStoreInArrayLiteralICSlot();
FeedbackSlot index_slot = feedback_spec()->AddBinaryOpICSlot();
// TODO(neis): Only create length_slot when there are holes.
FeedbackSlot length_slot =
feedback_spec()->AddStoreICSlot(LanguageMode::kStrict);
for (; iter != expr->EndValue(); ++iter) {
Expression* subexpr = *iter;
if (subexpr->IsSpread()) {
BuildArrayLiteralSpread(subexpr->AsSpread(), literal, index, index_slot,
element_slot);
} else if (!subexpr->IsTheHoleLiteral()) {
// literal[index++] = subexpr
VisitForAccumulatorValue(subexpr);
builder()
->StoreInArrayLiteral(literal, index, feedback_index(element_slot))
.LoadAccumulatorWithRegister(index)
.UnaryOperation(Token::INC, feedback_index(index_slot))
.StoreAccumulatorInRegister(index);
} else {
// literal.length = ++index
auto length = ast_string_constants()->length_string();
builder()
->LoadAccumulatorWithRegister(index)
.UnaryOperation(Token::INC, feedback_index(index_slot))
.StoreAccumulatorInRegister(index)
.StoreNamedProperty(literal, length, feedback_index(length_slot),
LanguageMode::kStrict);
}
}
}
......
......@@ -97,13 +97,13 @@ bytecodes: [
B(StaKeyedProperty), R(1), R(2), U8(1),
B(LdaSmi), I8(1),
B(Star), R(2),
B(CreateArrayLiteral), U8(2), U8(11), U8(37),
B(CreateArrayLiteral), U8(2), U8(6), U8(37),
B(Star), R(3),
B(LdaZero),
B(Star), R(4),
B(Ldar), R(0),
/* 68 E> */ B(AddSmi), I8(2), U8(14),
B(StaKeyedProperty), R(3), R(4), U8(12),
/* 68 E> */ B(AddSmi), I8(2), U8(9),
B(StaKeyedProperty), R(3), R(4), U8(7),
B(Ldar), R(3),
B(StaKeyedProperty), R(1), R(2), U8(1),
B(Ldar), R(1),
......
......@@ -282,23 +282,23 @@ bytecodes: [
B(Mov), R(context), R(18),
/* 36 S> */ B(CreateArrayLiteral), U8(5), U8(0), U8(37),
B(Star), R(19),
B(LdaNamedProperty), R(19), U8(6), U8(6),
B(LdaNamedProperty), R(19), U8(6), U8(1),
B(Star), R(20),
B(CallProperty0), R(20), R(19), U8(8),
B(CallProperty0), R(20), R(19), U8(3),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4),
/* 36 E> */ B(LdaNamedProperty), R(4), U8(7), U8(10),
/* 36 E> */ B(LdaNamedProperty), R(4), U8(7), U8(5),
B(Star), R(5),
/* 31 S> */ B(CallProperty0), R(5), R(4), U8(12),
/* 31 S> */ B(CallProperty0), R(5), R(4), U8(7),
B(Star), R(6),
/* 31 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(8), U8(14),
B(LdaNamedProperty), R(6), U8(8), U8(9),
B(JumpIfToBooleanTrue), U8(68),
B(LdaNamedProperty), R(6), U8(9), U8(16),
B(LdaNamedProperty), R(6), U8(9), U8(11),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(7),
......@@ -334,7 +334,7 @@ bytecodes: [
B(Ldar), R(18),
B(PushContext), R(19),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(18),
B(TestEqualStrict), R(7), U8(13),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(Star), R(7),
......@@ -353,15 +353,15 @@ bytecodes: [
B(SetPendingMessage),
B(Star), R(17),
B(LdaZero),
B(TestEqualStrict), R(7), U8(19),
B(TestEqualStrict), R(7), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(14), U8(20),
B(LdaNamedProperty), R(4), U8(14), U8(15),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(79),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(7), U8(22),
B(TestEqualStrict), R(7), U8(17),
B(JumpIfFalse), U8(47),
B(Ldar), R(9),
B(TestTypeOf), U8(6),
......
......@@ -20,7 +20,7 @@ bytecodes: [
B(Star), R(0),
B(CreateArrayLiteral), U8(2), U8(4), U8(37),
B(Star), R(2),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(10),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(5),
B(LdaUndefined),
/* 58 S> */ B(Return),
]
......@@ -49,7 +49,7 @@ bytecodes: [
B(Star), R(2),
B(CreateArrayLiteral), U8(2), U8(4), U8(37),
B(Star), R(3),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(10),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(5),
B(LdaUndefined),
/* 61 S> */ B(Return),
]
......@@ -80,22 +80,22 @@ bytecodes: [
B(Star), R(4),
/* 49 S> */ B(CreateArrayLiteral), U8(4), U8(10), U8(37),
B(Star), R(8),
B(LdaNamedProperty), R(8), U8(5), U8(16),
B(LdaNamedProperty), R(8), U8(5), U8(11),
B(Star), R(9),
B(CallProperty0), R(9), R(8), U8(18),
B(CallProperty0), R(9), R(8), U8(13),
B(Mov), R(0), R(2),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(6), U8(20),
B(LdaNamedProperty), R(7), U8(6), U8(15),
B(Star), R(6),
B(CallProperty0), R(6), R(7), U8(22),
B(CallProperty0), R(6), R(7), U8(17),
B(Star), R(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(7), U8(24),
B(LdaNamedProperty), R(5), U8(7), U8(19),
B(JumpIfToBooleanTrue), U8(21),
B(LdaNamedProperty), R(5), U8(8), U8(26),
B(LdaNamedProperty), R(5), U8(8), U8(21),
B(Star), R(5),
B(StaInArrayLiteral), R(3), R(4), U8(5),
B(Ldar), R(4),
......
......@@ -270,13 +270,13 @@ bytecodes: [
/* 55 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(1),
/* 63 S> */ B(Ldar), R(0),
B(ToNumeric), U8(6),
B(ToNumeric), U8(1),
B(Star), R(3),
B(Inc), U8(6),
B(Inc), U8(1),
B(Star), R(0),
B(LdaSmi), I8(2),
B(Star), R(4),
/* 79 E> */ B(StaKeyedProperty), R(1), R(3), U8(7),
/* 79 E> */ B(StaKeyedProperty), R(1), R(3), U8(2),
B(Ldar), R(4),
/* 83 S> */ B(Return),
]
......
......@@ -123,7 +123,7 @@ bytecodes: [
/* 45 E> */ B(StackCheck),
B(Star), R(2),
/* 70 S> */ B(Ldar), R(1),
/* 75 E> */ B(Add), R(0), U8(7),
/* 75 E> */ B(Add), R(0), U8(2),
B(Mov), R(0), R(8),
B(Star), R(0),
/* 72 E> */ B(ForInStep), R(7),
......@@ -167,18 +167,18 @@ bytecodes: [
B(JumpIfUndefined), U8(41),
B(Star), R(6),
B(Ldar), R(6),
/* 67 E> */ B(StaNamedProperty), R(0), U8(2), U8(8),
/* 67 E> */ B(StaNamedProperty), R(0), U8(2), U8(3),
/* 62 E> */ B(StackCheck),
/* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(10),
/* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(5),
B(Star), R(6),
B(LdaSmi), I8(10),
/* 106 E> */ B(TestEqual), R(6), U8(12),
/* 106 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4),
/* 113 S> */ B(Jump), U8(17),
/* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(13),
/* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(8),
B(Star), R(6),
B(LdaSmi), I8(20),
/* 136 E> */ B(TestEqual), R(6), U8(15),
/* 136 E> */ B(TestEqual), R(6), U8(10),
B(JumpIfFalse), U8(4),
/* 143 S> */ B(Jump), U8(9),
B(ForInStep), R(5),
......@@ -207,26 +207,26 @@ bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(0),
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(7), U8(37),
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37),
B(JumpIfUndefined), U8(51),
B(JumpIfNull), U8(49),
B(ToObject), R(1),
B(ForInEnumerate), R(1),
B(ForInPrepare), R(2), U8(6),
B(ForInPrepare), R(2), U8(1),
B(LdaZero),
B(Star), R(5),
/* 65 S> */ B(ForInContinue), R(5), R(4),
B(JumpIfFalse), U8(34),
B(ForInNext), R(1), R(5), R(2), U8(6),
B(ForInNext), R(1), R(5), R(2), U8(1),
B(JumpIfUndefined), U8(20),
B(Star), R(6),
B(LdaZero),
B(Star), R(8),
B(Ldar), R(6),
/* 64 E> */ B(StaKeyedProperty), R(0), R(8), U8(13),
/* 64 E> */ B(StaKeyedProperty), R(0), R(8), U8(3),
/* 59 E> */ B(StackCheck),
/* 83 S> */ B(LdaSmi), I8(3),
/* 91 E> */ B(LdaKeyedProperty), R(0), U8(15),
/* 91 E> */ B(LdaKeyedProperty), R(0), U8(5),
/* 95 S> */ B(Return),
B(ForInStep), R(5),
B(Star), R(5),
......
......@@ -20,23 +20,23 @@ bytecodes: [
B(Mov), R(context), R(12),
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(1), U8(6),
B(LdaNamedProperty), R(13), U8(1), U8(1),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(8),
B(CallProperty0), R(14), R(13), U8(3),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(2),
/* 48 E> */ B(LdaNamedProperty), R(2), U8(2), U8(10),
/* 48 E> */ B(LdaNamedProperty), R(2), U8(2), U8(5),
B(Star), R(3),
/* 43 S> */ B(CallProperty0), R(3), R(2), U8(12),
/* 43 S> */ B(CallProperty0), R(3), R(2), U8(7),
B(Star), R(4),
/* 43 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
B(LdaNamedProperty), R(4), U8(3), U8(14),
B(LdaNamedProperty), R(4), U8(3), U8(9),
B(JumpIfToBooleanTrue), U8(25),
B(LdaNamedProperty), R(4), U8(4), U8(16),
B(LdaNamedProperty), R(4), U8(4), U8(11),
B(Star), R(6),
B(LdaSmi), I8(2),
B(Star), R(5),
......@@ -53,7 +53,7 @@ bytecodes: [
B(PushContext), R(13),
B(Star), R(12),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(18),
B(TestEqualStrict), R(5), U8(13),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(Star), R(5),
......@@ -72,15 +72,15 @@ bytecodes: [
B(SetPendingMessage),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrict), R(5), U8(19),
B(TestEqualStrict), R(5), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(7), U8(20),
B(LdaNamedProperty), R(2), U8(7), U8(15),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(79),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(22),
B(TestEqualStrict), R(5), U8(17),
B(JumpIfFalse), U8(47),
B(Ldar), R(7),
B(TestTypeOf), U8(6),
......@@ -292,23 +292,23 @@ bytecodes: [
B(Mov), R(context), R(12),
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(1), U8(6),
B(LdaNamedProperty), R(13), U8(1), U8(1),
B(Star), R(14),
B(CallProperty0), R(14), R(13), U8(8),
B(CallProperty0), R(14), R(13), U8(3),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(2),
/* 48 E> */ B(LdaNamedProperty), R(2), U8(2), U8(10),
/* 48 E> */ B(LdaNamedProperty), R(2), U8(2), U8(5),
B(Star), R(3),
/* 43 S> */ B(CallProperty0), R(3), R(2), U8(12),
/* 43 S> */ B(CallProperty0), R(3), R(2), U8(7),
B(Star), R(4),
/* 43 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
B(LdaNamedProperty), R(4), U8(3), U8(14),
B(LdaNamedProperty), R(4), U8(3), U8(9),
B(JumpIfToBooleanTrue), U8(43),
B(LdaNamedProperty), R(4), U8(4), U8(16),
B(LdaNamedProperty), R(4), U8(4), U8(11),
B(Star), R(6),
B(LdaSmi), I8(2),
B(Star), R(5),
......@@ -316,11 +316,11 @@ bytecodes: [
/* 34 E> */ B(StackCheck),
B(Mov), R(0), R(1),
/* 66 S> */ B(LdaSmi), I8(10),
/* 72 E> */ B(TestEqual), R(1), U8(18),
/* 72 E> */ B(TestEqual), R(1), U8(13),
B(JumpIfFalse), U8(4),
/* 79 S> */ B(Jump), U8(14),
/* 91 S> */ B(LdaSmi), I8(20),
/* 97 E> */ B(TestEqual), R(1), U8(19),
/* 97 E> */ B(TestEqual), R(1), U8(14),
B(JumpIfFalse), U8(4),
/* 104 S> */ B(Jump), U8(8),
B(LdaZero),
......@@ -333,7 +333,7 @@ bytecodes: [
B(PushContext), R(13),
B(Star), R(12),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(20),
B(TestEqualStrict), R(5), U8(15),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(Star), R(5),
......@@ -352,15 +352,15 @@ bytecodes: [
B(SetPendingMessage),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrict), R(5), U8(21),
B(TestEqualStrict), R(5), U8(16),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(7), U8(22),
B(LdaNamedProperty), R(2), U8(7), U8(17),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(79),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(24),
B(TestEqualStrict), R(5), U8(19),
B(JumpIfFalse), U8(47),
B(Ldar), R(7),
B(TestTypeOf), U8(6),
......@@ -434,30 +434,30 @@ bytecodes: [
B(Mov), R(context), R(11),
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(2), U8(7),
B(LdaNamedProperty), R(12), U8(2), U8(2),
B(Star), R(13),
B(CallProperty0), R(13), R(12), U8(9),
B(CallProperty0), R(13), R(12), U8(4),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(1),
/* 77 E> */ B(LdaNamedProperty), R(1), U8(3), U8(11),
/* 77 E> */ B(LdaNamedProperty), R(1), U8(3), U8(6),
B(Star), R(2),
/* 68 S> */ B(CallProperty0), R(2), R(1), U8(13),
/* 68 S> */ B(CallProperty0), R(2), R(1), U8(8),
B(Star), R(3),
/* 68 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
B(LdaNamedProperty), R(3), U8(4), U8(15),
B(LdaNamedProperty), R(3), U8(4), U8(10),
B(JumpIfToBooleanTrue), U8(30),
/* 67 E> */ B(LdaNamedProperty), R(3), U8(5), U8(17),
/* 67 E> */ B(LdaNamedProperty), R(3), U8(5), U8(12),
B(Star), R(5),
B(LdaSmi), I8(2),
B(Star), R(4),
B(Ldar), R(5),
B(StaNamedProperty), R(0), U8(6), U8(19),
B(StaNamedProperty), R(0), U8(6), U8(14),
/* 62 E> */ B(StackCheck),
/* 96 S> */ B(LdaNamedProperty), R(0), U8(6), U8(21),
/* 96 S> */ B(LdaNamedProperty), R(0), U8(6), U8(16),
B(Star), R(9),
B(LdaZero),
B(Star), R(8),
......@@ -469,7 +469,7 @@ bytecodes: [
B(PushContext), R(12),
B(Star), R(11),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(4), U8(23),
B(TestEqualStrict), R(4), U8(18),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(Star), R(4),
......@@ -488,15 +488,15 @@ bytecodes: [
B(SetPendingMessage),
B(Star), R(10),
B(LdaZero),
B(TestEqualStrict), R(4), U8(24),
B(TestEqualStrict), R(4), U8(19),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(1), U8(9), U8(25),
B(LdaNamedProperty), R(1), U8(9), U8(20),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(79),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(4), U8(27),
B(TestEqualStrict), R(4), U8(22),
B(JumpIfFalse), U8(47),
B(Ldar), R(6),
B(TestTypeOf), U8(6),
......
......@@ -123,23 +123,23 @@ bytecodes: [
B(Mov), R(context), R(14),
/* 30 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
B(Star), R(15),
B(LdaNamedProperty), R(15), U8(5), U8(6),
B(LdaNamedProperty), R(15), U8(5), U8(1),
B(Star), R(16),
B(CallProperty0), R(16), R(15), U8(8),
B(CallProperty0), R(16), R(15), U8(3),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(4),
/* 30 E> */ B(LdaNamedProperty), R(4), U8(6), U8(10),
/* 30 E> */ B(LdaNamedProperty), R(4), U8(6), U8(5),
B(Star), R(5),
/* 25 S> */ B(CallProperty0), R(5), R(4), U8(12),
/* 25 S> */ B(CallProperty0), R(5), R(4), U8(7),
B(Star), R(6),
/* 25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
B(ToBooleanLogicalNot),
B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
B(LdaNamedProperty), R(6), U8(7), U8(14),
B(LdaNamedProperty), R(6), U8(7), U8(9),
B(JumpIfToBooleanTrue), U8(65),
B(LdaNamedProperty), R(6), U8(8), U8(16),
B(LdaNamedProperty), R(6), U8(8), U8(11),
B(Star), R(8),
B(LdaSmi), I8(2),
B(Star), R(7),
......@@ -171,7 +171,7 @@ bytecodes: [
B(PushContext), R(15),
B(Star), R(14),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(18),
B(TestEqualStrict), R(7), U8(13),
B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1),
B(Star), R(7),
......@@ -190,15 +190,15 @@ bytecodes: [
B(SetPendingMessage),
B(Star), R(13),
B(LdaZero),
B(TestEqualStrict), R(7), U8(19),
B(TestEqualStrict), R(7), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(13), U8(20),
B(LdaNamedProperty), R(4), U8(13), U8(15),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
B(Jump), U8(79),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(7), U8(22),
B(TestEqualStrict), R(7), U8(17),
B(JumpIfFalse), U8(47),
B(Ldar), R(9),
B(TestTypeOf), U8(6),
......
......@@ -29,7 +29,7 @@ bytecodes: [
/* 89 S> */ B(CreateArrayLiteral), U8(2), U8(1), U8(37),
B(Star), R(3),
B(Ldar), R(1),
/* 89 E> */ B(ConstructWithSpread), R(2), R(3), U8(1), U8(7),
/* 89 E> */ B(ConstructWithSpread), R(2), R(3), U8(1), U8(2),
B(LdaUndefined),
/* 110 S> */ B(Return),
]
......@@ -67,7 +67,7 @@ bytecodes: [
B(CreateArrayLiteral), U8(2), U8(1), U8(37),
B(Star), R(4),
B(Ldar), R(1),
/* 89 E> */ B(ConstructWithSpread), R(2), R(3), U8(2), U8(7),
/* 89 E> */ B(ConstructWithSpread), R(2), R(3), U8(2), U8(2),
B(LdaUndefined),
/* 113 S> */ B(Return),
]
......@@ -106,21 +106,21 @@ bytecodes: [
B(Star), R(4),
/* 101 S> */ B(CreateArrayLiteral), U8(4), U8(7), U8(37),
B(Star), R(8),
B(LdaNamedProperty), R(8), U8(5), U8(13),
B(LdaNamedProperty), R(8), U8(5), U8(8),
B(Star), R(9),
B(CallProperty0), R(9), R(8), U8(15),
B(CallProperty0), R(9), R(8), U8(10),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star), R(7),
B(LdaNamedProperty), R(7), U8(6), U8(17),
B(LdaNamedProperty), R(7), U8(6), U8(12),
B(Star), R(6),
B(CallProperty0), R(6), R(7), U8(19),
B(CallProperty0), R(6), R(7), U8(14),
B(Star), R(5),
B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(7), U8(21),
B(LdaNamedProperty), R(5), U8(7), U8(16),
B(JumpIfToBooleanTrue), U8(21),
B(LdaNamedProperty), R(5), U8(8), U8(23),
B(LdaNamedProperty), R(5), U8(8), U8(18),
B(Star), R(5),
B(StaInArrayLiteral), R(3), R(4), U8(2),
B(Ldar), R(4),
......
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