| 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 f3ad010de861d0fa595c3a1249a7679392a915c7..6ad0f0bf5027e8c507317bf1b6ac61734119db2d 100644
|
| --- a/test/cctest/interpreter/bytecode_expectations/ForOf.golden
|
| +++ b/test/cctest/interpreter/bytecode_expectations/ForOf.golden
|
| @@ -11,43 +11,159 @@ wrap: yes
|
| snippet: "
|
| for (var p of [0, 1, 2]) {}
|
| "
|
| -frame size: 7
|
| +frame size: 16
|
| parameter count: 1
|
| -bytecode array length: 86
|
| +bytecode array length: 345
|
| bytecodes: [
|
| B(StackCheck),
|
| + B(LdaZero),
|
| + B(Star), R(3),
|
| + B(LdaUndefined),
|
| + B(Star), R(4),
|
| + B(Mov), R(context), R(11),
|
| + B(Mov), R(context), R(12),
|
| B(CreateArrayLiteral), U8(0), U8(0), U8(3),
|
| - B(Star), R(5),
|
| + B(Star), R(14),
|
| B(LdaConstant), U8(1),
|
| - B(KeyedLoadIC), R(5), U8(3),
|
| - B(Star), R(4),
|
| - B(Call), R(4), R(5), U8(1), U8(1),
|
| + B(KeyedLoadIC), R(14), U8(3),
|
| + B(Star), R(13),
|
| + B(Call), R(13), R(14), U8(1), U8(1),
|
| B(Star), R(1),
|
| B(Ldar), R(1),
|
| - B(Star), R(6),
|
| - B(LoadIC), R(6), U8(2), U8(7),
|
| - B(Star), R(5),
|
| - B(Call), R(5), R(6), U8(1), U8(5),
|
| + B(Star), R(15),
|
| + B(LoadIC), R(15), U8(2), U8(7),
|
| + B(Star), R(14),
|
| + B(Call), R(14), R(15), U8(1), U8(5),
|
| B(Star), R(2),
|
| - B(Star), R(4),
|
| - B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(4), U8(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(13), U8(1),
|
| B(LogicalNot),
|
| B(JumpIfFalse), U8(11),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(LoadIC), R(4), U8(3), U8(9),
|
| - B(JumpIfToBooleanTrue), U8(19),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(3), U8(9),
|
| + B(JumpIfToBooleanTrue), U8(28),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(3),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(LoadIC), R(4), U8(4), U8(11),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(4), U8(11),
|
| B(Star), R(0),
|
| + B(Ldar), R(4),
|
| B(StackCheck),
|
| B(Ldar), R(0),
|
| + B(Star), R(7),
|
| + B(LdaZero),
|
| + B(Star), R(3),
|
| + B(Jump), U8(-70),
|
| + B(Jump), U8(46),
|
| + B(Star), R(14),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(15),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(12),
|
| + B(PushContext), R(8),
|
| + B(Ldar), R(3),
|
| + B(Star), R(13),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfFalse), U8(6),
|
| + B(LdaSmi8), U8(2),
|
| B(Star), R(3),
|
| - B(Jump), U8(-61),
|
| + B(LdaContextSlot), R(context), U8(4),
|
| + B(Throw),
|
| + B(LdaSmi8), U8(-1),
|
| + B(Star), R(9),
|
| + B(Jump), U8(7),
|
| + B(Star), R(10),
|
| + B(LdaZero),
|
| + B(Star), R(9),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Star), R(11),
|
| + B(Ldar), R(3),
|
| + B(Star), R(12),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfTrue), U8(9),
|
| + B(Ldar), R(1),
|
| + B(Star), R(12),
|
| + B(LdaUndefined),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(JumpConstant), U8(10),
|
| + B(Ldar), R(1),
|
| + B(Star), R(12),
|
| + B(LoadIC), R(12), U8(6), U8(13),
|
| + B(Star), R(5),
|
| + B(Star), R(12),
|
| + B(LdaNull),
|
| + B(TestEqual), R(12),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(122),
|
| + B(Ldar), R(3),
|
| + B(Star), R(12),
|
| + B(LdaSmi8), U8(2),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfFalse), U8(77),
|
| + B(Ldar), R(5),
|
| + B(TypeOf),
|
| + B(Star), R(12),
|
| + B(LdaConstant), U8(7),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(16),
|
| + B(LdaConstant), U8(8),
|
| + B(Star), R(12),
|
| + B(LdaConstant), U8(9),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
|
| + B(Throw),
|
| + B(Mov), R(context), R(12),
|
| + B(Ldar), R(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(1),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(13), U8(2),
|
| + B(Jump), U8(30),
|
| + B(Star), R(14),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(15),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(12),
|
| + B(PushContext), R(8),
|
| + B(PopContext), R(8),
|
| + B(Jump), U8(37),
|
| + B(Ldar), R(5),
|
| + B(Star), R(12),
|
| + B(Ldar), R(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(12), U8(2),
|
| + B(Star), R(6),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(12), U8(1),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(Jump), U8(11),
|
| + B(Ldar), R(6),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
| + B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(11), U8(1),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(9),
|
| + B(JumpIfTrue), U8(4),
|
| + B(Jump), U8(5),
|
| + B(Ldar), R(10),
|
| + B(ReThrow),
|
| B(LdaUndefined),
|
| B(Return),
|
| ]
|
| @@ -57,8 +173,17 @@ constant pool: [
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| ]
|
| handlers: [
|
| + [10, 151, 157],
|
| + [13, 105, 107],
|
| + [248, 261, 263],
|
| ]
|
|
|
| ---
|
| @@ -66,44 +191,168 @@ snippet: "
|
| var x = 'potatoes';
|
| for (var p of x) { return p; }
|
| "
|
| -frame size: 8
|
| +frame size: 17
|
| parameter count: 1
|
| -bytecode array length: 85
|
| +bytecode array length: 361
|
| bytecodes: [
|
| B(StackCheck),
|
| B(LdaConstant), U8(0),
|
| + B(Star), R(7),
|
| + B(LdaZero),
|
| B(Star), R(3),
|
| - B(Star), R(6),
|
| + B(LdaUndefined),
|
| + B(Star), R(4),
|
| + B(Mov), R(context), R(12),
|
| + B(Mov), R(context), R(13),
|
| + B(Ldar), R(7),
|
| + B(Star), R(15),
|
| B(LdaConstant), U8(1),
|
| - B(KeyedLoadIC), R(6), U8(3),
|
| - B(Star), R(5),
|
| - B(Call), R(5), R(6), U8(1), U8(1),
|
| + B(KeyedLoadIC), R(15), U8(3),
|
| + B(Star), R(14),
|
| + B(Call), R(14), R(15), U8(1), U8(1),
|
| B(Star), R(1),
|
| B(Ldar), R(1),
|
| - B(Star), R(7),
|
| - B(LoadIC), R(7), U8(2), U8(7),
|
| - B(Star), R(6),
|
| - B(Call), R(6), R(7), U8(1), U8(5),
|
| + B(Star), R(16),
|
| + B(LoadIC), R(16), U8(2), U8(7),
|
| + B(Star), R(15),
|
| + B(Call), R(15), R(16), U8(1), U8(5),
|
| B(Star), R(2),
|
| - B(Star), R(5),
|
| - B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(5), U8(1),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(14), U8(1),
|
| B(LogicalNot),
|
| B(JumpIfFalse), U8(11),
|
| B(Ldar), R(2),
|
| - B(Star), R(5),
|
| - B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
|
| B(Ldar), R(2),
|
| - B(Star), R(5),
|
| - B(LoadIC), R(5), U8(3), U8(9),
|
| - B(JumpIfToBooleanTrue), U8(18),
|
| + B(Star), R(14),
|
| + B(LoadIC), R(14), U8(3), U8(9),
|
| + B(JumpIfToBooleanTrue), U8(32),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(3),
|
| B(Ldar), R(2),
|
| - B(Star), R(5),
|
| - B(LoadIC), R(5), U8(4), U8(11),
|
| + B(Star), R(14),
|
| + B(LoadIC), R(14), U8(4), U8(11),
|
| B(Star), R(0),
|
| + B(Ldar), R(4),
|
| B(StackCheck),
|
| B(Ldar), R(0),
|
| - B(Star), R(4),
|
| + B(Star), R(8),
|
| + B(Star), R(11),
|
| + B(LdaZero),
|
| + B(Star), R(10),
|
| + B(Jump), U8(62),
|
| + B(Jump), U8(-74),
|
| + B(Jump), U8(46),
|
| + B(Star), R(15),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(14),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(16),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(14), U8(3),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(13),
|
| + B(PushContext), R(9),
|
| + B(Ldar), R(3),
|
| + B(Star), R(14),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(14),
|
| + B(JumpIfFalse), U8(6),
|
| + B(LdaSmi8), U8(2),
|
| + B(Star), R(3),
|
| + B(LdaContextSlot), R(context), U8(4),
|
| + B(Throw),
|
| + B(LdaSmi8), U8(-1),
|
| + B(Star), R(10),
|
| + B(Jump), U8(8),
|
| + B(Star), R(11),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(10),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Star), R(12),
|
| + B(Ldar), R(3),
|
| + B(Star), R(13),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfTrue), U8(9),
|
| + B(Ldar), R(1),
|
| + B(Star), R(13),
|
| + B(LdaUndefined),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(JumpConstant), U8(10),
|
| + B(Ldar), R(1),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(6), U8(13),
|
| + B(Star), R(5),
|
| + B(Star), R(13),
|
| + B(LdaNull),
|
| + B(TestEqual), R(13),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(122),
|
| + B(Ldar), R(3),
|
| + B(Star), R(13),
|
| + B(LdaSmi8), U8(2),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfFalse), U8(77),
|
| + B(Ldar), R(5),
|
| + B(TypeOf),
|
| + B(Star), R(13),
|
| + B(LdaConstant), U8(7),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(16),
|
| + B(LdaConstant), U8(8),
|
| + B(Star), R(13),
|
| + B(LdaConstant), U8(9),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2),
|
| + B(Throw),
|
| + B(Mov), R(context), R(13),
|
| + B(Ldar), R(5),
|
| + B(Star), R(14),
|
| + B(Ldar), R(1),
|
| + B(Star), R(15),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(14), U8(2),
|
| + B(Jump), U8(30),
|
| + B(Star), R(15),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(14),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(16),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(14), U8(3),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(13),
|
| + B(PushContext), R(9),
|
| + B(PopContext), R(9),
|
| + B(Jump), U8(37),
|
| + B(Ldar), R(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(1),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(13), U8(2),
|
| + B(Star), R(6),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(13), U8(1),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(Jump), U8(11),
|
| + B(Ldar), R(6),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
| + B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(12), U8(1),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(10),
|
| + B(JumpIfTrue), U8(10),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(10),
|
| + B(JumpIfTrue), U8(7),
|
| + B(Jump), U8(8),
|
| + B(Ldar), R(11),
|
| B(Return),
|
| + B(Ldar), R(11),
|
| + B(ReThrow),
|
| B(LdaUndefined),
|
| B(Return),
|
| ]
|
| @@ -113,8 +362,17 @@ constant pool: [
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| ]
|
| handlers: [
|
| + [14, 157, 163],
|
| + [17, 111, 113],
|
| + [255, 268, 270],
|
| ]
|
|
|
| ---
|
| @@ -124,54 +382,170 @@ snippet: "
|
| if (x == 20) break;
|
| }
|
| "
|
| -frame size: 7
|
| +frame size: 16
|
| parameter count: 1
|
| -bytecode array length: 108
|
| +bytecode array length: 367
|
| bytecodes: [
|
| B(StackCheck),
|
| + B(LdaZero),
|
| + B(Star), R(3),
|
| + B(LdaUndefined),
|
| + B(Star), R(4),
|
| + B(Mov), R(context), R(11),
|
| + B(Mov), R(context), R(12),
|
| B(CreateArrayLiteral), U8(0), U8(0), U8(3),
|
| - B(Star), R(5),
|
| + B(Star), R(14),
|
| B(LdaConstant), U8(1),
|
| - B(KeyedLoadIC), R(5), U8(3),
|
| - B(Star), R(4),
|
| - B(Call), R(4), R(5), U8(1), U8(1),
|
| + B(KeyedLoadIC), R(14), U8(3),
|
| + B(Star), R(13),
|
| + B(Call), R(13), R(14), U8(1), U8(1),
|
| B(Star), R(1),
|
| B(Ldar), R(1),
|
| - B(Star), R(6),
|
| - B(LoadIC), R(6), U8(2), U8(7),
|
| - B(Star), R(5),
|
| - B(Call), R(5), R(6), U8(1), U8(5),
|
| + B(Star), R(15),
|
| + B(LoadIC), R(15), U8(2), U8(7),
|
| + B(Star), R(14),
|
| + B(Call), R(14), R(15), U8(1), U8(5),
|
| B(Star), R(2),
|
| - B(Star), R(4),
|
| - B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(4), U8(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(13), U8(1),
|
| B(LogicalNot),
|
| B(JumpIfFalse), U8(11),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(LoadIC), R(4), U8(3), U8(9),
|
| - B(JumpIfToBooleanTrue), U8(41),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(3), U8(9),
|
| + B(JumpIfToBooleanTrue), U8(50),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(3),
|
| B(Ldar), R(2),
|
| - B(Star), R(4),
|
| - B(LoadIC), R(4), U8(4), U8(11),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(4), U8(11),
|
| B(Star), R(0),
|
| + B(Ldar), R(4),
|
| B(StackCheck),
|
| B(Ldar), R(0),
|
| - B(Star), R(3),
|
| - B(Star), R(4),
|
| + B(Star), R(7),
|
| + B(Star), R(13),
|
| B(LdaSmi8), U8(10),
|
| - B(TestEqual), R(4),
|
| + B(TestEqual), R(13),
|
| B(JumpIfFalse), U8(4),
|
| - B(Jump), U8(-69),
|
| - B(Ldar), R(3),
|
| - B(Star), R(4),
|
| + B(Jump), U8(-75),
|
| + B(Ldar), R(7),
|
| + B(Star), R(13),
|
| B(LdaSmi8), U8(20),
|
| - B(TestEqual), R(4),
|
| + B(TestEqual), R(13),
|
| B(JumpIfFalse), U8(4),
|
| - B(Jump), U8(4),
|
| - B(Jump), U8(-83),
|
| + B(Jump), U8(7),
|
| + B(LdaZero),
|
| + B(Star), R(3),
|
| + B(Jump), U8(-92),
|
| + B(Jump), U8(46),
|
| + B(Star), R(14),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(15),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(12),
|
| + B(PushContext), R(8),
|
| + B(Ldar), R(3),
|
| + B(Star), R(13),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(13),
|
| + B(JumpIfFalse), U8(6),
|
| + B(LdaSmi8), U8(2),
|
| + B(Star), R(3),
|
| + B(LdaContextSlot), R(context), U8(4),
|
| + B(Throw),
|
| + B(LdaSmi8), U8(-1),
|
| + B(Star), R(9),
|
| + B(Jump), U8(7),
|
| + B(Star), R(10),
|
| + B(LdaZero),
|
| + B(Star), R(9),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Star), R(11),
|
| + B(Ldar), R(3),
|
| + B(Star), R(12),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfTrue), U8(9),
|
| + B(Ldar), R(1),
|
| + B(Star), R(12),
|
| + B(LdaUndefined),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(JumpConstant), U8(10),
|
| + B(Ldar), R(1),
|
| + B(Star), R(12),
|
| + B(LoadIC), R(12), U8(6), U8(13),
|
| + B(Star), R(5),
|
| + B(Star), R(12),
|
| + B(LdaNull),
|
| + B(TestEqual), R(12),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(122),
|
| + B(Ldar), R(3),
|
| + B(Star), R(12),
|
| + B(LdaSmi8), U8(2),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfFalse), U8(77),
|
| + B(Ldar), R(5),
|
| + B(TypeOf),
|
| + B(Star), R(12),
|
| + B(LdaConstant), U8(7),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(16),
|
| + B(LdaConstant), U8(8),
|
| + B(Star), R(12),
|
| + B(LdaConstant), U8(9),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
|
| + B(Throw),
|
| + B(Mov), R(context), R(12),
|
| + B(Ldar), R(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(1),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(13), U8(2),
|
| + B(Jump), U8(30),
|
| + B(Star), R(14),
|
| + B(LdaConstant), U8(5),
|
| + B(Star), R(13),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(15),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(12),
|
| + B(PushContext), R(8),
|
| + B(PopContext), R(8),
|
| + B(Jump), U8(37),
|
| + B(Ldar), R(5),
|
| + B(Star), R(12),
|
| + B(Ldar), R(1),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(12), U8(2),
|
| + B(Star), R(6),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(12), U8(1),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(Jump), U8(11),
|
| + B(Ldar), R(6),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
| + B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(11), U8(1),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(9),
|
| + B(JumpIfTrue), U8(4),
|
| + B(Jump), U8(5),
|
| + B(Ldar), R(10),
|
| + B(ReThrow),
|
| B(LdaUndefined),
|
| B(Return),
|
| ]
|
| @@ -181,8 +555,17 @@ constant pool: [
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| ]
|
| handlers: [
|
| + [10, 173, 179],
|
| + [13, 127, 129],
|
| + [270, 283, 285],
|
| ]
|
|
|
| ---
|
| @@ -190,49 +573,172 @@ snippet: "
|
| var x = { 'a': 1, 'b': 2 };
|
| for (x['a'] of [1,2,3]) { return x['a']; }
|
| "
|
| -frame size: 6
|
| +frame size: 15
|
| parameter count: 1
|
| -bytecode array length: 103
|
| +bytecode array length: 377
|
| bytecodes: [
|
| B(StackCheck),
|
| B(CreateObjectLiteral), U8(0), U8(0), U8(9),
|
| - B(Star), R(3),
|
| + B(Star), R(8),
|
| + B(Star), R(6),
|
| + B(LdaZero),
|
| B(Star), R(2),
|
| + B(LdaUndefined),
|
| + B(Star), R(3),
|
| + B(Mov), R(context), R(10),
|
| + B(Mov), R(context), R(11),
|
| B(CreateArrayLiteral), U8(1), U8(1), U8(3),
|
| - B(Star), R(4),
|
| + B(Star), R(13),
|
| B(LdaConstant), U8(2),
|
| - B(KeyedLoadIC), R(4), U8(3),
|
| - B(Star), R(3),
|
| - B(Call), R(3), R(4), U8(1), U8(1),
|
| + B(KeyedLoadIC), R(13), U8(3),
|
| + B(Star), R(12),
|
| + B(Call), R(12), R(13), U8(1), U8(1),
|
| B(Star), R(0),
|
| B(Ldar), R(0),
|
| - B(Star), R(5),
|
| - B(LoadIC), R(5), U8(3), U8(7),
|
| - B(Star), R(4),
|
| - B(Call), R(4), R(5), U8(1), U8(5),
|
| + B(Star), R(14),
|
| + B(LoadIC), R(14), U8(3), U8(7),
|
| + B(Star), R(13),
|
| + B(Call), R(13), R(14), U8(1), U8(5),
|
| B(Star), R(1),
|
| - B(Star), R(3),
|
| - B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(3), U8(1),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(12), U8(1),
|
| B(LogicalNot),
|
| B(JumpIfFalse), U8(11),
|
| B(Ldar), R(1),
|
| - B(Star), R(3),
|
| - B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
| B(Ldar), R(1),
|
| - B(Star), R(3),
|
| - B(LoadIC), R(3), U8(4), U8(9),
|
| - B(JumpIfToBooleanTrue), U8(28),
|
| - B(Ldar), R(2),
|
| - B(Star), R(3),
|
| + B(Star), R(12),
|
| + B(LoadIC), R(12), U8(4), U8(9),
|
| + B(JumpIfToBooleanTrue), U8(42),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(2),
|
| + B(Ldar), R(6),
|
| + B(Star), R(12),
|
| B(Ldar), R(1),
|
| - B(Star), R(4),
|
| - B(LoadIC), R(4), U8(5), U8(11),
|
| - B(StoreICSloppy), R(3), U8(6), U8(13),
|
| + B(Star), R(13),
|
| + B(LoadIC), R(13), U8(5), U8(11),
|
| + B(StoreICSloppy), R(12), U8(6), U8(13),
|
| + B(Ldar), R(3),
|
| B(StackCheck),
|
| + B(Ldar), R(6),
|
| + B(Star), R(12),
|
| + B(LoadIC), R(12), U8(6), U8(15),
|
| + B(Star), R(9),
|
| + B(LdaZero),
|
| + B(Star), R(8),
|
| + B(Jump), U8(62),
|
| + B(Jump), U8(-84),
|
| + B(Jump), U8(46),
|
| + B(Star), R(13),
|
| + B(LdaConstant), U8(7),
|
| + B(Star), R(12),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(12), U8(3),
|
| + B(Star), R(11),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(11),
|
| + B(PushContext), R(7),
|
| B(Ldar), R(2),
|
| - B(Star), R(3),
|
| - B(LoadIC), R(3), U8(6), U8(15),
|
| + B(Star), R(12),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(12),
|
| + B(JumpIfFalse), U8(6),
|
| + B(LdaSmi8), U8(2),
|
| + B(Star), R(2),
|
| + B(LdaContextSlot), R(context), U8(4),
|
| + B(Throw),
|
| + B(LdaSmi8), U8(-1),
|
| + B(Star), R(8),
|
| + B(Jump), U8(8),
|
| + B(Star), R(9),
|
| + B(LdaSmi8), U8(1),
|
| + B(Star), R(8),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Star), R(10),
|
| + B(Ldar), R(2),
|
| + B(Star), R(11),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(11),
|
| + B(JumpIfTrue), U8(9),
|
| + B(Ldar), R(0),
|
| + B(Star), R(11),
|
| + B(LdaUndefined),
|
| + B(TestEqualStrict), R(11),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(JumpConstant), U8(12),
|
| + B(Ldar), R(0),
|
| + B(Star), R(11),
|
| + B(LoadIC), R(11), U8(8), U8(17),
|
| + B(Star), R(4),
|
| + B(Star), R(11),
|
| + B(LdaNull),
|
| + B(TestEqual), R(11),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(122),
|
| + B(Ldar), R(2),
|
| + B(Star), R(11),
|
| + B(LdaSmi8), U8(2),
|
| + B(TestEqualStrict), R(11),
|
| + B(JumpIfFalse), U8(77),
|
| + B(Ldar), R(4),
|
| + B(TypeOf),
|
| + B(Star), R(11),
|
| + B(LdaConstant), U8(9),
|
| + B(TestEqualStrict), R(11),
|
| + B(JumpIfFalse), U8(4),
|
| + B(Jump), U8(16),
|
| + B(LdaConstant), U8(10),
|
| + B(Star), R(11),
|
| + B(LdaConstant), U8(11),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
|
| + B(Throw),
|
| + B(Mov), R(context), R(11),
|
| + B(Ldar), R(4),
|
| + B(Star), R(12),
|
| + B(Ldar), R(0),
|
| + B(Star), R(13),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(12), U8(2),
|
| + B(Jump), U8(30),
|
| + B(Star), R(13),
|
| + B(LdaConstant), U8(7),
|
| + B(Star), R(12),
|
| + B(Ldar), R(closure),
|
| + B(Star), R(14),
|
| + B(CallRuntime), U16(Runtime::kPushCatchContext), R(12), U8(3),
|
| + B(Star), R(11),
|
| + B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
|
| + B(Ldar), R(11),
|
| + B(PushContext), R(7),
|
| + B(PopContext), R(7),
|
| + B(Jump), U8(37),
|
| + B(Ldar), R(4),
|
| + B(Star), R(11),
|
| + B(Ldar), R(0),
|
| + B(Star), R(12),
|
| + B(CallRuntime), U16(Runtime::k_Call), R(11), U8(2),
|
| + B(Star), R(5),
|
| + B(Star), R(11),
|
| + B(CallRuntime), U16(Runtime::k_IsJSReceiver), R(11), U8(1),
|
| + B(JumpIfToBooleanFalse), U8(4),
|
| + B(Jump), U8(11),
|
| + B(Ldar), R(5),
|
| + B(Star), R(11),
|
| + B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
| + B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(10), U8(1),
|
| + B(LdaZero),
|
| + B(TestEqualStrict), R(8),
|
| + B(JumpIfTrue), U8(10),
|
| + B(LdaSmi8), U8(1),
|
| + B(TestEqualStrict), R(8),
|
| + B(JumpIfTrue), U8(7),
|
| + B(Jump), U8(8),
|
| + B(Ldar), R(9),
|
| B(Return),
|
| + B(Ldar), R(9),
|
| + B(ReThrow),
|
| B(LdaUndefined),
|
| B(Return),
|
| ]
|
| @@ -244,7 +750,16 @@ constant pool: [
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| + InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
| + kInstanceTypeDontCare,
|
| ]
|
| handlers: [
|
| + [18, 173, 179],
|
| + [21, 127, 129],
|
| + [271, 284, 286],
|
| ]
|
|
|
|
|