Index: test/cctest/interpreter/bytecode_expectations/ForOf.golden |
diff --git a/test/cctest/interpreter/bytecode_expectations/ForOf.golden b/test/cctest/interpreter/bytecode_expectations/ForOf.golden |
index a5f7f6e683067db1b0dc710b291266300581c73c..e74cab740ed28b99f86c8a5bf0c228d010534a4d 100644 |
--- a/test/cctest/interpreter/bytecode_expectations/ForOf.golden |
+++ b/test/cctest/interpreter/bytecode_expectations/ForOf.golden |
@@ -9,52 +9,70 @@ wrap: yes |
snippet: " |
for (var p of [0, 1, 2]) {} |
" |
-frame size: 15 |
+frame size: 16 |
parameter count: 1 |
-bytecode array length: 272 |
+bytecode array length: 316 |
bytecodes: [ |
/* 30 E> */ B(StackCheck), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(9), |
B(LdaZero), |
B(Star), R(4), |
B(Mov), R(context), R(11), |
B(Mov), R(context), R(12), |
- /* 48 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(9), |
+ /* 48 S> */ B(LdaConstant), U8(1), |
B(Star), R(13), |
- B(LdaNamedProperty), R(13), U8(1), U8(3), |
+ B(CreateArrayLiteral), U8(2), U8(4), U8(9), |
B(Star), R(14), |
- B(CallProperty), R(14), R(13), U8(1), U8(5), |
+ B(LdaNamedProperty), R(14), U8(3), U8(5), |
+ B(Star), R(15), |
+ B(CallProperty), R(15), R(14), U8(1), U8(7), |
B(JumpIfJSReceiver), U8(7), |
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), |
B(Star), R(2), |
- /* 45 S> */ B(LdaNamedProperty), R(2), U8(2), U8(9), |
+ /* 45 S> */ B(LdaConstant), U8(4), |
B(Star), R(13), |
- /* 45 E> */ B(CallProperty), R(13), R(2), U8(1), U8(7), |
+ B(LdaNamedProperty), R(2), U8(5), U8(13), |
+ B(Star), R(14), |
+ /* 45 E> */ B(CallProperty), R(14), R(2), U8(1), U8(11), |
B(Star), R(3), |
/* 45 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(3), U8(11), |
- B(JumpIfToBooleanTrue), U8(25), |
- B(LdaNamedProperty), R(3), U8(4), U8(13), |
+ B(LdaNamedProperty), R(3), U8(6), U8(17), |
+ B(JumpIfToBooleanTrue), U8(45), |
+ B(LdaConstant), U8(7), |
+ B(Star), R(13), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(14), |
+ B(LdaNamedProperty), R(3), U8(8), U8(19), |
B(Star), R(5), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(14), |
B(LdaSmi), I8(2), |
B(Star), R(4), |
B(Mov), R(5), R(0), |
/* 34 E> */ B(StackCheck), |
- B(Mov), R(0), R(1), |
+ B(LdaConstant), U8(9), |
+ B(Star), R(13), |
+ B(Mov), R(5), R(1), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(13), |
B(LdaZero), |
B(Star), R(4), |
- B(JumpLoop), U8(51), I8(0), |
- B(Jump), U8(36), |
+ B(JumpLoop), U8(75), I8(0), |
+ B(Jump), U8(40), |
B(Star), R(13), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(13), U8(5), U8(6), |
+ B(CreateCatchContext), R(13), U8(10), U8(11), |
B(Star), R(12), |
B(PushContext), R(8), |
B(LdaSmi), I8(2), |
- B(TestEqualStrict), R(4), U8(15), |
- B(JumpIfFalse), U8(6), |
+ B(TestEqualStrict), R(4), U8(31), |
+ B(JumpIfFalse), U8(10), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(13), |
B(LdaSmi), I8(1), |
B(Star), R(4), |
B(LdaImmutableCurrentContextSlot), U8(4), |
@@ -71,26 +89,28 @@ bytecodes: [ |
B(SetPendingMessage), |
B(Star), R(11), |
B(LdaZero), |
- B(TestEqualStrict), R(4), U8(16), |
- B(JumpIfTrue), U8(111), |
- B(LdaNamedProperty), R(2), U8(7), U8(17), |
+ B(TestEqualStrict), R(4), U8(34), |
+ B(JumpIfTrue), U8(119), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(12), |
+ B(LdaNamedProperty), R(2), U8(12), U8(35), |
B(Star), R(6), |
B(TestUndetectable), R(6), |
B(JumpIfFalse), U8(4), |
- B(Jump), U8(99), |
+ B(Jump), U8(103), |
B(LdaSmi), I8(1), |
- B(TestEqualStrict), R(4), U8(20), |
+ B(TestEqualStrict), R(4), U8(40), |
B(JumpIfFalse), U8(67), |
B(Ldar), R(6), |
B(TypeOf), |
B(Star), R(12), |
- B(LdaConstant), U8(8), |
- B(TestEqualStrict), R(12), U8(21), |
+ B(LdaConstant), U8(13), |
+ B(TestEqualStrict), R(12), U8(41), |
B(JumpIfFalse), U8(4), |
B(Jump), U8(18), |
B(Wide), B(LdaSmi), I16(130), |
B(Star), R(12), |
- B(LdaConstant), U8(9), |
+ B(LdaConstant), U8(0), |
B(Star), R(13), |
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), |
B(Throw), |
@@ -101,17 +121,19 @@ bytecodes: [ |
B(Jump), U8(20), |
B(Star), R(13), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(13), U8(5), U8(10), |
+ B(CreateCatchContext), R(13), U8(10), U8(14), |
B(Star), R(12), |
B(LdaTheHole), |
B(SetPendingMessage), |
B(Ldar), R(12), |
B(PushContext), R(8), |
B(PopContext), R(8), |
- B(Jump), U8(27), |
- B(Mov), R(6), R(12), |
- B(Mov), R(2), R(13), |
- B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2), |
+ B(Jump), U8(31), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(12), |
+ B(Mov), R(6), R(13), |
+ B(Mov), R(2), R(14), |
+ B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2), |
B(Star), R(7), |
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1), |
B(JumpIfToBooleanFalse), U8(4), |
@@ -129,22 +151,26 @@ bytecodes: [ |
/* 62 S> */ B(Return), |
] |
constant pool: [ |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".iterator"], |
CONSTANT_ELEMENTS_PAIR_TYPE, |
SYMBOL_TYPE, |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".result"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".for"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE ["p"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], |
FIXED_ARRAY_TYPE, |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"], |
- ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
FIXED_ARRAY_TYPE, |
] |
handlers: [ |
- [7, 126, 132], |
- [10, 90, 92], |
- [199, 209, 211], |
+ [11, 162, 168], |
+ [14, 122, 124], |
+ [239, 249, 251], |
] |
--- |
@@ -152,54 +178,72 @@ snippet: " |
var x = 'potatoes'; |
for (var p of x) { return p; } |
" |
-frame size: 16 |
+frame size: 17 |
parameter count: 1 |
-bytecode array length: 286 |
+bytecode array length: 330 |
bytecodes: [ |
/* 30 E> */ B(StackCheck), |
/* 42 S> */ B(LdaConstant), U8(0), |
+ B(Star), R(10), |
+ B(LdaConstant), U8(1), |
B(Star), R(0), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(10), |
B(LdaZero), |
B(Star), R(5), |
B(Mov), R(context), R(12), |
B(Mov), R(context), R(13), |
- /* 68 S> */ B(LdaNamedProperty), R(0), U8(1), U8(2), |
- B(Star), R(15), |
- B(CallProperty), R(15), R(0), U8(1), U8(4), |
- B(Mov), R(0), R(14), |
+ /* 68 S> */ B(LdaConstant), U8(3), |
+ B(Star), R(14), |
+ /* 68 E> */ B(LdaNamedProperty), R(0), U8(4), U8(6), |
+ B(Star), R(16), |
+ B(CallProperty), R(16), R(0), U8(1), U8(8), |
+ B(Mov), R(0), R(15), |
B(JumpIfJSReceiver), U8(7), |
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), |
B(Star), R(3), |
- /* 65 S> */ B(LdaNamedProperty), R(3), U8(2), U8(8), |
+ /* 65 S> */ B(LdaConstant), U8(5), |
B(Star), R(14), |
- /* 65 E> */ B(CallProperty), R(14), R(3), U8(1), U8(6), |
+ B(LdaNamedProperty), R(3), U8(6), U8(14), |
+ B(Star), R(15), |
+ /* 65 E> */ B(CallProperty), R(15), R(3), U8(1), U8(12), |
B(Star), R(4), |
/* 65 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(10), |
- B(JumpIfToBooleanTrue), U8(27), |
- B(LdaNamedProperty), R(4), U8(4), U8(12), |
+ B(LdaNamedProperty), R(4), U8(7), U8(18), |
+ B(JumpIfToBooleanTrue), U8(43), |
+ B(LdaConstant), U8(8), |
+ B(Star), R(14), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(15), |
+ B(LdaNamedProperty), R(4), U8(9), U8(20), |
B(Star), R(6), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(15), |
B(LdaSmi), I8(2), |
B(Star), R(5), |
B(Mov), R(6), R(1), |
/* 54 E> */ B(StackCheck), |
- B(Mov), R(1), R(2), |
+ B(LdaConstant), U8(10), |
+ B(Star), R(14), |
+ B(Mov), R(6), R(2), |
/* 73 S> */ B(LdaZero), |
B(Star), R(10), |
B(Mov), R(1), R(11), |
- B(Jump), U8(50), |
- B(Jump), U8(36), |
+ B(Jump), U8(54), |
+ B(Jump), U8(40), |
B(Star), R(14), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(14), U8(5), U8(6), |
+ B(CreateCatchContext), R(14), U8(11), U8(12), |
B(Star), R(13), |
B(PushContext), R(9), |
B(LdaSmi), I8(2), |
- B(TestEqualStrict), R(5), U8(14), |
- B(JumpIfFalse), U8(6), |
+ B(TestEqualStrict), R(5), U8(32), |
+ B(JumpIfFalse), U8(10), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(14), |
B(LdaSmi), I8(1), |
B(Star), R(5), |
B(LdaImmutableCurrentContextSlot), U8(4), |
@@ -216,26 +260,28 @@ bytecodes: [ |
B(SetPendingMessage), |
B(Star), R(12), |
B(LdaZero), |
- B(TestEqualStrict), R(5), U8(15), |
- B(JumpIfTrue), U8(111), |
- B(LdaNamedProperty), R(3), U8(7), U8(16), |
+ B(TestEqualStrict), R(5), U8(35), |
+ B(JumpIfTrue), U8(119), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(13), |
+ B(LdaNamedProperty), R(3), U8(13), U8(36), |
B(Star), R(7), |
B(TestUndetectable), R(7), |
B(JumpIfFalse), U8(4), |
- B(Jump), U8(99), |
+ B(Jump), U8(103), |
B(LdaSmi), I8(1), |
- B(TestEqualStrict), R(5), U8(19), |
+ B(TestEqualStrict), R(5), U8(41), |
B(JumpIfFalse), U8(67), |
B(Ldar), R(7), |
B(TypeOf), |
B(Star), R(13), |
- B(LdaConstant), U8(8), |
- B(TestEqualStrict), R(13), U8(20), |
+ B(LdaConstant), U8(14), |
+ B(TestEqualStrict), R(13), U8(42), |
B(JumpIfFalse), U8(4), |
B(Jump), U8(18), |
B(Wide), B(LdaSmi), I16(130), |
B(Star), R(13), |
- B(LdaConstant), U8(9), |
+ B(LdaConstant), U8(2), |
B(Star), R(14), |
B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2), |
B(Throw), |
@@ -246,17 +292,19 @@ bytecodes: [ |
B(Jump), U8(20), |
B(Star), R(14), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(14), U8(5), U8(10), |
+ B(CreateCatchContext), R(14), U8(11), U8(15), |
B(Star), R(13), |
B(LdaTheHole), |
B(SetPendingMessage), |
B(Ldar), R(13), |
B(PushContext), R(9), |
B(PopContext), R(9), |
- B(Jump), U8(27), |
- B(Mov), R(7), R(13), |
- B(Mov), R(3), R(14), |
- B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2), |
+ B(Jump), U8(31), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(13), |
+ B(Mov), R(7), R(14), |
+ B(Mov), R(3), R(15), |
+ B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2), |
B(Star), R(8), |
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1), |
B(JumpIfToBooleanFalse), U8(4), |
@@ -279,22 +327,27 @@ bytecodes: [ |
/* 85 S> */ B(Return), |
] |
constant pool: [ |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["potatoes"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".iterator"], |
SYMBOL_TYPE, |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".result"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".for"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE ["p"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], |
FIXED_ARRAY_TYPE, |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"], |
- ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
FIXED_ARRAY_TYPE, |
] |
handlers: [ |
- [11, 129, 135], |
- [14, 93, 95], |
- [203, 213, 215], |
+ [19, 165, 171], |
+ [22, 125, 127], |
+ [243, 253, 255], |
] |
--- |
@@ -304,60 +357,78 @@ snippet: " |
if (x == 20) break; |
} |
" |
-frame size: 15 |
+frame size: 16 |
parameter count: 1 |
-bytecode array length: 290 |
+bytecode array length: 334 |
bytecodes: [ |
/* 30 E> */ B(StackCheck), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(9), |
B(LdaZero), |
B(Star), R(4), |
B(Mov), R(context), R(11), |
B(Mov), R(context), R(12), |
- /* 48 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(9), |
+ /* 48 S> */ B(LdaConstant), U8(1), |
B(Star), R(13), |
- B(LdaNamedProperty), R(13), U8(1), U8(3), |
+ B(CreateArrayLiteral), U8(2), U8(4), U8(9), |
B(Star), R(14), |
- B(CallProperty), R(14), R(13), U8(1), U8(5), |
+ B(LdaNamedProperty), R(14), U8(3), U8(5), |
+ B(Star), R(15), |
+ B(CallProperty), R(15), R(14), U8(1), U8(7), |
B(JumpIfJSReceiver), U8(7), |
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), |
B(Star), R(2), |
- /* 45 S> */ B(LdaNamedProperty), R(2), U8(2), U8(9), |
+ /* 45 S> */ B(LdaConstant), U8(4), |
B(Star), R(13), |
- /* 45 E> */ B(CallProperty), R(13), R(2), U8(1), U8(7), |
+ B(LdaNamedProperty), R(2), U8(5), U8(13), |
+ B(Star), R(14), |
+ /* 45 E> */ B(CallProperty), R(14), R(2), U8(1), U8(11), |
B(Star), R(3), |
/* 45 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(3), U8(11), |
- B(JumpIfToBooleanTrue), U8(43), |
- B(LdaNamedProperty), R(3), U8(4), U8(13), |
+ B(LdaNamedProperty), R(3), U8(6), U8(17), |
+ B(JumpIfToBooleanTrue), U8(63), |
+ B(LdaConstant), U8(7), |
+ B(Star), R(13), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(14), |
+ B(LdaNamedProperty), R(3), U8(8), U8(19), |
B(Star), R(5), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(14), |
B(LdaSmi), I8(2), |
B(Star), R(4), |
B(Mov), R(5), R(0), |
/* 34 E> */ B(StackCheck), |
- B(Mov), R(0), R(1), |
+ B(LdaConstant), U8(9), |
+ B(Star), R(13), |
+ B(Mov), R(5), R(1), |
/* 66 S> */ B(LdaSmi), I8(10), |
- /* 72 E> */ B(TestEqual), R(1), U8(15), |
+ /* 72 E> */ B(TestEqual), R(1), U8(29), |
B(JumpIfFalse), U8(4), |
- /* 79 S> */ B(Jump), U8(14), |
+ /* 79 S> */ B(Jump), U8(18), |
/* 91 S> */ B(LdaSmi), I8(20), |
- /* 97 E> */ B(TestEqual), R(1), U8(16), |
+ /* 97 E> */ B(TestEqual), R(1), U8(30), |
B(JumpIfFalse), U8(4), |
- /* 104 S> */ B(Jump), U8(8), |
+ /* 104 S> */ B(Jump), U8(12), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(13), |
B(LdaZero), |
B(Star), R(4), |
- B(JumpLoop), U8(69), I8(0), |
- B(Jump), U8(36), |
+ B(JumpLoop), U8(93), I8(0), |
+ B(Jump), U8(40), |
B(Star), R(13), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(13), U8(5), U8(6), |
+ B(CreateCatchContext), R(13), U8(10), U8(11), |
B(Star), R(12), |
B(PushContext), R(8), |
B(LdaSmi), I8(2), |
- B(TestEqualStrict), R(4), U8(17), |
- B(JumpIfFalse), U8(6), |
+ B(TestEqualStrict), R(4), U8(33), |
+ B(JumpIfFalse), U8(10), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(13), |
B(LdaSmi), I8(1), |
B(Star), R(4), |
B(LdaImmutableCurrentContextSlot), U8(4), |
@@ -374,26 +445,28 @@ bytecodes: [ |
B(SetPendingMessage), |
B(Star), R(11), |
B(LdaZero), |
- B(TestEqualStrict), R(4), U8(18), |
- B(JumpIfTrue), U8(111), |
- B(LdaNamedProperty), R(2), U8(7), U8(19), |
+ B(TestEqualStrict), R(4), U8(36), |
+ B(JumpIfTrue), U8(119), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(12), |
+ B(LdaNamedProperty), R(2), U8(12), U8(37), |
B(Star), R(6), |
B(TestUndetectable), R(6), |
B(JumpIfFalse), U8(4), |
- B(Jump), U8(99), |
+ B(Jump), U8(103), |
B(LdaSmi), I8(1), |
- B(TestEqualStrict), R(4), U8(22), |
+ B(TestEqualStrict), R(4), U8(42), |
B(JumpIfFalse), U8(67), |
B(Ldar), R(6), |
B(TypeOf), |
B(Star), R(12), |
- B(LdaConstant), U8(8), |
- B(TestEqualStrict), R(12), U8(23), |
+ B(LdaConstant), U8(13), |
+ B(TestEqualStrict), R(12), U8(43), |
B(JumpIfFalse), U8(4), |
B(Jump), U8(18), |
B(Wide), B(LdaSmi), I16(130), |
B(Star), R(12), |
- B(LdaConstant), U8(9), |
+ B(LdaConstant), U8(0), |
B(Star), R(13), |
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), |
B(Throw), |
@@ -404,17 +477,19 @@ bytecodes: [ |
B(Jump), U8(20), |
B(Star), R(13), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(13), U8(5), U8(10), |
+ B(CreateCatchContext), R(13), U8(10), U8(14), |
B(Star), R(12), |
B(LdaTheHole), |
B(SetPendingMessage), |
B(Ldar), R(12), |
B(PushContext), R(8), |
B(PopContext), R(8), |
- B(Jump), U8(27), |
- B(Mov), R(6), R(12), |
- B(Mov), R(2), R(13), |
- B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2), |
+ B(Jump), U8(31), |
+ B(LdaConstant), U8(0), |
+ B(Star), R(12), |
+ B(Mov), R(6), R(13), |
+ B(Mov), R(2), R(14), |
+ B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2), |
B(Star), R(7), |
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1), |
B(JumpIfToBooleanFalse), U8(4), |
@@ -432,22 +507,26 @@ bytecodes: [ |
/* 113 S> */ B(Return), |
] |
constant pool: [ |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".iterator"], |
CONSTANT_ELEMENTS_PAIR_TYPE, |
SYMBOL_TYPE, |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".result"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".for"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"], |
FIXED_ARRAY_TYPE, |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"], |
- ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
FIXED_ARRAY_TYPE, |
] |
handlers: [ |
- [7, 144, 150], |
- [10, 108, 110], |
- [217, 227, 229], |
+ [11, 180, 186], |
+ [14, 140, 142], |
+ [257, 267, 269], |
] |
--- |
@@ -455,57 +534,73 @@ snippet: " |
var x = { 'a': 1, 'b': 2 }; |
for (x['a'] of [1,2,3]) { return x['a']; } |
" |
-frame size: 14 |
+frame size: 15 |
parameter count: 1 |
-bytecode array length: 297 |
+bytecode array length: 337 |
bytecodes: [ |
/* 30 E> */ B(StackCheck), |
- /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(8), |
- B(Mov), R(8), R(0), |
+ /* 42 S> */ B(LdaConstant), U8(0), |
+ B(CreateObjectLiteral), U8(1), U8(2), U8(1), R(9), |
+ B(Star), R(8), |
+ B(Mov), R(9), R(0), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(8), |
B(LdaZero), |
B(Star), R(3), |
B(Mov), R(context), R(10), |
B(Mov), R(context), R(11), |
- /* 77 S> */ B(CreateArrayLiteral), U8(1), U8(3), U8(9), |
+ /* 77 S> */ B(LdaConstant), U8(3), |
B(Star), R(12), |
- B(LdaNamedProperty), R(12), U8(2), U8(4), |
+ B(CreateArrayLiteral), U8(4), U8(7), U8(9), |
B(Star), R(13), |
- B(CallProperty), R(13), R(12), U8(1), U8(6), |
+ B(LdaNamedProperty), R(13), U8(5), U8(8), |
+ B(Star), R(14), |
+ B(CallProperty), R(14), R(13), U8(1), U8(10), |
B(JumpIfJSReceiver), U8(7), |
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), |
B(Star), R(1), |
- /* 74 S> */ B(LdaNamedProperty), R(1), U8(3), U8(10), |
+ /* 74 S> */ B(LdaConstant), U8(6), |
B(Star), R(12), |
- /* 74 E> */ B(CallProperty), R(12), R(1), U8(1), U8(8), |
+ B(LdaNamedProperty), R(1), U8(7), U8(16), |
+ B(Star), R(13), |
+ /* 74 E> */ B(CallProperty), R(13), R(1), U8(1), U8(14), |
B(Star), R(2), |
/* 74 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(2), U8(1), |
B(ToBooleanLogicalNot), |
B(JumpIfFalse), U8(7), |
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1), |
- B(LdaNamedProperty), R(2), U8(4), U8(12), |
- B(JumpIfToBooleanTrue), U8(31), |
- /* 67 E> */ B(LdaNamedProperty), R(2), U8(5), U8(14), |
+ B(LdaNamedProperty), R(2), U8(8), U8(20), |
+ B(JumpIfToBooleanTrue), U8(43), |
+ B(LdaConstant), U8(9), |
+ B(Star), R(12), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(14), |
+ /* 67 E> */ B(LdaNamedProperty), R(2), U8(10), U8(22), |
B(Star), R(4), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(14), |
B(LdaSmi), I8(2), |
B(Star), R(3), |
B(Ldar), R(4), |
- B(StaNamedPropertySloppy), R(0), U8(6), U8(16), |
+ B(StaNamedPropertySloppy), R(0), U8(9), U8(28), |
/* 62 E> */ B(StackCheck), |
/* 88 S> */ B(Nop), |
- /* 96 E> */ B(LdaNamedProperty), R(0), U8(6), U8(18), |
+ /* 96 E> */ B(LdaNamedProperty), R(0), U8(9), U8(32), |
B(Star), R(9), |
B(LdaZero), |
B(Star), R(8), |
- B(Jump), U8(50), |
- B(Jump), U8(36), |
+ B(Jump), U8(54), |
+ B(Jump), U8(40), |
B(Star), R(12), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(12), U8(7), U8(8), |
+ B(CreateCatchContext), R(12), U8(11), U8(12), |
B(Star), R(11), |
B(PushContext), R(7), |
B(LdaSmi), I8(2), |
- B(TestEqualStrict), R(3), U8(20), |
- B(JumpIfFalse), U8(6), |
+ B(TestEqualStrict), R(3), U8(36), |
+ B(JumpIfFalse), U8(10), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(12), |
B(LdaSmi), I8(1), |
B(Star), R(3), |
B(LdaImmutableCurrentContextSlot), U8(4), |
@@ -522,26 +617,28 @@ bytecodes: [ |
B(SetPendingMessage), |
B(Star), R(10), |
B(LdaZero), |
- B(TestEqualStrict), R(3), U8(21), |
- B(JumpIfTrue), U8(111), |
- B(LdaNamedProperty), R(1), U8(9), U8(22), |
+ B(TestEqualStrict), R(3), U8(39), |
+ B(JumpIfTrue), U8(119), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(11), |
+ B(LdaNamedProperty), R(1), U8(13), U8(40), |
B(Star), R(5), |
B(TestUndetectable), R(5), |
B(JumpIfFalse), U8(4), |
- B(Jump), U8(99), |
+ B(Jump), U8(103), |
B(LdaSmi), I8(1), |
- B(TestEqualStrict), R(3), U8(25), |
+ B(TestEqualStrict), R(3), U8(45), |
B(JumpIfFalse), U8(67), |
B(Ldar), R(5), |
B(TypeOf), |
B(Star), R(11), |
- B(LdaConstant), U8(10), |
- B(TestEqualStrict), R(11), U8(26), |
+ B(LdaConstant), U8(14), |
+ B(TestEqualStrict), R(11), U8(46), |
B(JumpIfFalse), U8(4), |
B(Jump), U8(18), |
B(Wide), B(LdaSmi), I16(130), |
B(Star), R(11), |
- B(LdaConstant), U8(11), |
+ B(LdaConstant), U8(2), |
B(Star), R(12), |
B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2), |
B(Throw), |
@@ -552,17 +649,19 @@ bytecodes: [ |
B(Jump), U8(20), |
B(Star), R(12), |
B(Ldar), R(closure), |
- B(CreateCatchContext), R(12), U8(7), U8(12), |
+ B(CreateCatchContext), R(12), U8(11), U8(15), |
B(Star), R(11), |
B(LdaTheHole), |
B(SetPendingMessage), |
B(Ldar), R(11), |
B(PushContext), R(7), |
B(PopContext), R(7), |
- B(Jump), U8(27), |
- B(Mov), R(5), R(11), |
- B(Mov), R(1), R(12), |
- B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2), |
+ B(Jump), U8(31), |
+ B(LdaConstant), U8(2), |
+ B(Star), R(11), |
+ B(Mov), R(5), R(12), |
+ B(Mov), R(1), R(13), |
+ B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2), |
B(Star), R(6), |
B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1), |
B(JumpIfToBooleanFalse), U8(4), |
@@ -585,23 +684,26 @@ bytecodes: [ |
/* 105 S> */ B(Return), |
] |
constant pool: [ |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"], |
FIXED_ARRAY_TYPE, |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".iterator"], |
CONSTANT_ELEMENTS_PAIR_TYPE, |
SYMBOL_TYPE, |
+ ONE_BYTE_INTERNALIZED_STRING_TYPE [".result"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], |
- ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], |
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"], |
+ 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 ["function"], |
- ONE_BYTE_INTERNALIZED_STRING_TYPE [""], |
FIXED_ARRAY_TYPE, |
] |
handlers: [ |
- [15, 140, 146], |
- [18, 104, 106], |
- [214, 224, 226], |
+ [23, 172, 178], |
+ [26, 132, 134], |
+ [250, 260, 262], |
] |