diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-06-06 10:28:14 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-06-07 10:33:31 +0200 |
commit | 3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch) | |
tree | 9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/test/cctest/interpreter | |
parent | 91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff) | |
download | android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.bz2 android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.zip |
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/test/cctest/interpreter')
40 files changed, 1887 insertions, 1133 deletions
diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden index da9ea93bd9..5bb33d4709 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden @@ -29,7 +29,7 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 35 +bytecode array length: 36 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), @@ -42,7 +42,8 @@ bytecodes: [ /* 54 E> */ B(StaKeyedPropertySloppy), R(2), R(1), U8(4), B(LdaSmi), I8(1), B(Star), R(1), - /* 59 E> */ B(AddSmi), I8(1), R(0), U8(2), + B(Ldar), R(0), + /* 59 E> */ B(AddSmi), I8(1), U8(2), B(StaKeyedPropertySloppy), R(2), R(1), U8(4), B(Ldar), R(2), /* 66 S> */ B(Return), @@ -77,7 +78,7 @@ snippet: " " frame size: 5 parameter count: 1 -bytecode array length: 65 +bytecode array length: 66 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), @@ -100,7 +101,8 @@ bytecodes: [ B(Star), R(4), B(LdaZero), B(Star), R(3), - /* 68 E> */ B(AddSmi), I8(2), R(0), U8(5), + B(Ldar), R(0), + /* 68 E> */ B(AddSmi), I8(2), U8(5), B(StaKeyedPropertySloppy), R(4), R(3), U8(7), B(Ldar), R(4), B(StaKeyedPropertySloppy), R(2), R(1), U8(10), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden index afc009f7d8..e729ec44e3 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden @@ -195,7 +195,7 @@ snippet: " " frame size: 4 parameter count: 1 -bytecode array length: 72 +bytecode array length: 73 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), @@ -207,7 +207,8 @@ bytecodes: [ B(Star), R(0), /* 63 E> */ B(Add), R(2), U8(2), B(Star), R(2), - /* 78 E> */ B(AddSmi), I8(1), R(0), U8(3), + B(Ldar), R(0), + /* 78 E> */ B(AddSmi), I8(1), U8(3), B(Star), R(3), B(LdaSmi), I8(2), B(Star), R(1), @@ -242,7 +243,7 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 43 +bytecode array length: 44 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(17), @@ -253,7 +254,7 @@ bytecodes: [ /* 55 E> */ B(Add), R(1), U8(2), B(Star), R(1), B(Ldar), R(0), - B(ToNumber), R(2), + B(ToNumber), R(2), U8(3), B(Ldar), R(2), B(Inc), U8(3), B(Star), R(0), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden index 3bb478f3c4..75514d3ec7 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden @@ -74,11 +74,11 @@ bytecodes: [ /* 65 E> */ B(TestLessThan), R(0), U8(2), B(JumpIfFalse), U8(38), /* 56 E> */ B(StackCheck), - /* 75 S> */ B(LdaSmi), I8(12), - /* 81 E> */ B(Mul), R(1), U8(3), + /* 75 S> */ B(Ldar), R(1), + /* 81 E> */ B(MulSmi), I8(12), U8(3), B(Star), R(1), - /* 89 S> */ B(LdaSmi), I8(1), - /* 95 E> */ B(Add), R(0), U8(4), + /* 89 S> */ B(Ldar), R(0), + /* 95 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), /* 102 S> */ B(LdaSmi), I8(3), /* 108 E> */ B(TestEqual), R(0), U8(5), @@ -138,8 +138,8 @@ bytecodes: [ /* 158 E> */ B(TestEqual), R(0), U8(6), B(JumpIfFalse), U8(4), /* 164 S> */ B(Jump), U8(12), - /* 173 S> */ B(LdaSmi), I8(1), - /* 179 E> */ B(Add), R(0), U8(7), + /* 173 S> */ B(Ldar), R(0), + /* 179 E> */ B(AddSmi), I8(1), U8(7), B(Star), R(0), B(JumpLoop), U8(52), I8(0), /* 186 S> */ B(Ldar), R(0), @@ -179,12 +179,12 @@ bytecodes: [ /* 88 E> */ B(TestEqual), R(0), U8(3), B(JumpIfFalse), U8(4), /* 94 S> */ B(Jump), U8(12), - /* 105 S> */ B(LdaSmi), I8(1), - /* 111 E> */ B(Add), R(0), U8(4), + /* 105 S> */ B(Ldar), R(0), + /* 111 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), B(JumpLoop), U8(24), I8(1), - /* 122 S> */ B(LdaSmi), I8(1), - /* 128 E> */ B(Add), R(0), U8(5), + /* 122 S> */ B(Ldar), R(0), + /* 128 E> */ B(AddSmi), I8(1), U8(5), B(Star), R(0), /* 135 S> */ B(Jump), U8(2), /* 144 S> */ B(Ldar), R(0), @@ -217,11 +217,11 @@ bytecodes: [ /* 64 S> */ B(Ldar), R(0), B(JumpIfToBooleanFalse), U8(20), /* 57 E> */ B(StackCheck), - /* 71 S> */ B(LdaSmi), I8(12), - /* 77 E> */ B(Mul), R(1), U8(2), + /* 71 S> */ B(Ldar), R(1), + /* 77 E> */ B(MulSmi), I8(12), U8(2), B(Star), R(1), - /* 85 S> */ B(LdaSmi), I8(1), - /* 91 E> */ B(Sub), R(0), U8(3), + /* 85 S> */ B(Ldar), R(0), + /* 91 E> */ B(SubSmi), I8(1), U8(3), B(Star), R(0), B(JumpLoop), U8(19), I8(0), /* 98 S> */ B(Ldar), R(1), @@ -253,8 +253,8 @@ bytecodes: [ /* 53 S> */ B(LdaSmi), I8(1), B(Star), R(1), /* 56 E> */ B(StackCheck), - /* 63 S> */ B(LdaSmi), I8(10), - /* 69 E> */ B(Mul), R(1), U8(2), + /* 63 S> */ B(Ldar), R(1), + /* 69 E> */ B(MulSmi), I8(10), U8(2), B(Star), R(1), /* 77 S> */ B(LdaSmi), I8(5), /* 83 E> */ B(TestEqual), R(0), U8(3), @@ -264,8 +264,8 @@ bytecodes: [ /* 104 E> */ B(TestEqual), R(0), U8(4), B(JumpIfFalse), U8(4), /* 110 S> */ B(Jump), U8(9), - /* 122 S> */ B(LdaSmi), I8(1), - /* 128 E> */ B(Add), R(0), U8(5), + /* 122 S> */ B(Ldar), R(0), + /* 128 E> */ B(AddSmi), I8(1), U8(5), B(Star), R(0), /* 144 S> */ B(LdaSmi), I8(10), /* 144 E> */ B(TestLessThan), R(0), U8(6), @@ -299,11 +299,11 @@ bytecodes: [ /* 54 S> */ B(LdaSmi), I8(1), B(Star), R(1), /* 57 E> */ B(StackCheck), - /* 64 S> */ B(LdaSmi), I8(12), - /* 70 E> */ B(Mul), R(1), U8(2), + /* 64 S> */ B(Ldar), R(1), + /* 70 E> */ B(MulSmi), I8(12), U8(2), B(Star), R(1), - /* 78 S> */ B(LdaSmi), I8(1), - /* 84 E> */ B(Sub), R(0), U8(3), + /* 78 S> */ B(Ldar), R(0), + /* 84 E> */ B(SubSmi), I8(1), U8(3), B(Star), R(0), /* 98 S> */ B(JumpIfToBooleanFalse), U8(5), B(JumpLoop), U8(17), I8(0), @@ -328,7 +328,7 @@ snippet: " " frame size: 2 parameter count: 1 -bytecode array length: 44 +bytecode array length: 43 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaZero), @@ -336,15 +336,15 @@ bytecodes: [ /* 53 S> */ B(LdaSmi), I8(1), B(Star), R(1), /* 56 E> */ B(StackCheck), - /* 63 S> */ B(LdaSmi), I8(10), - /* 69 E> */ B(Mul), R(1), U8(2), + /* 63 S> */ B(Nop), + /* 69 E> */ B(MulSmi), I8(10), U8(2), B(Star), R(1), /* 77 S> */ B(LdaSmi), I8(5), /* 83 E> */ B(TestEqual), R(0), U8(3), B(JumpIfFalse), U8(4), /* 89 S> */ B(Jump), U8(18), - /* 98 S> */ B(LdaSmi), I8(1), - /* 104 E> */ B(Add), R(0), U8(4), + /* 98 S> */ B(Ldar), R(0), + /* 104 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), /* 111 S> */ B(LdaSmi), I8(6), /* 117 E> */ B(TestEqual), R(0), U8(5), @@ -379,15 +379,15 @@ bytecodes: [ /* 53 S> */ B(LdaSmi), I8(1), B(Star), R(1), /* 56 E> */ B(StackCheck), - /* 63 S> */ B(LdaSmi), I8(10), - /* 69 E> */ B(Mul), R(1), U8(2), + /* 63 S> */ B(Ldar), R(1), + /* 69 E> */ B(MulSmi), I8(10), U8(2), B(Star), R(1), /* 77 S> */ B(LdaSmi), I8(5), /* 83 E> */ B(TestEqual), R(0), U8(3), B(JumpIfFalse), U8(4), /* 89 S> */ B(Jump), U8(21), - /* 98 S> */ B(LdaSmi), I8(1), - /* 104 E> */ B(Add), R(0), U8(4), + /* 98 S> */ B(Ldar), R(0), + /* 104 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), /* 111 S> */ B(LdaSmi), I8(6), /* 117 E> */ B(TestEqual), R(0), U8(5), @@ -427,8 +427,8 @@ bytecodes: [ /* 85 E> */ B(TestEqual), R(0), U8(3), B(JumpIfFalse), U8(4), /* 91 S> */ B(Jump), U8(9), - /* 103 S> */ B(LdaSmi), I8(1), - /* 109 E> */ B(Add), R(0), U8(4), + /* 103 S> */ B(Ldar), R(0), + /* 109 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), B(JumpLoop), U8(26), I8(0), B(LdaUndefined), @@ -463,8 +463,8 @@ bytecodes: [ /* 83 E> */ B(TestEqual), R(0), U8(3), B(JumpIfFalse), U8(4), /* 89 S> */ B(Jump), U8(9), - /* 101 S> */ B(LdaSmi), I8(1), - /* 107 E> */ B(Add), R(0), U8(4), + /* 101 S> */ B(Ldar), R(0), + /* 107 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), B(JumpLoop), U8(26), I8(0), B(LdaUndefined), @@ -499,8 +499,8 @@ bytecodes: [ /* 95 E> */ B(TestEqual), R(0), U8(4), B(JumpIfFalse), U8(4), /* 101 S> */ B(Jump), U8(2), - /* 55 S> */ B(LdaSmi), I8(1), - /* 59 E> */ B(Add), R(0), U8(2), + /* 55 S> */ B(Ldar), R(0), + /* 59 E> */ B(AddSmi), I8(1), U8(2), B(Star), R(0), B(JumpLoop), U8(26), I8(0), B(LdaUndefined), @@ -534,8 +534,8 @@ bytecodes: [ /* 93 E> */ B(TestEqual), R(0), U8(4), B(JumpIfFalse), U8(4), /* 99 S> */ B(Jump), U8(2), - /* 53 S> */ B(LdaSmi), I8(1), - /* 57 E> */ B(Add), R(0), U8(2), + /* 53 S> */ B(Ldar), R(0), + /* 57 E> */ B(AddSmi), I8(1), U8(2), B(Star), R(0), B(JumpLoop), U8(26), I8(0), B(LdaUndefined), @@ -567,12 +567,12 @@ bytecodes: [ /* 63 E> */ B(TestLessThan), R(1), U8(2), B(JumpIfFalse), U8(22), /* 45 E> */ B(StackCheck), - /* 85 S> */ B(LdaSmi), I8(1), - /* 91 E> */ B(Add), R(0), U8(4), + /* 85 S> */ B(Ldar), R(0), + /* 91 E> */ B(AddSmi), I8(1), U8(4), B(Star), R(0), /* 98 S> */ B(Jump), U8(2), - /* 72 S> */ B(LdaSmi), I8(1), - /* 76 E> */ B(Add), R(1), U8(3), + /* 72 S> */ B(Ldar), R(1), + /* 76 E> */ B(AddSmi), I8(1), U8(3), B(Star), R(1), B(JumpLoop), U8(24), I8(0), B(LdaUndefined), @@ -603,8 +603,8 @@ bytecodes: [ /* 62 S> */ B(Ldar), R(1), B(JumpIfToBooleanFalse), U8(19), /* 45 E> */ B(StackCheck), - /* 74 S> */ B(LdaSmi), I8(12), - /* 80 E> */ B(Mul), R(0), U8(3), + /* 74 S> */ B(Ldar), R(0), + /* 80 E> */ B(MulSmi), I8(12), U8(3), B(Star), R(0), /* 67 S> */ B(Ldar), R(1), B(Dec), U8(2), @@ -662,8 +662,8 @@ bytecodes: [ /* 58 S> */ B(LdaZero), B(Star), R(1), /* 45 E> */ B(StackCheck), - /* 76 S> */ B(LdaSmi), I8(1), - /* 82 E> */ B(Add), R(0), U8(3), + /* 76 S> */ B(Ldar), R(0), + /* 82 E> */ B(AddSmi), I8(1), U8(3), B(Star), R(0), /* 89 S> */ B(LdaSmi), I8(20), /* 95 E> */ B(TestEqual), R(0), U8(4), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden index 61915b27ea..4794f7f459 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden @@ -17,13 +17,13 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 16 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaZero), B(Star), R(0), - /* 56 S> */ B(LdaSmi), I8(1), - /* 62 E> */ B(Add), R(0), U8(2), + /* 56 S> */ B(Nop), + /* 62 E> */ B(AddSmi), I8(1), U8(2), B(Star), R(0), /* 69 S> */ B(Jump), U8(2), /* 97 S> */ B(Ldar), R(0), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallGlobal.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallGlobal.golden index 88bf4420f2..c9c96e7a1f 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallGlobal.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallGlobal.golden @@ -12,16 +12,14 @@ snippet: " function f() { return t(); } f(); " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 15 +bytecode array length: 10 bytecodes: [ /* 27 E> */ B(StackCheck), - /* 32 S> */ B(LdaUndefined), - B(Star), R(1), - B(LdaGlobal), U8(0), U8(4), + /* 32 S> */ B(LdaGlobal), U8(0), U8(4), B(Star), R(0), - /* 39 E> */ B(Call), R(0), R(1), U8(1), U8(2), + /* 39 E> */ B(CallUndefinedReceiver0), R(0), U8(2), /* 44 S> */ B(Return), ] constant pool: [ @@ -36,22 +34,20 @@ snippet: " function f() { return t(1, 2, 3); } f(); " -frame size: 5 +frame size: 4 parameter count: 1 -bytecode array length: 27 +bytecode array length: 24 bytecodes: [ /* 34 E> */ B(StackCheck), - /* 39 S> */ B(LdaUndefined), - B(Star), R(1), - B(LdaGlobal), U8(0), U8(4), + /* 39 S> */ B(LdaGlobal), U8(0), U8(4), B(Star), R(0), B(LdaSmi), I8(1), - B(Star), R(2), + B(Star), R(1), B(LdaSmi), I8(2), - B(Star), R(3), + B(Star), R(2), B(LdaSmi), I8(3), - B(Star), R(4), - /* 46 E> */ B(Call), R(0), R(1), U8(4), U8(2), + B(Star), R(3), + /* 46 E> */ B(CallUndefinedReceiver), R(0), R(1), U8(3), U8(2), /* 58 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden index fc7a6f7843..33681df144 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden @@ -9,9 +9,9 @@ wrap: yes snippet: " g = function(){}; eval(''); return g(); " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 82 +bytecode array length: 73 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -24,29 +24,25 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateClosure), U8(0), U8(2), U8(2), /* 36 E> */ B(StaLookupSlotSloppy), U8(1), - /* 52 S> */ B(LdaUndefined), - B(Star), R(2), - /* 52 E> */ B(LdaLookupGlobalSlot), U8(2), U8(5), U8(1), + /* 52 S> */ B(LdaLookupGlobalSlot), U8(2), U8(5), U8(1), B(Star), R(1), B(LdaConstant), U8(3), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(30), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(52), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 52 E> */ B(Call), R(1), R(2), U8(2), U8(3), - /* 62 S> */ B(LdaUndefined), - B(Star), R(2), - /* 69 E> */ B(LdaLookupGlobalSlot), U8(1), U8(9), U8(1), + /* 52 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(3), + /* 62 S> */ B(LdaLookupGlobalSlot), U8(1), U8(9), U8(1), B(Star), R(1), - /* 69 E> */ B(Call), R(1), R(2), U8(1), U8(7), + /* 69 E> */ B(CallUndefinedReceiver0), R(1), U8(7), /* 74 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassAndSuperClass.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassAndSuperClass.golden index 9316f65b3f..6c57aaf3cd 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassAndSuperClass.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassAndSuperClass.golden @@ -22,7 +22,7 @@ snippet: " " frame size: 6 parameter count: 1 -bytecode array length: 37 +bytecode array length: 34 bytecodes: [ B(Mov), R(closure), R(0), /* 99 E> */ B(StackCheck), @@ -34,9 +34,8 @@ bytecodes: [ B(Mov), R(this), R(3), B(CallRuntime), U16(Runtime::kLoadFromSuper), R(3), U8(3), B(Star), R(1), - /* 117 E> */ B(Call), R(1), R(this), U8(1), U8(2), - B(Star), R(1), - /* 126 E> */ B(AddSmi), I8(1), R(1), U8(8), + /* 117 E> */ B(CallAnyReceiver), R(1), R(this), U8(1), U8(2), + /* 126 E> */ B(AddSmi), I8(1), U8(8), /* 131 S> */ B(Return), ] constant pool: [ @@ -107,7 +106,7 @@ snippet: " " frame size: 4 parameter count: 1 -bytecode array length: 75 +bytecode array length: 67 bytecodes: [ B(Mov), R(closure), R(1), B(Mov), R(new_target), R(0), @@ -126,22 +125,17 @@ bytecodes: [ /* 118 E> */ B(CallRuntime), U16(Runtime::kThrowSuperAlreadyCalledError), R(0), U8(0), B(Mov), R(2), R(this), /* 128 S> */ B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(0), - B(Star), R(2), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), B(Star), R(2), B(LdaSmi), I8(2), - /* 136 E> */ B(StaNamedPropertyStrict), R(2), U8(1), U8(4), + /* 136 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(4), B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(0), - B(Star), R(2), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), /* 141 S> */ B(Return), ] constant pool: [ - ONE_BYTE_INTERNALIZED_STRING_TYPE ["this"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["y_"], ] handlers: [ @@ -162,7 +156,7 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 71 +bytecode array length: 63 bytecodes: [ B(Mov), R(closure), R(1), B(Mov), R(new_target), R(0), @@ -179,22 +173,17 @@ bytecodes: [ /* 117 E> */ B(CallRuntime), U16(Runtime::kThrowSuperAlreadyCalledError), R(0), U8(0), B(Mov), R(2), R(this), /* 126 S> */ B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(0), - B(Star), R(2), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), B(Star), R(2), B(LdaSmi), I8(2), - /* 134 E> */ B(StaNamedPropertyStrict), R(2), U8(1), U8(4), + /* 134 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(4), B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(0), - B(Star), R(2), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), /* 139 S> */ B(Return), ] constant pool: [ - ONE_BYTE_INTERNALIZED_STRING_TYPE ["this"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["y_"], ] handlers: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden index 7ff8973bc6..b95d6cb4df 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden @@ -118,7 +118,7 @@ snippet: " " frame size: 10 parameter count: 1 -bytecode array length: 117 +bytecode array length: 116 bytecodes: [ B(CreateFunctionContext), U8(2), B(PushContext), R(3), @@ -153,9 +153,9 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), /* 106 E> */ B(ToName), R(7), B(LdaConstant), U8(4), - B(TestEqualStrict), R(7), U8(0), + B(TestEqualStrictNoFeedback), R(7), B(Mov), R(4), R(6), - B(JumpIfToBooleanFalse), U8(7), + B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CreateClosure), U8(5), U8(4), U8(2), B(Star), R(8), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareNil.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareNil.golden new file mode 100644 index 0000000000..466820c5ab --- /dev/null +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareNil.golden @@ -0,0 +1,289 @@ +# +# Autogenerated by generate-bytecode-expectations. +# + +--- +wrap: yes + +--- +snippet: " + var a = 1; + return a === null; +" +frame size: 1 +parameter count: 1 +bytecode array length: 7 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(1), + B(Star), R(0), + /* 45 S> */ B(TestNull), + /* 64 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = undefined; + return undefined === a; +" +frame size: 1 +parameter count: 1 +bytecode array length: 6 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaUndefined), + B(Star), R(0), + /* 53 S> */ B(TestUndefined), + /* 77 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = undefined; + return undefined !== a; +" +frame size: 1 +parameter count: 1 +bytecode array length: 7 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaUndefined), + B(Star), R(0), + /* 53 S> */ B(TestUndefined), + /* 70 E> */ B(LogicalNot), + /* 77 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 2; + return a != null; +" +frame size: 1 +parameter count: 1 +bytecode array length: 8 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(2), + B(Star), R(0), + /* 45 S> */ B(TestUndetectable), + /* 54 E> */ B(LogicalNot), + /* 63 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = undefined; + return undefined == a; +" +frame size: 1 +parameter count: 1 +bytecode array length: 6 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaUndefined), + B(Star), R(0), + /* 53 S> */ B(TestUndetectable), + /* 76 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = undefined; + return undefined === a ? 1 : 2; +" +frame size: 1 +parameter count: 1 +bytecode array length: 13 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaUndefined), + B(Star), R(0), + /* 53 S> */ B(JumpIfNotUndefined), U8(6), + B(LdaSmi), I8(1), + B(Jump), U8(4), + B(LdaSmi), I8(2), + /* 85 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 0; + return null == a ? 1 : 2; +" +frame size: 1 +parameter count: 1 +bytecode array length: 14 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(TestUndetectable), + B(JumpIfFalse), U8(6), + B(LdaSmi), I8(1), + B(Jump), U8(4), + B(LdaSmi), I8(2), + /* 71 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 0; + return undefined !== a ? 1 : 2; +" +frame size: 1 +parameter count: 1 +bytecode array length: 13 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(JumpIfUndefined), U8(6), + B(LdaSmi), I8(1), + B(Jump), U8(4), + B(LdaSmi), I8(2), + /* 77 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 0; + return a === null ? 1 : 2; +" +frame size: 1 +parameter count: 1 +bytecode array length: 13 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(JumpIfNotNull), U8(6), + B(LdaSmi), I8(1), + B(Jump), U8(4), + B(LdaSmi), I8(2), + /* 72 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 0; + if (a === null) { + return 1; + } else { + return 2; + } +" +frame size: 1 +parameter count: 1 +bytecode array length: 14 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(JumpIfNotNull), U8(5), + /* 65 S> */ B(LdaSmi), I8(1), + /* 98 S> */ B(Return), + /* 86 S> */ B(LdaSmi), I8(2), + /* 98 S> */ B(Return), + B(LdaUndefined), + /* 98 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = 0; + if (a != undefined) { + return 1; + } +" +frame size: 1 +parameter count: 1 +bytecode array length: 12 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(TestUndetectable), + B(JumpIfTrue), U8(5), + /* 69 S> */ B(LdaSmi), I8(1), + /* 81 S> */ B(Return), + B(LdaUndefined), + /* 81 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var a = undefined; + var b = 0; + while (a !== undefined) { + b++; + } +" +frame size: 2 +parameter count: 1 +bytecode array length: 23 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaUndefined), + B(Star), R(0), + /* 61 S> */ B(LdaZero), + B(Star), R(1), + /* 73 S> */ B(Ldar), R(0), + B(JumpIfUndefined), U8(12), + /* 64 E> */ B(StackCheck), + /* 92 S> */ B(Ldar), R(1), + B(Inc), U8(5), + B(Star), R(1), + B(JumpLoop), U8(11), I8(0), + B(LdaUndefined), + /* 99 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareTypeOf.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareTypeOf.golden new file mode 100644 index 0000000000..f2295a79a9 --- /dev/null +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompareTypeOf.golden @@ -0,0 +1,97 @@ +# +# Autogenerated by generate-bytecode-expectations. +# + +--- +wrap: yes + +--- +snippet: " + return typeof(1) === 'number'; +" +frame size: 0 +parameter count: 1 +bytecode array length: 6 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 34 S> */ B(LdaSmi), I8(1), + B(TestTypeOf), U8(0), + /* 65 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + return 'string' === typeof('foo'); +" +frame size: 0 +parameter count: 1 +bytecode array length: 6 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 34 S> */ B(LdaConstant), U8(0), + B(TestTypeOf), U8(1), + /* 69 S> */ B(Return), +] +constant pool: [ + ONE_BYTE_INTERNALIZED_STRING_TYPE ["foo"], +] +handlers: [ +] + +--- +snippet: " + return typeof(true) == 'boolean'; +" +frame size: 0 +parameter count: 1 +bytecode array length: 5 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 34 S> */ B(LdaTrue), + B(TestTypeOf), U8(3), + /* 68 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + return 'string' === typeof(undefined); +" +frame size: 0 +parameter count: 1 +bytecode array length: 5 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 34 S> */ B(LdaUndefined), + B(TestTypeOf), U8(1), + /* 73 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + return 'unknown' === typeof(undefined); +" +frame size: 0 +parameter count: 1 +bytecode array length: 3 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 34 S> */ B(LdaFalse), + /* 74 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden index 620031bf27..485dad5e10 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden @@ -9,15 +9,14 @@ wrap: yes snippet: " var a = 1; a += 2; " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 16 +bytecode array length: 12 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(AddSmi), I8(2), R(0), U8(2), - B(Mov), R(0), R(1), + /* 45 S> */ B(AddSmi), I8(2), U8(2), B(Star), R(0), B(LdaUndefined), /* 53 S> */ B(Return), @@ -31,16 +30,14 @@ handlers: [ snippet: " var a = 1; a /= 2; " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 17 +bytecode array length: 12 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(LdaSmi), I8(2), - B(Div), R(0), U8(2), - B(Mov), R(0), R(1), + /* 45 S> */ B(DivSmi), I8(2), U8(2), B(Star), R(0), B(LdaUndefined), /* 53 S> */ B(Return), @@ -54,17 +51,15 @@ handlers: [ snippet: " var a = { val: 2 }; a.name *= 2; " -frame size: 3 +frame size: 2 parameter count: 1 -bytecode array length: 26 +bytecode array length: 22 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(1), B(Mov), R(1), R(0), /* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(3), - B(Star), R(2), - B(LdaSmi), I8(2), - B(Mul), R(2), U8(5), + B(MulSmi), I8(2), U8(5), /* 61 E> */ B(StaNamedPropertySloppy), R(0), U8(1), U8(6), B(LdaUndefined), /* 67 S> */ B(Return), @@ -80,9 +75,9 @@ handlers: [ snippet: " var a = { 1: 2 }; a[1] ^= 2; " -frame size: 4 +frame size: 3 parameter count: 1 -bytecode array length: 29 +bytecode array length: 25 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(1), @@ -90,9 +85,7 @@ bytecodes: [ /* 52 S> */ B(LdaSmi), I8(1), B(Star), R(2), B(LdaKeyedProperty), R(0), U8(3), - B(Star), R(3), - B(LdaSmi), I8(2), - B(BitwiseXor), R(3), U8(5), + B(BitwiseXorSmi), I8(2), U8(5), /* 57 E> */ B(StaKeyedPropertySloppy), R(0), R(2), U8(6), B(LdaUndefined), /* 63 S> */ B(Return), @@ -107,9 +100,9 @@ handlers: [ snippet: " var a = 1; (function f() { return a; }); a |= 24; " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 25 +bytecode array length: 22 bytecodes: [ B(CreateFunctionContext), U8(1), B(PushContext), R(0), @@ -118,8 +111,7 @@ bytecodes: [ /* 42 E> */ B(StaCurrentContextSlot), U8(4), /* 45 S> */ B(CreateClosure), U8(0), U8(2), U8(2), /* 75 S> */ B(LdaCurrentContextSlot), U8(4), - B(Star), R(1), - B(BitwiseOrSmi), I8(24), R(1), U8(3), + B(BitwiseOrSmi), I8(24), U8(3), /* 77 E> */ B(StaCurrentContextSlot), U8(4), B(LdaUndefined), /* 84 S> */ B(Return), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden index dc8d7f67f2..c763cca3e9 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden @@ -75,18 +75,16 @@ handlers: [ snippet: " var a; (function() { a = 2; })(); return a; " -frame size: 3 +frame size: 2 parameter count: 1 -bytecode array length: 22 +bytecode array length: 17 bytecodes: [ B(CreateFunctionContext), U8(1), B(PushContext), R(0), /* 30 E> */ B(StackCheck), - /* 41 S> */ B(LdaUndefined), - B(Star), R(2), - B(CreateClosure), U8(0), U8(4), U8(2), + /* 41 S> */ B(CreateClosure), U8(0), U8(4), U8(2), B(Star), R(1), - /* 64 E> */ B(Call), R(1), R(2), U8(1), U8(2), + /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(2), /* 68 S> */ B(LdaCurrentContextSlot), U8(4), /* 78 S> */ B(Return), ] @@ -388,9 +386,9 @@ snippet: " var b = 100; return b " -frame size: 3 +frame size: 2 parameter count: 1 -bytecode array length: 792 +bytecode array length: 787 bytecodes: [ B(CreateFunctionContext), U8(254), B(PushContext), R(0), @@ -901,11 +899,9 @@ bytecodes: [ /* 3421 E> */ B(StaCurrentContextSlot), U8(254), /* 3435 S> */ B(LdaZero), /* 3435 E> */ B(StaCurrentContextSlot), U8(255), - /* 3438 S> */ B(LdaUndefined), - B(Star), R(2), - B(LdaGlobal), U8(0), U8(4), + /* 3438 S> */ B(LdaGlobal), U8(0), U8(4), B(Star), R(1), - /* 3438 E> */ B(Call), R(1), R(2), U8(1), U8(2), + /* 3438 E> */ B(CallUndefinedReceiver0), R(1), U8(2), /* 3454 S> */ B(LdaSmi), I8(100), /* 3454 E> */ B(Wide), B(StaCurrentContextSlot), U16(256), /* 3459 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden index 512ad2668a..5a2146243c 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden @@ -31,12 +31,12 @@ snippet: " " frame size: 2 parameter count: 1 -bytecode array length: 16 +bytecode array length: 17 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(ToNumber), R(1), + /* 45 S> */ B(ToNumber), R(1), U8(2), B(Ldar), R(1), B(Inc), U8(2), B(Star), R(0), @@ -74,12 +74,12 @@ snippet: " " frame size: 2 parameter count: 1 -bytecode array length: 16 +bytecode array length: 17 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(ToNumber), R(1), + /* 45 S> */ B(ToNumber), R(1), U8(2), B(Ldar), R(1), B(Dec), U8(2), B(Star), R(0), @@ -97,13 +97,13 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 26 +bytecode array length: 27 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(1), B(Mov), R(1), R(0), /* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(3), - B(ToNumber), R(2), + B(ToNumber), R(2), U8(7), B(Ldar), R(2), B(Inc), U8(7), /* 66 E> */ B(StaNamedPropertySloppy), R(0), U8(1), U8(5), @@ -146,7 +146,7 @@ snippet: " " frame size: 5 parameter count: 1 -bytecode array length: 31 +bytecode array length: 32 bytecodes: [ /* 30 E> */ B(StackCheck), /* 45 S> */ B(LdaConstant), U8(0), @@ -155,7 +155,7 @@ bytecodes: [ B(Mov), R(2), R(1), /* 72 S> */ B(Ldar), R(0), /* 81 E> */ B(LdaKeyedProperty), R(1), U8(3), - B(ToNumber), R(4), + B(ToNumber), R(4), U8(7), B(Ldar), R(4), B(Dec), U8(7), /* 86 E> */ B(StaKeyedPropertySloppy), R(1), R(0), U8(5), @@ -227,7 +227,7 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 28 +bytecode array length: 29 bytecodes: [ B(CreateFunctionContext), U8(1), B(PushContext), R(1), @@ -237,7 +237,7 @@ bytecodes: [ /* 53 S> */ B(CreateClosure), U8(0), U8(2), U8(2), B(Star), R(0), /* 78 S> */ B(LdaCurrentContextSlot), U8(4), - B(ToNumber), R(2), + B(ToNumber), R(2), U8(3), B(Ldar), R(2), B(Dec), U8(3), /* 86 E> */ B(StaCurrentContextSlot), U8(4), @@ -256,7 +256,7 @@ snippet: " " frame size: 4 parameter count: 1 -bytecode array length: 28 +bytecode array length: 29 bytecodes: [ /* 30 E> */ B(StackCheck), /* 44 S> */ B(LdaSmi), I8(1), @@ -264,7 +264,7 @@ bytecodes: [ /* 55 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(9), B(Star), R(1), /* 63 S> */ B(Ldar), R(0), - B(ToNumber), R(3), + B(ToNumber), R(3), U8(3), B(Ldar), R(3), B(Inc), U8(3), B(Star), R(0), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CreateRestParameter.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CreateRestParameter.golden index 2abe2d8022..fa824bb49c 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CreateRestParameter.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CreateRestParameter.golden @@ -11,14 +11,17 @@ snippet: " function f(...restArgs) { return restArgs; } f(); " -frame size: 1 +frame size: 2 parameter count: 1 -bytecode array length: 6 +bytecode array length: 13 bytecodes: [ B(CreateRestParameter), B(Star), R(0), + B(LdaTheHole), + B(Star), R(1), /* 10 E> */ B(StackCheck), - /* 26 S> */ B(Nop), + B(Mov), R(0), R(1), + /* 26 S> */ B(Ldar), R(1), /* 43 S> */ B(Return), ] constant pool: [ @@ -31,17 +34,20 @@ snippet: " function f(a, ...restArgs) { return restArgs; } f(); " -frame size: 2 +frame size: 3 parameter count: 2 -bytecode array length: 13 +bytecode array length: 19 bytecodes: [ B(CreateRestParameter), B(Star), R(0), B(LdaTheHole), B(Star), R(1), + B(LdaTheHole), + B(Star), R(2), /* 10 E> */ B(StackCheck), B(Mov), R(arg0), R(1), - /* 29 S> */ B(Ldar), R(0), + B(Mov), R(0), R(2), + /* 29 S> */ B(Ldar), R(2), /* 46 S> */ B(Return), ] constant pool: [ @@ -54,18 +60,21 @@ snippet: " function f(a, ...restArgs) { return restArgs[0]; } f(); " -frame size: 2 +frame size: 3 parameter count: 2 -bytecode array length: 15 +bytecode array length: 21 bytecodes: [ B(CreateRestParameter), B(Star), R(0), B(LdaTheHole), B(Star), R(1), + B(LdaTheHole), + B(Star), R(2), /* 10 E> */ B(StackCheck), B(Mov), R(arg0), R(1), + B(Mov), R(0), R(2), /* 29 S> */ B(LdaZero), - /* 44 E> */ B(LdaKeyedProperty), R(0), U8(2), + /* 44 E> */ B(LdaKeyedProperty), R(2), U8(2), /* 49 S> */ B(Return), ] constant pool: [ @@ -78,24 +87,27 @@ snippet: " function f(a, ...restArgs) { return restArgs[0] + arguments[0]; } f(); " -frame size: 4 +frame size: 5 parameter count: 2 -bytecode array length: 27 +bytecode array length: 33 bytecodes: [ B(CreateUnmappedArguments), - B(Star), R(2), + B(Star), R(3), B(CreateRestParameter), B(Star), R(0), B(LdaTheHole), B(Star), R(1), + B(LdaTheHole), + B(Star), R(2), /* 10 E> */ B(StackCheck), B(Mov), R(arg0), R(1), + B(Mov), R(0), R(2), /* 29 S> */ B(LdaZero), - /* 44 E> */ B(LdaKeyedProperty), R(0), U8(2), - B(Star), R(3), + /* 44 E> */ B(LdaKeyedProperty), R(2), U8(2), + B(Star), R(4), B(LdaZero), - /* 59 E> */ B(LdaKeyedProperty), R(2), U8(4), - /* 48 E> */ B(Add), R(3), U8(6), + /* 59 E> */ B(LdaKeyedProperty), R(3), U8(4), + /* 48 E> */ B(Add), R(4), U8(6), /* 64 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden index 62dc163a70..bf7a371605 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden @@ -104,7 +104,7 @@ snippet: " " frame size: 4 parameter count: 1 -bytecode array length: 32 +bytecode array length: 27 bytecodes: [ B(LdaConstant), U8(0), B(Star), R(1), @@ -113,11 +113,9 @@ bytecodes: [ B(Mov), R(closure), R(3), B(CallRuntime), U16(Runtime::kDeclareGlobalsForInterpreter), R(1), U8(3), /* 0 E> */ B(StackCheck), - /* 16 S> */ B(LdaUndefined), - B(Star), R(2), - B(LdaGlobal), U8(1), U8(2), + /* 16 S> */ B(LdaGlobal), U8(1), U8(2), B(Star), R(1), - /* 16 E> */ B(Call), R(1), R(2), U8(1), U8(5), + /* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(5), B(Star), R(0), /* 20 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/Eval.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/Eval.golden index 3a865c65db..4ef1c7654c 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/Eval.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/Eval.golden @@ -9,9 +9,9 @@ wrap: yes snippet: " return eval('1;'); " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 62 +bytecode array length: 58 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -22,24 +22,22 @@ bytecodes: [ B(Ldar), R(new_target), B(StaCurrentContextSlot), U8(5), /* 30 E> */ B(StackCheck), - /* 34 S> */ B(LdaUndefined), - B(Star), R(2), - /* 41 E> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), + /* 34 S> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(1), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(30), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(41), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 41 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 41 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 53 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden index 3b705f1799..895c6ff7f7 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden @@ -16,24 +16,24 @@ snippet: " " frame size: 19 parameter count: 1 -bytecode array length: 1055 +bytecode array length: 1027 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(42), + B(JumpIfUndefined), U8(39), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(4), B(ResumeGenerator), R(new_target), B(Star), R(3), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(136), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(132), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(13), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(12), B(LdaSmi), I8(2), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(15), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(14), + B(LdaSmi), I8(79), B(Star), R(5), B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1), B(LdaSmi), I8(-2), @@ -51,7 +51,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(5), B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1), - B(StaCurrentContextSlot), U8(10), + B(StaCurrentContextSlot), U8(11), B(Mov), R(context), R(7), B(Mov), R(context), R(8), B(Ldar), R(closure), @@ -66,48 +66,48 @@ bytecodes: [ /* 43 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(9), B(Star), R(13), B(LdaNamedProperty), R(13), U8(2), U8(7), - B(JumpIfUndefined), U8(18), - B(JumpIfNull), U8(16), + B(JumpIfUndefined), U8(17), + B(JumpIfNull), U8(15), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(9), - B(JumpIfJSReceiver), U8(24), + B(CallProperty0), R(14), R(13), U8(9), + B(JumpIfJSReceiver), U8(23), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(LdaNamedProperty), R(13), U8(3), U8(3), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(5), + B(CallProperty0), R(14), R(13), U8(5), B(Star), R(14), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1), /* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0), B(LdaSmi), I8(-2), - B(TestEqual), R(3), U8(0), - B(JumpIfTrue), U8(17), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(16), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(75), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(13), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1), /* 40 S> */ B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(14), B(LdaNamedProperty), R(14), U8(4), U8(13), B(Star), R(13), - /* 40 E> */ B(CallProperty), R(13), R(14), U8(1), U8(11), - B(StaContextSlot), R(1), U8(11), U8(0), + /* 40 E> */ B(CallProperty0), R(13), R(14), U8(11), + B(StaContextSlot), R(1), U8(10), U8(0), /* 40 S> */ B(LdaUndefined), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(11), U8(0), - B(Star), R(15), B(LdaContextSlot), R(1), U8(10), U8(0), + B(Star), R(15), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaZero), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 57 S> */ B(Return), B(LdaSmi), I8(-2), @@ -117,10 +117,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -164,7 +164,7 @@ bytecodes: [ B(PopContext), R(2), B(LdaZero), B(StaContextSlot), R(1), U8(9), U8(0), - B(JumpLoop), U8(226), I8(0), + B(JumpLoop), U8(222), I8(0), B(Jump), U8(48), B(Star), R(13), B(Ldar), R(closure), @@ -198,31 +198,27 @@ bytecodes: [ B(Star), R(12), B(LdaZero), B(TestEqualStrict), R(12), U8(20), - B(JumpIfTrueConstant), U8(17), + B(JumpIfTrueConstant), U8(16), B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(12), B(LdaNamedProperty), R(12), U8(10), U8(21), B(StaContextSlot), R(1), U8(13), U8(0), B(LdaContextSlot), R(1), U8(13), U8(0), - B(Star), R(12), - B(TestUndetectable), R(12), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(JumpConstant), U8(16), + B(JumpConstant), U8(15), B(LdaContextSlot), R(1), U8(9), U8(0), B(Star), R(12), B(LdaSmi), I8(1), B(TestEqualStrict), R(12), U8(24), - B(JumpIfFalse), U8(186), + B(JumpIfFalse), U8(179), B(LdaContextSlot), R(1), U8(13), U8(0), - B(TypeOf), - B(Star), R(12), - B(LdaConstant), U8(11), - B(TestEqualStrict), R(12), U8(25), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(12), - B(LdaConstant), U8(12), + B(LdaConstant), U8(11), B(Star), R(13), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), B(Throw), @@ -239,15 +235,15 @@ bytecodes: [ B(Star), R(14), B(LdaContextSlot), R(1), U8(14), U8(0), B(Star), R(15), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaSmi), I8(1), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 57 S> */ B(Return), B(LdaSmi), I8(-2), @@ -257,10 +253,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(39), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(38), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(29), B(Jump), U8(2), B(LdaTrue), @@ -274,21 +270,21 @@ bytecodes: [ B(Star), R(6), B(LdaZero), B(Star), R(5), - B(JumpConstant), U8(19), + B(JumpConstant), U8(18), B(Ldar), R(15), B(ReThrow), B(Ldar), R(15), B(Jump), U8(20), B(Star), R(13), B(Ldar), R(closure), - B(CreateCatchContext), R(13), U8(8), U8(14), + B(CreateCatchContext), R(13), U8(8), U8(13), B(Star), R(12), B(LdaTheHole), B(SetPendingMessage), B(Ldar), R(12), B(PushContext), R(2), B(PopContext), R(2), - B(Jump), U8(159), + B(Jump), U8(158), B(LdaContextSlot), R(1), U8(13), U8(0), B(Star), R(12), B(LdaContextSlot), R(1), U8(7), U8(0), @@ -301,15 +297,15 @@ bytecodes: [ B(Star), R(13), B(LdaContextSlot), R(1), U8(16), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(15), B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(12), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(13), B(LdaSmi), I8(2), - B(SuspendGenerator), R(13), + B(SuspendGenerator), R(13), U8(2), B(Ldar), R(12), /* 57 S> */ B(Return), B(LdaSmi), I8(-2), @@ -319,10 +315,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1), B(Star), R(15), B(LdaZero), - B(TestEqualStrict), R(15), U8(0), - B(JumpIfTrue), U8(40), + B(TestEqualStrictNoFeedback), R(15), + B(JumpIfTrue), U8(39), B(LdaSmi), I8(2), - B(TestEqualStrict), R(15), U8(0), + B(TestEqualStrictNoFeedback), R(15), B(JumpIfTrue), U8(30), B(Jump), U8(2), B(LdaTrue), @@ -336,7 +332,7 @@ bytecodes: [ B(Star), R(6), B(LdaSmi), I8(1), B(Star), R(5), - B(Jump), U8(170), + B(Jump), U8(168), B(Ldar), R(14), B(ReThrow), B(Ldar), R(14), @@ -352,10 +348,10 @@ bytecodes: [ B(Ldar), R(11), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(21), B(Jump), U8(26), B(PopContext), R(1), @@ -373,12 +369,12 @@ bytecodes: [ B(PopContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(10), B(LdaUndefined), B(Star), R(11), B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(6), B(LdaSmi), I8(3), B(Star), R(5), @@ -386,7 +382,7 @@ bytecodes: [ B(Jump), U8(54), B(Star), R(9), B(Ldar), R(closure), - B(CreateCatchContext), R(9), U8(8), U8(18), + B(CreateCatchContext), R(9), U8(8), U8(17), B(Star), R(8), B(LdaTheHole), B(SetPendingMessage), @@ -394,14 +390,14 @@ bytecodes: [ B(PushContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(10), B(LdaImmutableCurrentContextSlot), U8(4), B(Star), R(11), B(LdaFalse), B(Star), R(12), B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(PopContext), R(1), B(PopContext), R(1), B(Star), R(6), @@ -419,28 +415,28 @@ bytecodes: [ B(Star), R(7), B(LdaUndefined), B(Star), R(8), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(9), B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2), B(Ldar), R(7), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(39), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(34), B(LdaSmi), I8(1), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(35), - B(LdaSmi), I8(2), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(31), + B(LdaSmi), I8(2), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(28), B(LdaSmi), I8(3), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(27), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(25), B(LdaSmi), I8(4), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(23), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(22), B(LdaSmi), I8(5), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(19), B(Jump), U8(20), B(Ldar), R(6), @@ -470,22 +466,21 @@ constant pool: [ 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 [""], - Smi [572], + Smi [557], FIXED_ARRAY_TYPE, - Smi [714], - Smi [356], - Smi [382], + Smi [699], + Smi [348], + Smi [371], FIXED_ARRAY_TYPE, - Smi [320], + Smi [317], ] handlers: [ - [83, 962, 968], - [86, 908, 910], - [103, 432, 438], - [106, 384, 386], - [534, 661, 663], + [80, 940, 946], + [83, 886, 888], + [100, 423, 429], + [103, 375, 377], + [516, 642, 644], ] --- @@ -497,24 +492,24 @@ snippet: " " frame size: 19 parameter count: 1 -bytecode array length: 1115 +bytecode array length: 1085 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(42), + B(JumpIfUndefined), U8(39), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(4), B(ResumeGenerator), R(new_target), B(Star), R(3), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(136), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(132), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(13), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(12), B(LdaSmi), I8(2), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(15), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(14), + B(LdaSmi), I8(79), B(Star), R(5), B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1), B(LdaSmi), I8(-2), @@ -532,7 +527,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(5), B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1), - B(StaCurrentContextSlot), U8(10), + B(StaCurrentContextSlot), U8(11), B(Mov), R(context), R(7), B(Mov), R(context), R(8), B(Ldar), R(closure), @@ -547,48 +542,48 @@ bytecodes: [ /* 43 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(9), B(Star), R(13), B(LdaNamedProperty), R(13), U8(2), U8(7), - B(JumpIfUndefined), U8(18), - B(JumpIfNull), U8(16), + B(JumpIfUndefined), U8(17), + B(JumpIfNull), U8(15), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(9), - B(JumpIfJSReceiver), U8(24), + B(CallProperty0), R(14), R(13), U8(9), + B(JumpIfJSReceiver), U8(23), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(LdaNamedProperty), R(13), U8(3), U8(3), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(5), + B(CallProperty0), R(14), R(13), U8(5), B(Star), R(14), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1), /* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0), B(LdaSmi), I8(-2), - B(TestEqual), R(3), U8(0), - B(JumpIfTrue), U8(17), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(16), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(75), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(13), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1), /* 40 S> */ B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(14), B(LdaNamedProperty), R(14), U8(4), U8(13), B(Star), R(13), - /* 40 E> */ B(CallProperty), R(13), R(14), U8(1), U8(11), - B(StaContextSlot), R(1), U8(11), U8(0), + /* 40 E> */ B(CallProperty0), R(13), R(14), U8(11), + B(StaContextSlot), R(1), U8(10), U8(0), /* 40 S> */ B(LdaUndefined), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(11), U8(0), - B(Star), R(15), B(LdaContextSlot), R(1), U8(10), U8(0), + B(Star), R(15), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaZero), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 68 S> */ B(Return), B(LdaSmi), I8(-2), @@ -598,10 +593,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -686,31 +681,27 @@ bytecodes: [ B(Star), R(12), B(LdaZero), B(TestEqualStrict), R(12), U8(20), - B(JumpIfTrueConstant), U8(17), + B(JumpIfTrueConstant), U8(16), B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(12), B(LdaNamedProperty), R(12), U8(10), U8(21), B(StaContextSlot), R(1), U8(13), U8(0), B(LdaContextSlot), R(1), U8(13), U8(0), - B(Star), R(12), - B(TestUndetectable), R(12), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(JumpConstant), U8(16), + B(JumpConstant), U8(15), B(LdaContextSlot), R(1), U8(9), U8(0), B(Star), R(12), B(LdaSmi), I8(1), B(TestEqualStrict), R(12), U8(24), - B(JumpIfFalse), U8(186), + B(JumpIfFalse), U8(179), B(LdaContextSlot), R(1), U8(13), U8(0), - B(TypeOf), - B(Star), R(12), - B(LdaConstant), U8(11), - B(TestEqualStrict), R(12), U8(25), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(12), - B(LdaConstant), U8(12), + B(LdaConstant), U8(11), B(Star), R(13), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), B(Throw), @@ -727,15 +718,15 @@ bytecodes: [ B(Star), R(14), B(LdaContextSlot), R(1), U8(14), U8(0), B(Star), R(15), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaSmi), I8(1), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 68 S> */ B(Return), B(LdaSmi), I8(-2), @@ -745,10 +736,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(39), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(38), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(29), B(Jump), U8(2), B(LdaTrue), @@ -762,21 +753,21 @@ bytecodes: [ B(Star), R(6), B(LdaZero), B(Star), R(5), - B(JumpConstant), U8(19), + B(JumpConstant), U8(18), B(Ldar), R(15), B(ReThrow), B(Ldar), R(15), B(Jump), U8(20), B(Star), R(13), B(Ldar), R(closure), - B(CreateCatchContext), R(13), U8(8), U8(14), + B(CreateCatchContext), R(13), U8(8), U8(13), B(Star), R(12), B(LdaTheHole), B(SetPendingMessage), B(Ldar), R(12), B(PushContext), R(2), B(PopContext), R(2), - B(Jump), U8(159), + B(Jump), U8(158), B(LdaContextSlot), R(1), U8(13), U8(0), B(Star), R(12), B(LdaContextSlot), R(1), U8(7), U8(0), @@ -789,15 +780,15 @@ bytecodes: [ B(Star), R(13), B(LdaContextSlot), R(1), U8(16), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(15), B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(12), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(13), B(LdaSmi), I8(2), - B(SuspendGenerator), R(13), + B(SuspendGenerator), R(13), U8(2), B(Ldar), R(12), /* 68 S> */ B(Return), B(LdaSmi), I8(-2), @@ -807,10 +798,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1), B(Star), R(15), B(LdaZero), - B(TestEqualStrict), R(15), U8(0), - B(JumpIfTrue), U8(40), + B(TestEqualStrictNoFeedback), R(15), + B(JumpIfTrue), U8(39), B(LdaSmi), I8(2), - B(TestEqualStrict), R(15), U8(0), + B(TestEqualStrictNoFeedback), R(15), B(JumpIfTrue), U8(30), B(Jump), U8(2), B(LdaTrue), @@ -824,7 +815,7 @@ bytecodes: [ B(Star), R(6), B(LdaSmi), I8(1), B(Star), R(5), - B(Jump), U8(194), + B(Jump), U8(191), B(Ldar), R(14), B(ReThrow), B(Ldar), R(14), @@ -840,13 +831,13 @@ bytecodes: [ B(Ldar), R(11), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(18), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(16), B(LdaSmi), I8(1), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(28), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(27), B(LdaSmi), I8(2), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(38), B(Jump), U8(43), B(PopContext), R(1), @@ -872,12 +863,12 @@ bytecodes: [ B(PopContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(10), B(LdaUndefined), B(Star), R(11), B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(6), B(LdaSmi), I8(4), B(Star), R(5), @@ -885,7 +876,7 @@ bytecodes: [ B(Jump), U8(54), B(Star), R(9), B(Ldar), R(closure), - B(CreateCatchContext), R(9), U8(8), U8(18), + B(CreateCatchContext), R(9), U8(8), U8(17), B(Star), R(8), B(LdaTheHole), B(SetPendingMessage), @@ -893,14 +884,14 @@ bytecodes: [ B(PushContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(10), B(LdaImmutableCurrentContextSlot), U8(4), B(Star), R(11), B(LdaFalse), B(Star), R(12), B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(PopContext), R(1), B(PopContext), R(1), B(Star), R(6), @@ -918,31 +909,31 @@ bytecodes: [ B(Star), R(7), B(LdaUndefined), B(Star), R(8), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(9), B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2), B(Ldar), R(7), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(46), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(40), B(LdaSmi), I8(1), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(42), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(37), B(LdaSmi), I8(2), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(38), - B(LdaSmi), I8(3), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(34), + B(LdaSmi), I8(3), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(31), B(LdaSmi), I8(4), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(44), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(42), B(LdaSmi), I8(5), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(40), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(39), B(LdaSmi), I8(6), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(36), B(Jump), U8(37), B(Ldar), R(6), @@ -951,7 +942,7 @@ bytecodes: [ /* 68 S> */ B(Return), B(Ldar), R(6), /* 68 S> */ B(Return), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(9), B(LdaUndefined), B(Star), R(8), @@ -980,22 +971,21 @@ constant pool: [ 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 [""], - Smi [584], + Smi [569], FIXED_ARRAY_TYPE, - Smi [726], - Smi [356], - Smi [382], + Smi [711], + Smi [348], + Smi [371], FIXED_ARRAY_TYPE, - Smi [344], + Smi [340], ] handlers: [ - [83, 998, 1004], - [86, 944, 946], - [103, 444, 450], - [106, 396, 398], - [546, 673, 675], + [80, 975, 981], + [83, 921, 923], + [100, 435, 441], + [103, 387, 389], + [528, 654, 656], ] --- @@ -1010,24 +1000,24 @@ snippet: " " frame size: 19 parameter count: 1 -bytecode array length: 1092 +bytecode array length: 1064 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(42), + B(JumpIfUndefined), U8(39), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(4), B(ResumeGenerator), R(new_target), B(Star), R(3), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(136), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(132), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(13), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(12), B(LdaSmi), I8(2), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrueConstant), U8(15), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrueConstant), U8(14), + B(LdaSmi), I8(79), B(Star), R(5), B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1), B(LdaSmi), I8(-2), @@ -1045,7 +1035,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(5), B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1), - B(StaCurrentContextSlot), U8(10), + B(StaCurrentContextSlot), U8(11), B(Mov), R(context), R(7), B(Mov), R(context), R(8), B(Ldar), R(closure), @@ -1060,48 +1050,48 @@ bytecodes: [ /* 43 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(9), B(Star), R(13), B(LdaNamedProperty), R(13), U8(2), U8(7), - B(JumpIfUndefined), U8(18), - B(JumpIfNull), U8(16), + B(JumpIfUndefined), U8(17), + B(JumpIfNull), U8(15), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(9), - B(JumpIfJSReceiver), U8(24), + B(CallProperty0), R(14), R(13), U8(9), + B(JumpIfJSReceiver), U8(23), B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0), B(LdaNamedProperty), R(13), U8(3), U8(3), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(5), + B(CallProperty0), R(14), R(13), U8(5), B(Star), R(14), B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1), /* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0), B(LdaSmi), I8(-2), - B(TestEqual), R(3), U8(0), - B(JumpIfTrue), U8(17), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(16), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(75), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(13), B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1), /* 40 S> */ B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(14), B(LdaNamedProperty), R(14), U8(4), U8(13), B(Star), R(13), - /* 40 E> */ B(CallProperty), R(13), R(14), U8(1), U8(11), - B(StaContextSlot), R(1), U8(11), U8(0), + /* 40 E> */ B(CallProperty0), R(13), R(14), U8(11), + B(StaContextSlot), R(1), U8(10), U8(0), /* 40 S> */ B(LdaUndefined), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(11), U8(0), - B(Star), R(15), B(LdaContextSlot), R(1), U8(10), U8(0), + B(Star), R(15), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaZero), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 114 S> */ B(Return), B(LdaSmi), I8(-2), @@ -1111,10 +1101,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -1174,7 +1164,7 @@ bytecodes: [ B(PopContext), R(2), B(LdaZero), B(StaContextSlot), R(1), U8(9), U8(0), - B(Wide), B(JumpLoop), U16(261), I16(0), + B(Wide), B(JumpLoop), U16(257), I16(0), B(Jump), U8(48), B(Star), R(13), B(Ldar), R(closure), @@ -1208,31 +1198,27 @@ bytecodes: [ B(Star), R(12), B(LdaZero), B(TestEqualStrict), R(12), U8(22), - B(JumpIfTrueConstant), U8(17), + B(JumpIfTrueConstant), U8(16), B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(12), B(LdaNamedProperty), R(12), U8(10), U8(23), B(StaContextSlot), R(1), U8(13), U8(0), B(LdaContextSlot), R(1), U8(13), U8(0), - B(Star), R(12), - B(TestUndetectable), R(12), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(JumpConstant), U8(16), + B(JumpConstant), U8(15), B(LdaContextSlot), R(1), U8(9), U8(0), B(Star), R(12), B(LdaSmi), I8(1), B(TestEqualStrict), R(12), U8(26), - B(JumpIfFalse), U8(186), + B(JumpIfFalse), U8(179), B(LdaContextSlot), R(1), U8(13), U8(0), - B(TypeOf), - B(Star), R(12), - B(LdaConstant), U8(11), - B(TestEqualStrict), R(12), U8(27), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(12), - B(LdaConstant), U8(12), + B(LdaConstant), U8(11), B(Star), R(13), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), B(Throw), @@ -1249,15 +1235,15 @@ bytecodes: [ B(Star), R(14), B(LdaContextSlot), R(1), U8(14), U8(0), B(Star), R(15), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(16), B(CallJSRuntime), U8(%async_function_await_caught), R(13), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(13), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(14), B(LdaSmi), I8(1), - B(SuspendGenerator), R(14), + B(SuspendGenerator), R(14), U8(2), B(Ldar), R(13), /* 114 S> */ B(Return), B(LdaSmi), I8(-2), @@ -1267,10 +1253,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1), B(Star), R(16), B(LdaZero), - B(TestEqualStrict), R(16), U8(0), - B(JumpIfTrue), U8(39), + B(TestEqualStrictNoFeedback), R(16), + B(JumpIfTrue), U8(38), B(LdaSmi), I8(2), - B(TestEqualStrict), R(16), U8(0), + B(TestEqualStrictNoFeedback), R(16), B(JumpIfTrue), U8(29), B(Jump), U8(2), B(LdaTrue), @@ -1284,21 +1270,21 @@ bytecodes: [ B(Star), R(6), B(LdaZero), B(Star), R(5), - B(JumpConstant), U8(19), + B(JumpConstant), U8(18), B(Ldar), R(15), B(ReThrow), B(Ldar), R(15), B(Jump), U8(20), B(Star), R(13), B(Ldar), R(closure), - B(CreateCatchContext), R(13), U8(8), U8(14), + B(CreateCatchContext), R(13), U8(8), U8(13), B(Star), R(12), B(LdaTheHole), B(SetPendingMessage), B(Ldar), R(12), B(PushContext), R(2), B(PopContext), R(2), - B(Jump), U8(159), + B(Jump), U8(158), B(LdaContextSlot), R(1), U8(13), U8(0), B(Star), R(12), B(LdaContextSlot), R(1), U8(7), U8(0), @@ -1311,15 +1297,15 @@ bytecodes: [ B(Star), R(13), B(LdaContextSlot), R(1), U8(16), U8(0), B(Star), R(14), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(15), B(CallJSRuntime), U8(%async_function_await_uncaught), R(12), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(12), B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(13), B(LdaSmi), I8(2), - B(SuspendGenerator), R(13), + B(SuspendGenerator), R(13), U8(2), B(Ldar), R(12), /* 114 S> */ B(Return), B(LdaSmi), I8(-2), @@ -1329,10 +1315,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1), B(Star), R(15), B(LdaZero), - B(TestEqualStrict), R(15), U8(0), - B(JumpIfTrue), U8(40), + B(TestEqualStrictNoFeedback), R(15), + B(JumpIfTrue), U8(39), B(LdaSmi), I8(2), - B(TestEqualStrict), R(15), U8(0), + B(TestEqualStrictNoFeedback), R(15), B(JumpIfTrue), U8(30), B(Jump), U8(2), B(LdaTrue), @@ -1346,7 +1332,7 @@ bytecodes: [ B(Star), R(6), B(LdaSmi), I8(1), B(Star), R(5), - B(Jump), U8(170), + B(Jump), U8(168), B(Ldar), R(14), B(ReThrow), B(Ldar), R(14), @@ -1362,10 +1348,10 @@ bytecodes: [ B(Ldar), R(11), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(21), B(Jump), U8(26), B(PopContext), R(1), @@ -1383,12 +1369,12 @@ bytecodes: [ B(PopContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(10), B(LdaUndefined), B(Star), R(11), B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(6), B(LdaSmi), I8(3), B(Star), R(5), @@ -1396,7 +1382,7 @@ bytecodes: [ B(Jump), U8(54), B(Star), R(9), B(Ldar), R(closure), - B(CreateCatchContext), R(9), U8(8), U8(18), + B(CreateCatchContext), R(9), U8(8), U8(17), B(Star), R(8), B(LdaTheHole), B(SetPendingMessage), @@ -1404,14 +1390,14 @@ bytecodes: [ B(PushContext), R(1), B(LdaUndefined), B(Star), R(9), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(Star), R(10), B(LdaImmutableCurrentContextSlot), U8(4), B(Star), R(11), B(LdaFalse), B(Star), R(12), B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4), - B(LdaContextSlot), R(1), U8(10), U8(0), + B(LdaContextSlot), R(1), U8(11), U8(0), B(PopContext), R(1), B(PopContext), R(1), B(Star), R(6), @@ -1429,28 +1415,28 @@ bytecodes: [ B(Star), R(7), B(LdaUndefined), B(Star), R(8), - B(LdaCurrentContextSlot), U8(10), + B(LdaCurrentContextSlot), U8(11), B(Star), R(9), B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2), B(Ldar), R(7), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(39), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(34), B(LdaSmi), I8(1), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(35), - B(LdaSmi), I8(2), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(31), + B(LdaSmi), I8(2), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(28), B(LdaSmi), I8(3), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(27), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(25), B(LdaSmi), I8(4), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(23), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(22), B(LdaSmi), I8(5), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(19), B(Jump), U8(20), B(Ldar), R(6), @@ -1480,22 +1466,21 @@ constant pool: [ 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 [""], - Smi [609], + Smi [594], FIXED_ARRAY_TYPE, - Smi [751], - Smi [356], - Smi [382], + Smi [736], + Smi [348], + Smi [371], FIXED_ARRAY_TYPE, - Smi [320], + Smi [317], ] handlers: [ - [83, 999, 1005], - [86, 945, 947], - [103, 469, 475], - [106, 421, 423], - [571, 698, 700], + [80, 977, 983], + [83, 923, 925], + [100, 460, 466], + [103, 412, 414], + [553, 679, 681], ] --- @@ -1508,7 +1493,7 @@ snippet: " " frame size: 14 parameter count: 1 -bytecode array length: 596 +bytecode array length: 579 bytecodes: [ B(Ldar), R(new_target), B(JumpIfUndefined), U8(22), @@ -1516,7 +1501,7 @@ bytecodes: [ B(PushContext), R(3), B(ResumeGenerator), R(new_target), B(Star), R(2), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(4), B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(LdaSmi), I8(-2), @@ -1548,7 +1533,7 @@ bytecodes: [ B(Star), R(12), B(LdaNamedProperty), R(12), U8(2), U8(4), B(Star), R(13), - B(CallProperty), R(13), R(12), U8(1), U8(6), + B(CallProperty0), R(13), R(12), U8(6), B(JumpIfJSReceiver), U8(7), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), /* 68 E> */ B(StaCurrentContextSlot), U8(7), @@ -1556,7 +1541,7 @@ bytecodes: [ B(Star), R(13), B(LdaNamedProperty), R(13), U8(3), U8(10), B(Star), R(12), - /* 65 E> */ B(CallProperty), R(12), R(13), U8(1), U8(8), + /* 65 E> */ B(CallProperty0), R(12), R(13), U8(8), /* 65 E> */ B(StaCurrentContextSlot), U8(8), B(Star), R(12), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1), @@ -1620,31 +1605,27 @@ bytecodes: [ B(Star), R(11), B(LdaZero), B(TestEqualStrict), R(11), U8(21), - B(JumpIfTrue), U8(135), + B(JumpIfTrue), U8(126), B(LdaCurrentContextSlot), U8(7), B(Star), R(11), B(LdaNamedProperty), R(11), U8(9), U8(22), B(StaCurrentContextSlot), U8(11), B(LdaCurrentContextSlot), U8(11), - B(Star), R(11), - B(TestUndetectable), R(11), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(115), + B(Jump), U8(109), B(LdaCurrentContextSlot), U8(9), B(Star), R(11), B(LdaSmi), I8(1), B(TestEqualStrict), R(11), U8(25), - B(JumpIfFalse), U8(69), + B(JumpIfFalse), U8(63), B(LdaCurrentContextSlot), U8(11), - B(TypeOf), - B(Star), R(11), - B(LdaConstant), U8(10), - B(TestEqualStrict), R(11), U8(26), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(11), - B(LdaConstant), U8(11), + B(LdaConstant), U8(10), B(Star), R(12), B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2), B(Throw), @@ -1657,7 +1638,7 @@ 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(7), U8(11), B(Star), R(11), B(LdaTheHole), B(SetPendingMessage), @@ -1682,10 +1663,10 @@ bytecodes: [ B(Ldar), R(10), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(8), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(8), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(8), U8(0), + B(TestEqualStrictNoFeedback), R(8), B(JumpIfTrue), U8(12), B(Jump), U8(13), B(LdaZero), @@ -1709,7 +1690,7 @@ bytecodes: [ B(Jump), U8(54), B(Star), R(8), B(Ldar), R(closure), - B(CreateCatchContext), R(8), U8(7), U8(13), + B(CreateCatchContext), R(8), U8(7), U8(12), B(Star), R(7), B(LdaTheHole), B(SetPendingMessage), @@ -1748,16 +1729,16 @@ bytecodes: [ B(Ldar), R(6), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(4), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(4), + B(JumpIfTrue), U8(22), B(LdaSmi), I8(1), - B(TestEqualStrict), R(4), U8(0), - B(JumpIfTrue), U8(35), + B(TestEqualStrictNoFeedback), R(4), + B(JumpIfTrue), U8(33), B(LdaSmi), I8(2), - B(TestEqualStrict), R(4), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(4), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(3), - B(TestEqualStrict), R(4), U8(0), + B(TestEqualStrictNoFeedback), R(4), B(JumpIfTrue), U8(27), B(Jump), U8(28), B(LdaCurrentContextSlot), U8(13), @@ -1788,16 +1769,15 @@ constant pool: [ 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, FIXED_ARRAY_TYPE, ] handlers: [ - [63, 509, 515], - [66, 455, 457], - [81, 243, 249], - [84, 195, 197], - [333, 345, 347], + [63, 496, 502], + [66, 442, 444], + [81, 241, 247], + [84, 193, 195], + [322, 334, 336], ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForIn.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForIn.golden index a0e62b8519..4acc95246e 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForIn.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForIn.golden @@ -147,23 +147,24 @@ snippet: " " frame size: 7 parameter count: 1 -bytecode array length: 85 +bytecode array length: 87 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(1), B(Mov), R(1), R(0), /* 77 S> */ B(CreateArrayLiteral), U8(1), U8(3), U8(9), - B(JumpIfUndefined), U8(70), - B(JumpIfNull), U8(68), + B(JumpIfUndefined), U8(72), + B(JumpIfNull), U8(70), B(ToObject), R(1), B(ForInPrepare), R(1), R(2), B(LdaZero), B(Star), R(5), /* 68 S> */ B(ForInContinue), R(5), R(4), - B(JumpIfFalse), U8(55), + B(JumpIfFalse), U8(57), B(ForInNext), R(1), R(5), R(2), U8(14), - B(JumpIfUndefined), U8(41), + B(JumpIfUndefined), U8(43), B(Star), R(6), + B(Ldar), R(6), /* 67 E> */ B(StaNamedPropertySloppy), R(0), U8(2), U8(12), /* 62 E> */ B(StackCheck), /* 95 S> */ B(Nop), @@ -182,7 +183,7 @@ bytecodes: [ /* 143 S> */ B(Jump), U8(9), B(ForInStep), R(5), B(Star), R(5), - B(JumpLoop), U8(55), I8(0), + B(JumpLoop), U8(57), I8(0), B(LdaUndefined), /* 152 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOf.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOf.golden index a5f7f6e683..99f48b8b9b 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOf.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOf.golden @@ -11,7 +11,7 @@ snippet: " " frame size: 15 parameter count: 1 -bytecode array length: 272 +bytecode array length: 262 bytecodes: [ /* 30 E> */ B(StackCheck), B(LdaZero), @@ -22,13 +22,13 @@ bytecodes: [ B(Star), R(13), B(LdaNamedProperty), R(13), U8(1), U8(3), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(5), + B(CallProperty0), R(14), R(13), U8(5), 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), B(Star), R(13), - /* 45 E> */ B(CallProperty), R(13), R(2), U8(1), U8(7), + /* 45 E> */ B(CallProperty0), R(13), R(2), U8(7), B(Star), R(3), /* 45 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1), B(ToBooleanLogicalNot), @@ -45,7 +45,7 @@ bytecodes: [ B(Mov), R(0), R(1), B(LdaZero), B(Star), R(4), - B(JumpLoop), U8(51), I8(0), + B(JumpLoop), U8(50), I8(0), B(Jump), U8(36), B(Star), R(13), B(Ldar), R(closure), @@ -72,25 +72,22 @@ bytecodes: [ B(Star), R(11), B(LdaZero), B(TestEqualStrict), R(4), U8(16), - B(JumpIfTrue), U8(111), + B(JumpIfTrue), U8(104), B(LdaNamedProperty), R(2), U8(7), U8(17), B(Star), R(6), - B(TestUndetectable), R(6), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(99), + B(Jump), U8(93), B(LdaSmi), I8(1), B(TestEqualStrict), R(4), U8(20), - B(JumpIfFalse), U8(67), + B(JumpIfFalse), U8(61), B(Ldar), R(6), - B(TypeOf), - B(Star), R(12), - B(LdaConstant), U8(8), - B(TestEqualStrict), R(12), U8(21), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(12), - B(LdaConstant), U8(9), + B(LdaConstant), U8(8), B(Star), R(13), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), B(Throw), @@ -101,7 +98,7 @@ 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(5), U8(9), B(Star), R(12), B(LdaTheHole), B(SetPendingMessage), @@ -120,7 +117,7 @@ bytecodes: [ B(Ldar), R(11), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(4), B(Jump), U8(5), B(Ldar), R(10), @@ -137,14 +134,13 @@ constant pool: [ 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], + [7, 124, 130], + [10, 88, 90], + [190, 200, 202], ] --- @@ -154,7 +150,7 @@ snippet: " " frame size: 16 parameter count: 1 -bytecode array length: 286 +bytecode array length: 275 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaConstant), U8(0), @@ -165,14 +161,14 @@ bytecodes: [ 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(CallProperty0), R(15), R(0), U8(4), B(Mov), R(0), R(14), 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), B(Star), R(14), - /* 65 E> */ B(CallProperty), R(14), R(3), U8(1), U8(6), + /* 65 E> */ B(CallProperty0), R(14), R(3), U8(6), B(Star), R(4), /* 65 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1), B(ToBooleanLogicalNot), @@ -217,25 +213,22 @@ bytecodes: [ B(Star), R(12), B(LdaZero), B(TestEqualStrict), R(5), U8(15), - B(JumpIfTrue), U8(111), + B(JumpIfTrue), U8(104), B(LdaNamedProperty), R(3), U8(7), U8(16), B(Star), R(7), - B(TestUndetectable), R(7), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(99), + B(Jump), U8(93), B(LdaSmi), I8(1), B(TestEqualStrict), R(5), U8(19), - B(JumpIfFalse), U8(67), + B(JumpIfFalse), U8(61), B(Ldar), R(7), - B(TypeOf), - B(Star), R(13), - B(LdaConstant), U8(8), - B(TestEqualStrict), R(13), U8(20), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(13), - B(LdaConstant), U8(9), + B(LdaConstant), U8(8), B(Star), R(14), B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2), B(Throw), @@ -246,7 +239,7 @@ 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(5), U8(9), B(Star), R(13), B(LdaTheHole), B(SetPendingMessage), @@ -265,10 +258,10 @@ bytecodes: [ B(Ldar), R(12), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(10), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(10), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(10), U8(0), + B(TestEqualStrictNoFeedback), R(10), B(JumpIfTrue), U8(7), B(Jump), U8(8), B(Ldar), R(11), @@ -287,14 +280,13 @@ constant pool: [ 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], + [11, 127, 133], + [14, 91, 93], + [194, 204, 206], ] --- @@ -306,7 +298,7 @@ snippet: " " frame size: 15 parameter count: 1 -bytecode array length: 290 +bytecode array length: 280 bytecodes: [ /* 30 E> */ B(StackCheck), B(LdaZero), @@ -317,13 +309,13 @@ bytecodes: [ B(Star), R(13), B(LdaNamedProperty), R(13), U8(1), U8(3), B(Star), R(14), - B(CallProperty), R(14), R(13), U8(1), U8(5), + B(CallProperty0), R(14), R(13), U8(5), 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), B(Star), R(13), - /* 45 E> */ B(CallProperty), R(13), R(2), U8(1), U8(7), + /* 45 E> */ B(CallProperty0), R(13), R(2), U8(7), B(Star), R(3), /* 45 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1), B(ToBooleanLogicalNot), @@ -348,7 +340,7 @@ bytecodes: [ /* 104 S> */ B(Jump), U8(8), B(LdaZero), B(Star), R(4), - B(JumpLoop), U8(69), I8(0), + B(JumpLoop), U8(68), I8(0), B(Jump), U8(36), B(Star), R(13), B(Ldar), R(closure), @@ -375,25 +367,22 @@ bytecodes: [ B(Star), R(11), B(LdaZero), B(TestEqualStrict), R(4), U8(18), - B(JumpIfTrue), U8(111), + B(JumpIfTrue), U8(104), B(LdaNamedProperty), R(2), U8(7), U8(19), B(Star), R(6), - B(TestUndetectable), R(6), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(99), + B(Jump), U8(93), B(LdaSmi), I8(1), B(TestEqualStrict), R(4), U8(22), - B(JumpIfFalse), U8(67), + B(JumpIfFalse), U8(61), B(Ldar), R(6), - B(TypeOf), - B(Star), R(12), - B(LdaConstant), U8(8), - B(TestEqualStrict), R(12), U8(23), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(12), - B(LdaConstant), U8(9), + B(LdaConstant), U8(8), B(Star), R(13), B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2), B(Throw), @@ -404,7 +393,7 @@ 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(5), U8(9), B(Star), R(12), B(LdaTheHole), B(SetPendingMessage), @@ -423,7 +412,7 @@ bytecodes: [ B(Ldar), R(11), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(4), B(Jump), U8(5), B(Ldar), R(10), @@ -440,14 +429,13 @@ constant pool: [ 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], + [7, 142, 148], + [10, 106, 108], + [208, 218, 220], ] --- @@ -457,7 +445,7 @@ snippet: " " frame size: 14 parameter count: 1 -bytecode array length: 297 +bytecode array length: 286 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(8), @@ -470,13 +458,13 @@ bytecodes: [ B(Star), R(12), B(LdaNamedProperty), R(12), U8(2), U8(4), B(Star), R(13), - B(CallProperty), R(13), R(12), U8(1), U8(6), + B(CallProperty0), R(13), R(12), U8(6), 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), B(Star), R(12), - /* 74 E> */ B(CallProperty), R(12), R(1), U8(1), U8(8), + /* 74 E> */ B(CallProperty0), R(12), R(1), U8(8), B(Star), R(2), /* 74 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(2), U8(1), B(ToBooleanLogicalNot), @@ -523,25 +511,22 @@ bytecodes: [ B(Star), R(10), B(LdaZero), B(TestEqualStrict), R(3), U8(21), - B(JumpIfTrue), U8(111), + B(JumpIfTrue), U8(104), B(LdaNamedProperty), R(1), U8(9), U8(22), B(Star), R(5), - B(TestUndetectable), R(5), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(99), + B(Jump), U8(93), B(LdaSmi), I8(1), B(TestEqualStrict), R(3), U8(25), - B(JumpIfFalse), U8(67), + B(JumpIfFalse), U8(61), B(Ldar), R(5), - B(TypeOf), - B(Star), R(11), - B(LdaConstant), U8(10), - B(TestEqualStrict), R(11), U8(26), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(11), - B(LdaConstant), U8(11), + B(LdaConstant), U8(10), B(Star), R(12), B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2), B(Throw), @@ -552,7 +537,7 @@ 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(7), U8(11), B(Star), R(11), B(LdaTheHole), B(SetPendingMessage), @@ -571,10 +556,10 @@ bytecodes: [ B(Ldar), R(10), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(8), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(8), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(8), U8(0), + B(TestEqualStrictNoFeedback), R(8), B(JumpIfTrue), U8(7), B(Jump), U8(8), B(Ldar), R(9), @@ -595,13 +580,12 @@ constant pool: [ 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], + [15, 138, 144], + [18, 102, 104], + [205, 215, 217], ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden index 7d55ebf94c..a9ba5bbf32 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden @@ -27,16 +27,14 @@ handlers: [ snippet: " return (function(){ })() " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 16 +bytecode array length: 11 bytecodes: [ /* 30 E> */ B(StackCheck), - /* 34 S> */ B(LdaUndefined), - B(Star), R(1), - B(CreateClosure), U8(0), U8(4), U8(2), + /* 34 S> */ B(CreateClosure), U8(0), U8(4), U8(2), B(Star), R(0), - /* 56 E> */ B(Call), R(0), R(1), U8(1), U8(2), + /* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -49,18 +47,16 @@ handlers: [ snippet: " return (function(x){ return x; })(1) " -frame size: 3 +frame size: 2 parameter count: 1 -bytecode array length: 20 +bytecode array length: 16 bytecodes: [ /* 30 E> */ B(StackCheck), - /* 34 S> */ B(LdaUndefined), - B(Star), R(1), - B(CreateClosure), U8(0), U8(4), U8(2), + /* 34 S> */ B(CreateClosure), U8(0), U8(4), U8(2), B(Star), R(0), B(LdaSmi), I8(1), - B(Star), R(2), - /* 67 E> */ B(Call), R(0), R(1), U8(2), U8(2), + B(Star), R(1), + /* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(2), /* 71 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden index d12f5a6d05..b8b23b03f9 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden @@ -14,14 +14,15 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 24 +bytecode array length: 25 bytecodes: [ /* 30 E> */ B(StackCheck), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(2), B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndetectable), R(0), + /* 67 S> */ B(Ldar), R(0), + B(TestUndetectable), B(JumpIfFalse), U8(6), /* 88 S> */ B(LdaSmi), I8(20), B(Star), R(1), @@ -43,14 +44,15 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 24 +bytecode array length: 25 bytecodes: [ /* 30 E> */ B(StackCheck), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(2), B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndetectable), R(0), + /* 67 S> */ B(Ldar), R(0), + B(TestUndetectable), B(JumpIfFalse), U8(6), /* 93 S> */ B(LdaSmi), I8(20), B(Star), R(1), @@ -72,14 +74,15 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 24 +bytecode array length: 25 bytecodes: [ /* 30 E> */ B(StackCheck), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(2), B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndetectable), R(0), + /* 67 S> */ B(Ldar), R(0), + B(TestUndetectable), B(JumpIfTrue), U8(6), /* 88 S> */ B(LdaSmi), I8(20), B(Star), R(1), @@ -101,14 +104,15 @@ snippet: " " frame size: 3 parameter count: 1 -bytecode array length: 24 +bytecode array length: 25 bytecodes: [ /* 30 E> */ B(StackCheck), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(2), B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndetectable), R(0), + /* 67 S> */ B(Ldar), R(0), + B(TestUndetectable), B(JumpIfTrue), U8(6), /* 93 S> */ B(LdaSmi), I8(20), B(Star), R(1), @@ -137,8 +141,8 @@ bytecodes: [ B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestNull), R(0), - B(JumpIfFalse), U8(6), + /* 67 S> */ B(Ldar), R(0), + B(JumpIfNotNull), U8(6), /* 89 S> */ B(LdaSmi), I8(20), B(Star), R(1), /* 98 S> */ B(Ldar), R(1), @@ -166,8 +170,8 @@ bytecodes: [ B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndefined), R(0), - B(JumpIfFalse), U8(6), + /* 67 S> */ B(Ldar), R(0), + B(JumpIfNotUndefined), U8(6), /* 94 S> */ B(LdaSmi), I8(20), B(Star), R(1), /* 103 S> */ B(Ldar), R(1), @@ -195,8 +199,8 @@ bytecodes: [ B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestNull), R(0), - B(JumpIfTrue), U8(6), + /* 67 S> */ B(Ldar), R(0), + B(JumpIfNull), U8(6), /* 89 S> */ B(LdaSmi), I8(20), B(Star), R(1), /* 98 S> */ B(Ldar), R(1), @@ -224,8 +228,8 @@ bytecodes: [ B(Mov), R(2), R(0), /* 63 S> */ B(LdaSmi), I8(10), B(Star), R(1), - /* 67 S> */ B(TestUndefined), R(0), - B(JumpIfTrue), U8(6), + /* 67 S> */ B(Ldar), R(0), + B(JumpIfUndefined), U8(6), /* 94 S> */ B(LdaSmi), I8(20), B(Star), R(1), /* 103 S> */ B(Ldar), R(1), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/Generators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/Generators.golden index 1a542b8aec..c92cf051ac 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/Generators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/Generators.golden @@ -13,18 +13,18 @@ snippet: " " frame size: 12 parameter count: 1 -bytecode array length: 204 +bytecode array length: 199 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(53), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(54), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -44,7 +44,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(7), B(LdaZero), - B(SuspendGenerator), R(7), + B(SuspendGenerator), R(7), U8(0), B(Ldar), R(6), /* 16 S> */ B(Return), B(LdaSmi), I8(-2), @@ -54,10 +54,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1), B(Star), R(9), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -94,13 +94,13 @@ bytecodes: [ B(Ldar), R(5), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(18), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(16), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(14), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(13), B(LdaSmi), I8(2), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(10), B(Jump), U8(11), B(Ldar), R(4), @@ -115,7 +115,7 @@ bytecodes: [ constant pool: [ ] handlers: [ - [46, 143, 149], + [45, 141, 147], ] --- @@ -125,21 +125,21 @@ snippet: " " frame size: 12 parameter count: 1 -bytecode array length: 299 +bytecode array length: 291 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(35), + B(JumpIfUndefined), U8(33), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), + B(TestEqualStrictNoFeedback), R(1), B(JumpIfTrue), U8(60), B(LdaSmi), I8(1), - B(TestEqualStrict), R(1), U8(0), + B(TestEqualStrictNoFeedback), R(1), B(JumpIfTrue), U8(130), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -159,7 +159,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(7), B(LdaZero), - B(SuspendGenerator), R(7), + B(SuspendGenerator), R(7), U8(0), B(Ldar), R(6), /* 25 S> */ B(Return), B(LdaSmi), I8(-2), @@ -169,10 +169,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1), B(Star), R(9), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -182,7 +182,7 @@ bytecodes: [ B(Star), R(4), B(LdaZero), B(Star), R(3), - B(Jump), U8(113), + B(Jump), U8(112), B(Ldar), R(8), /* 11 E> */ B(Throw), /* 16 S> */ B(LdaSmi), I8(42), @@ -194,7 +194,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(7), B(LdaSmi), I8(1), - B(SuspendGenerator), R(7), + B(SuspendGenerator), R(7), U8(0), B(Ldar), R(6), /* 25 S> */ B(Return), B(LdaSmi), I8(-2), @@ -204,10 +204,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1), B(Star), R(9), B(LdaZero), - B(TestEqualStrict), R(9), U8(0), - B(JumpIfTrue), U8(32), + B(TestEqualStrictNoFeedback), R(9), + B(JumpIfTrue), U8(31), B(LdaSmi), I8(2), - B(TestEqualStrict), R(9), U8(0), + B(TestEqualStrictNoFeedback), R(9), B(JumpIfTrue), U8(22), B(Jump), U8(2), B(LdaTrue), @@ -244,16 +244,16 @@ bytecodes: [ B(Ldar), R(5), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(22), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(21), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(19), B(LdaSmi), I8(2), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(17), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(16), B(LdaSmi), I8(3), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(13), B(Jump), U8(14), B(Ldar), R(4), @@ -270,7 +270,7 @@ bytecodes: [ constant pool: [ ] handlers: [ - [53, 228, 234], + [51, 224, 230], ] --- @@ -280,21 +280,21 @@ snippet: " " frame size: 18 parameter count: 1 -bytecode array length: 775 +bytecode array length: 751 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(35), + B(JumpIfUndefined), U8(33), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(4), B(ResumeGenerator), R(new_target), B(Star), R(3), B(LdaZero), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(60), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), - B(JumpIfTrue), U8(154), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(152), + B(LdaSmi), I8(79), B(Star), R(5), B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1), B(LdaSmi), I8(-2), @@ -314,7 +314,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(9), B(LdaZero), - B(SuspendGenerator), R(9), + B(SuspendGenerator), R(9), U8(0), B(Ldar), R(8), /* 44 S> */ B(Return), B(LdaSmi), I8(-2), @@ -324,10 +324,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1), B(Star), R(11), B(LdaZero), - B(TestEqualStrict), R(11), U8(0), - B(JumpIfTrue), U8(31), + B(TestEqualStrictNoFeedback), R(11), + B(JumpIfTrue), U8(30), B(LdaSmi), I8(2), - B(TestEqualStrict), R(11), U8(0), + B(TestEqualStrictNoFeedback), R(11), B(JumpIfTrue), U8(21), B(Jump), U8(2), B(LdaTrue), @@ -337,7 +337,7 @@ bytecodes: [ B(Star), R(6), B(LdaZero), B(Star), R(5), - B(JumpConstant), U8(13), + B(JumpConstant), U8(12), B(Ldar), R(10), /* 11 E> */ B(Throw), B(Ldar), R(closure), @@ -353,24 +353,24 @@ bytecodes: [ B(Star), R(12), B(LdaNamedProperty), R(12), U8(2), U8(3), B(Star), R(13), - B(CallProperty), R(13), R(12), U8(1), U8(5), + B(CallProperty0), R(13), R(12), U8(5), B(JumpIfJSReceiver), U8(7), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), /* 30 E> */ B(StaContextSlot), R(1), U8(7), U8(0), B(LdaSmi), I8(-2), - B(TestEqual), R(3), U8(0), - B(JumpIfTrue), U8(18), + B(TestEqualStrictNoFeedback), R(3), + B(JumpIfTrue), U8(17), B(LdaSmi), I8(1), - B(TestEqualStrict), R(3), U8(0), + B(TestEqualStrictNoFeedback), R(3), B(JumpIfTrue), U8(134), - B(LdaSmi), I8(78), + B(LdaSmi), I8(79), B(Star), R(12), B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1), /* 27 S> */ B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(13), B(LdaNamedProperty), R(13), U8(3), U8(9), B(Star), R(12), - /* 27 E> */ B(CallProperty), R(12), R(13), U8(1), U8(7), + /* 27 E> */ B(CallProperty0), R(12), R(13), U8(7), /* 27 E> */ B(StaContextSlot), R(1), U8(8), U8(0), B(Star), R(12), B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1), @@ -382,7 +382,7 @@ bytecodes: [ B(LdaContextSlot), R(1), U8(8), U8(0), B(Star), R(12), B(LdaNamedProperty), R(12), U8(4), U8(11), - B(JumpIfToBooleanTrue), U8(147), + B(JumpIfToBooleanTrue), U8(146), B(LdaContextSlot), R(1), U8(8), U8(0), B(Star), R(12), B(LdaNamedProperty), R(12), U8(5), U8(13), @@ -408,7 +408,7 @@ bytecodes: [ B(LdaImmutableContextSlot), R(1), U8(5), U8(0), B(Star), R(13), B(LdaSmi), I8(1), - B(SuspendGenerator), R(13), + B(SuspendGenerator), R(13), U8(0), B(Ldar), R(12), /* 44 S> */ B(Return), B(LdaSmi), I8(-2), @@ -418,10 +418,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1), B(Star), R(15), B(LdaZero), - B(TestEqualStrict), R(15), U8(0), - B(JumpIfTrue), U8(43), + B(TestEqualStrictNoFeedback), R(15), + B(JumpIfTrue), U8(42), B(LdaSmi), I8(2), - B(TestEqualStrict), R(15), U8(0), + B(TestEqualStrictNoFeedback), R(15), B(JumpIfTrue), U8(33), B(Jump), U8(2), B(LdaTrue), @@ -443,7 +443,7 @@ bytecodes: [ B(PopContext), R(2), B(LdaZero), B(StaContextSlot), R(1), U8(9), U8(0), - B(JumpLoop), U8(218), I8(0), + B(JumpLoop), U8(214), I8(0), B(Jump), U8(44), B(Star), R(12), B(Ldar), R(closure), @@ -474,31 +474,27 @@ bytecodes: [ B(Star), R(11), B(LdaZero), B(TestEqualStrict), R(11), U8(16), - B(JumpIfTrue), U8(159), + B(JumpIfTrue), U8(150), B(LdaContextSlot), R(1), U8(7), U8(0), B(Star), R(11), B(LdaNamedProperty), R(11), U8(9), U8(17), B(StaContextSlot), R(1), U8(11), U8(0), B(LdaContextSlot), R(1), U8(11), U8(0), - B(Star), R(11), - B(TestUndetectable), R(11), + B(TestUndetectable), B(JumpIfFalse), U8(4), - B(Jump), U8(133), + B(Jump), U8(127), B(LdaContextSlot), R(1), U8(9), U8(0), B(Star), R(11), B(LdaSmi), I8(1), B(TestEqualStrict), R(11), U8(20), - B(JumpIfFalse), U8(75), + B(JumpIfFalse), U8(69), B(LdaContextSlot), R(1), U8(11), U8(0), - B(TypeOf), - B(Star), R(11), - B(LdaConstant), U8(10), - B(TestEqualStrict), R(11), U8(21), + B(TestTypeOf), U8(5), B(JumpIfFalse), U8(4), B(Jump), U8(18), - B(Wide), B(LdaSmi), I16(130), + B(Wide), B(LdaSmi), I16(132), B(Star), R(11), - B(LdaConstant), U8(11), + B(LdaConstant), U8(10), B(Star), R(12), B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2), B(Throw), @@ -511,7 +507,7 @@ 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(7), U8(11), B(Star), R(11), B(LdaTheHole), B(SetPendingMessage), @@ -536,10 +532,10 @@ bytecodes: [ B(Ldar), R(10), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(8), U8(0), - B(JumpIfTrue), U8(11), + B(TestEqualStrictNoFeedback), R(8), + B(JumpIfTrue), U8(10), B(LdaSmi), I8(1), - B(TestEqualStrict), R(8), U8(0), + B(TestEqualStrictNoFeedback), R(8), B(JumpIfTrue), U8(17), B(Jump), U8(28), B(PopContext), R(1), @@ -579,19 +575,19 @@ bytecodes: [ B(Ldar), R(7), B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(32), - B(LdaSmi), I8(1), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(28), + B(LdaSmi), I8(1), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(25), B(LdaSmi), I8(2), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(24), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(22), B(LdaSmi), I8(3), - B(TestEqualStrict), R(5), U8(0), - B(JumpIfTrue), U8(20), + B(TestEqualStrictNoFeedback), R(5), + B(JumpIfTrue), U8(19), B(LdaSmi), I8(4), - B(TestEqualStrict), R(5), U8(0), + B(TestEqualStrictNoFeedback), R(5), B(JumpIfTrue), U8(16), B(Jump), U8(17), B(Ldar), R(6), @@ -618,15 +614,14 @@ constant pool: [ 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, - Smi [579], + Smi [563], ] handlers: [ - [53, 694, 700], - [149, 445, 451], - [152, 401, 403], - [547, 563, 565], + [51, 675, 681], + [146, 437, 443], + [149, 393, 395], + [530, 546, 548], ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCompoundExpressions.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCompoundExpressions.golden index 4d04f6a3fa..b085a663ea 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCompoundExpressions.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCompoundExpressions.golden @@ -12,14 +12,13 @@ snippet: " function f() { return global &= 1; } f(); " -frame size: 1 +frame size: 0 parameter count: 1 -bytecode array length: 14 +bytecode array length: 11 bytecodes: [ /* 26 E> */ B(StackCheck), /* 31 S> */ B(LdaGlobal), U8(0), U8(2), - B(Star), R(0), - B(BitwiseAndSmi), I8(1), R(0), U8(4), + B(BitwiseAndSmi), I8(1), U8(4), /* 45 E> */ B(StaGlobalSloppy), U8(0), U8(5), /* 51 S> */ B(Return), ] @@ -35,14 +34,13 @@ snippet: " function f() { return unallocated += 1; } f(); " -frame size: 1 +frame size: 0 parameter count: 1 -bytecode array length: 14 +bytecode array length: 11 bytecodes: [ /* 27 E> */ B(StackCheck), /* 32 S> */ B(LdaGlobal), U8(0), U8(2), - B(Star), R(0), - B(AddSmi), I8(1), R(0), U8(4), + B(AddSmi), I8(1), U8(4), /* 51 E> */ B(StaGlobalSloppy), U8(0), U8(5), /* 57 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCountOperators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCountOperators.golden index a6090aadf0..c40db11faf 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCountOperators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCountOperators.golden @@ -36,11 +36,11 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 16 +bytecode array length: 17 bytecodes: [ /* 26 E> */ B(StackCheck), /* 31 S> */ B(LdaGlobal), U8(0), U8(2), - B(ToNumber), R(0), + B(ToNumber), R(0), U8(6), B(Ldar), R(0), B(Dec), U8(6), /* 44 E> */ B(StaGlobalSloppy), U8(0), U8(4), @@ -83,11 +83,11 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 16 +bytecode array length: 17 bytecodes: [ /* 27 E> */ B(StackCheck), /* 32 S> */ B(LdaGlobal), U8(0), U8(2), - B(ToNumber), R(0), + B(ToNumber), R(0), U8(6), B(Ldar), R(0), B(Inc), U8(6), /* 50 E> */ B(StaGlobalSloppy), U8(0), U8(4), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalDelete.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalDelete.golden index 1db8a27f03..9491511c56 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalDelete.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalDelete.golden @@ -71,9 +71,9 @@ parameter count: 1 bytecode array length: 16 bytecodes: [ /* 32 E> */ B(StackCheck), - /* 39 S> */ B(LdaCurrentContextSlot), U8(3), + /* 39 S> */ B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(0), - B(LdaContextSlot), R(0), U8(2), U8(0), + B(LdaImmutableContextSlot), R(0), U8(2), U8(0), B(Star), R(1), B(LdaConstant), U8(0), B(DeletePropertySloppy), R(1), @@ -98,9 +98,9 @@ parameter count: 1 bytecode array length: 16 bytecodes: [ /* 18 E> */ B(StackCheck), - /* 25 S> */ B(LdaCurrentContextSlot), U8(3), + /* 25 S> */ B(LdaImmutableCurrentContextSlot), U8(3), B(Star), R(0), - B(LdaContextSlot), R(0), U8(2), U8(0), + B(LdaImmutableContextSlot), R(0), U8(2), U8(0), B(Star), R(1), B(LdaConstant), U8(0), B(DeletePropertySloppy), R(1), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/IfConditions.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/IfConditions.golden index ce53de6b7c..77e010d831 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/IfConditions.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/IfConditions.golden @@ -112,16 +112,16 @@ snippet: " }; f(); " -frame size: 2 +frame size: 1 parameter count: 1 -bytecode array length: 23 +bytecode array length: 21 bytecodes: [ /* 10 E> */ B(StackCheck), /* 25 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 30 S> */ B(JumpIfToBooleanFalse), U8(13), - /* 43 S> */ B(AddSmi), I8(1), R(0), U8(2), - B(Mov), R(0), R(1), + /* 30 S> */ B(JumpIfToBooleanFalse), U8(11), + /* 43 S> */ B(Ldar), R(0), + B(AddSmi), I8(1), U8(2), B(Star), R(0), B(Jump), U8(5), /* 66 S> */ B(LdaSmi), I8(2), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden index fdfe86481c..8ecf2c316d 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden @@ -10,9 +10,9 @@ test function name: f snippet: " eval('var x = 10;'); return x; " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 66 +bytecode array length: 62 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -23,24 +23,22 @@ bytecodes: [ B(Ldar), R(new_target), B(StaCurrentContextSlot), U8(5), /* 10 E> */ B(StackCheck), - /* 14 S> */ B(LdaUndefined), - B(Star), R(2), - /* 14 E> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), + /* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(1), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(10), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(14), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 14 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 35 S> */ B(LdaLookupGlobalSlot), U8(2), U8(6), U8(1), /* 45 S> */ B(Return), ] @@ -56,9 +54,9 @@ handlers: [ snippet: " eval('var x = 10;'); return typeof x; " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 67 +bytecode array length: 63 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -69,24 +67,22 @@ bytecodes: [ B(Ldar), R(new_target), B(StaCurrentContextSlot), U8(5), /* 10 E> */ B(StackCheck), - /* 14 S> */ B(LdaUndefined), - B(Star), R(2), - /* 14 E> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), + /* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(1), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(10), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(14), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 14 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 35 S> */ B(LdaLookupGlobalSlotInsideTypeof), U8(2), U8(6), U8(1), B(TypeOf), /* 52 S> */ B(Return), @@ -103,9 +99,9 @@ handlers: [ snippet: " x = 20; return eval(''); " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 66 +bytecode array length: 62 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -118,24 +114,22 @@ bytecodes: [ /* 10 E> */ B(StackCheck), /* 14 S> */ B(LdaSmi), I8(20), /* 16 E> */ B(StaLookupSlotSloppy), U8(0), - /* 22 S> */ B(LdaUndefined), - B(Star), R(2), - /* 29 E> */ B(LdaLookupGlobalSlot), U8(1), U8(4), U8(1), + /* 22 S> */ B(LdaLookupGlobalSlot), U8(1), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(2), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(10), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(29), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 29 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 29 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 39 S> */ B(Return), ] constant pool: [ @@ -155,9 +149,9 @@ snippet: " } f(); " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 66 +bytecode array length: 62 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -168,24 +162,22 @@ bytecodes: [ B(Ldar), R(new_target), B(StaCurrentContextSlot), U8(5), /* 38 E> */ B(StackCheck), - /* 44 S> */ B(LdaUndefined), - B(Star), R(2), - /* 44 E> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), + /* 44 S> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(1), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(38), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(44), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 44 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 44 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 66 S> */ B(LdaLookupContextSlot), U8(2), U8(6), U8(1), /* 76 S> */ B(Return), ] @@ -206,9 +198,9 @@ snippet: " } f(); " -frame size: 10 +frame size: 9 parameter count: 1 -bytecode array length: 66 +bytecode array length: 62 bytecodes: [ B(CreateFunctionContext), U8(3), B(PushContext), R(0), @@ -219,24 +211,22 @@ bytecodes: [ B(Ldar), R(new_target), B(StaCurrentContextSlot), U8(5), /* 34 E> */ B(StackCheck), - /* 40 S> */ B(LdaUndefined), - B(Star), R(2), - /* 40 E> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), + /* 40 S> */ B(LdaLookupGlobalSlot), U8(0), U8(4), U8(1), B(Star), R(1), B(LdaConstant), U8(1), - B(Star), R(3), + B(Star), R(2), B(LdaZero), - B(Star), R(7), + B(Star), R(6), B(LdaSmi), I8(34), - B(Star), R(8), + B(Star), R(7), B(LdaSmi), I8(40), - B(Star), R(9), - B(Mov), R(1), R(4), - B(Mov), R(3), R(5), - B(Mov), R(closure), R(6), - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), + B(Star), R(8), + B(Mov), R(1), R(3), + B(Mov), R(2), R(4), + B(Mov), R(closure), R(5), + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6), B(Star), R(1), - /* 40 E> */ B(Call), R(1), R(2), U8(2), U8(2), + /* 40 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(2), /* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(6), U8(1), /* 72 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/Modules.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/Modules.golden index f8c4df6b30..510e573f54 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/Modules.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/Modules.golden @@ -13,18 +13,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 131 +bytecode array length: 143 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -47,7 +47,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 13 S> */ B(Return), B(LdaSmi), I8(-2), @@ -57,10 +57,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -70,7 +70,13 @@ bytecodes: [ /* 13 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), - B(LdaUndefined), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(6), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 13 S> */ B(Return), ] constant pool: [ @@ -85,18 +91,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 131 +bytecode array length: 143 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -119,7 +125,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 24 S> */ B(Return), B(LdaSmi), I8(-2), @@ -129,10 +135,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -142,7 +148,13 @@ bytecodes: [ /* 24 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), - B(LdaUndefined), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(6), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 24 S> */ B(Return), ] constant pool: [ @@ -159,18 +171,18 @@ snippet: " " frame size: 10 parameter count: 2 -bytecode array length: 201 +bytecode array length: 205 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(3), B(ResumeGenerator), R(new_target), B(Star), R(2), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(2), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(4), B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(LdaSmi), I8(-2), @@ -193,7 +205,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(5), B(LdaZero), - B(SuspendGenerator), R(5), + B(SuspendGenerator), R(5), U8(0), B(Ldar), R(4), /* 64 S> */ B(Return), B(LdaSmi), I8(-2), @@ -203,10 +215,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1), B(Star), R(7), B(LdaZero), - B(TestEqualStrict), R(7), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(7), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(7), U8(0), + B(TestEqualStrictNoFeedback), R(7), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -216,17 +228,15 @@ bytecodes: [ /* 64 S> */ B(Return), B(Ldar), R(6), /* 0 E> */ B(Throw), - /* 32 S> */ B(LdaUndefined), - B(Star), R(5), - /* 32 E> */ B(LdaModuleVariable), I8(-1), U8(0), + /* 32 S> */ B(LdaModuleVariable), I8(-1), U8(0), B(JumpIfNotHole), U8(11), B(LdaConstant), U8(1), - B(Star), R(6), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(6), U8(1), + B(Star), R(5), + B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1), B(Star), R(4), B(LdaSmi), I8(42), - B(Star), R(6), - /* 32 E> */ B(Call), R(4), R(5), U8(2), U8(2), + B(Star), R(5), + /* 32 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(2), B(Ldar), R(closure), B(CreateBlockContext), U8(2), B(PushContext), R(1), @@ -234,19 +244,22 @@ bytecodes: [ B(StaCurrentContextSlot), U8(4), /* 47 S> */ B(LdaUndefined), /* 47 E> */ B(StaCurrentContextSlot), U8(4), - /* 52 S> */ B(LdaUndefined), - B(Star), R(5), - /* 52 E> */ B(LdaModuleVariable), I8(-1), U8(1), + /* 52 S> */ B(LdaModuleVariable), I8(-1), U8(1), B(JumpIfNotHole), U8(11), B(LdaConstant), U8(1), - B(Star), R(6), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(6), U8(1), + B(Star), R(5), + B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1), B(Star), R(4), B(LdaSmi), I8(42), - B(Star), R(6), - /* 52 E> */ B(Call), R(4), R(5), U8(2), U8(4), + B(Star), R(5), + /* 52 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(4), + B(StaContextSlot), R(1), U8(6), U8(0), B(PopContext), R(1), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(4), + B(LdaTrue), + B(Star), R(5), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), /* 64 S> */ B(Return), ] constant pool: [ @@ -265,18 +278,18 @@ snippet: " " frame size: 10 parameter count: 2 -bytecode array length: 166 +bytecode array length: 185 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(3), B(ResumeGenerator), R(new_target), B(Star), R(2), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(2), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(4), B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(LdaSmi), I8(-2), @@ -299,7 +312,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(5), B(LdaZero), - B(SuspendGenerator), R(5), + B(SuspendGenerator), R(5), U8(0), B(Ldar), R(4), /* 49 S> */ B(Return), B(LdaSmi), I8(-2), @@ -309,10 +322,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1), B(Star), R(7), B(LdaZero), - B(TestEqualStrict), R(7), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(7), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(7), U8(0), + B(TestEqualStrictNoFeedback), R(7), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -335,10 +348,18 @@ bytecodes: [ /* 34 S> */ B(LdaUndefined), /* 34 E> */ B(StaCurrentContextSlot), U8(4), /* 39 S> */ B(LdaModuleVariable), I8(1), U8(1), + B(ToNumber), R(4), U8(3), + B(Ldar), R(4), B(Inc), U8(3), /* 42 E> */ B(StaModuleVariable), I8(1), U8(1), + B(Ldar), R(4), + B(StaContextSlot), R(1), U8(6), U8(0), B(PopContext), R(1), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(4), + B(LdaTrue), + B(Star), R(5), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), /* 49 S> */ B(Return), ] constant pool: [ @@ -356,18 +377,18 @@ snippet: " " frame size: 10 parameter count: 2 -bytecode array length: 170 +bytecode array length: 189 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(3), B(ResumeGenerator), R(new_target), B(Star), R(2), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), - B(JumpIfTrue), U8(67), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(2), + B(JumpIfTrue), U8(68), + B(LdaSmi), I8(79), B(Star), R(4), B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(LdaSmi), I8(-2), @@ -392,7 +413,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(5), B(LdaZero), - B(SuspendGenerator), R(5), + B(SuspendGenerator), R(5), U8(0), B(Ldar), R(4), /* 49 S> */ B(Return), B(LdaSmi), I8(-2), @@ -402,10 +423,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1), B(Star), R(7), B(LdaZero), - B(TestEqualStrict), R(7), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(7), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(7), U8(0), + B(TestEqualStrictNoFeedback), R(7), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -428,10 +449,18 @@ bytecodes: [ /* 34 S> */ B(LdaUndefined), /* 34 E> */ B(StaCurrentContextSlot), U8(4), /* 39 S> */ B(LdaModuleVariable), I8(1), U8(1), + B(ToNumber), R(4), U8(3), + B(Ldar), R(4), B(Inc), U8(3), /* 42 E> */ B(StaModuleVariable), I8(1), U8(1), + B(Ldar), R(4), + B(StaContextSlot), R(1), U8(6), U8(0), B(PopContext), R(1), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(4), + B(LdaTrue), + B(Star), R(5), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), /* 49 S> */ B(Return), ] constant pool: [ @@ -449,18 +478,18 @@ snippet: " " frame size: 10 parameter count: 2 -bytecode array length: 174 +bytecode array length: 193 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(3), B(ResumeGenerator), R(new_target), B(Star), R(2), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), - B(JumpIfTrue), U8(67), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(2), + B(JumpIfTrue), U8(68), + B(LdaSmi), I8(79), B(Star), R(4), B(CallRuntime), U16(Runtime::kAbort), R(4), U8(1), B(LdaSmi), I8(-2), @@ -485,7 +514,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(5), B(LdaZero), - B(SuspendGenerator), R(5), + B(SuspendGenerator), R(5), U8(0), B(Ldar), R(4), /* 51 S> */ B(Return), B(LdaSmi), I8(-2), @@ -495,10 +524,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1), B(Star), R(7), B(LdaZero), - B(TestEqualStrict), R(7), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(7), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(7), U8(0), + B(TestEqualStrictNoFeedback), R(7), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -521,10 +550,18 @@ bytecodes: [ /* 36 S> */ B(LdaUndefined), /* 36 E> */ B(StaCurrentContextSlot), U8(4), /* 41 S> */ B(LdaModuleVariable), I8(1), U8(1), + B(ToNumber), R(4), U8(3), + B(Ldar), R(4), B(Inc), U8(3), /* 44 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), + B(Ldar), R(4), + B(StaContextSlot), R(1), U8(6), U8(0), B(PopContext), R(1), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(4), + B(LdaTrue), + B(Star), R(5), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2), /* 51 S> */ B(Return), ] constant pool: [ @@ -540,18 +577,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 142 +bytecode array length: 154 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(67), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(68), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -576,7 +613,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 32 S> */ B(Return), B(LdaSmi), I8(-2), @@ -586,10 +623,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -599,9 +636,15 @@ bytecodes: [ /* 32 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(6), B(CreateClosure), U8(1), U8(2), U8(0), B(StaModuleVariable), I8(1), U8(0), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 32 S> */ B(Return), ] constant pool: [ @@ -617,18 +660,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 179 +bytecode array length: 191 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(67), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(68), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -653,7 +696,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 26 S> */ B(Return), B(LdaSmi), I8(-2), @@ -663,10 +706,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -676,6 +719,8 @@ bytecodes: [ /* 26 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(7), /* 16 S> */ B(CreateClosure), U8(1), U8(2), U8(0), B(Star), R(3), B(LdaTheHole), @@ -692,7 +737,11 @@ bytecodes: [ B(StaCurrentContextSlot), U8(6), B(LdaCurrentContextSlot), U8(6), /* 16 E> */ B(StaModuleVariable), I8(1), U8(0), - B(LdaUndefined), + B(LdaCurrentContextSlot), U8(7), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 26 S> */ B(Return), ] constant pool: [ @@ -708,18 +757,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 131 +bytecode array length: 143 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -742,7 +791,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 30 S> */ B(Return), B(LdaSmi), I8(-2), @@ -752,10 +801,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -765,7 +814,13 @@ bytecodes: [ /* 30 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), - B(LdaUndefined), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(6), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 30 S> */ B(Return), ] constant pool: [ @@ -780,18 +835,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 131 +bytecode array length: 143 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(63), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(64), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -814,7 +869,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 19 S> */ B(Return), B(LdaSmi), I8(-2), @@ -824,10 +879,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -837,7 +892,13 @@ bytecodes: [ /* 19 S> */ B(Return), B(Ldar), R(5), /* 0 E> */ B(Throw), - B(LdaUndefined), + B(Ldar), R(5), + B(StaCurrentContextSlot), U8(6), + B(LdaCurrentContextSlot), U8(6), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 19 S> */ B(Return), ] constant pool: [ @@ -853,18 +914,18 @@ snippet: " " frame size: 9 parameter count: 2 -bytecode array length: 170 +bytecode array length: 181 bytecodes: [ B(Ldar), R(new_target), - B(JumpIfUndefined), U8(28), + B(JumpIfUndefined), U8(27), B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1), B(PushContext), R(2), B(ResumeGenerator), R(new_target), B(Star), R(1), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), - B(JumpIfTrue), U8(73), - B(LdaSmi), I8(78), + B(TestEqualStrictNoFeedback), R(1), + B(JumpIfTrue), U8(74), + B(LdaSmi), I8(79), B(Star), R(3), B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1), B(LdaSmi), I8(-2), @@ -891,7 +952,7 @@ bytecodes: [ B(LdaImmutableCurrentContextSlot), U8(5), B(Star), R(4), B(LdaZero), - B(SuspendGenerator), R(4), + B(SuspendGenerator), R(4), U8(0), B(Ldar), R(3), /* 45 S> */ B(Return), B(LdaSmi), I8(-2), @@ -901,10 +962,10 @@ bytecodes: [ B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1), B(Star), R(6), B(LdaZero), - B(TestEqualStrict), R(6), U8(0), - B(JumpIfTrue), U8(25), + B(TestEqualStrictNoFeedback), R(6), + B(JumpIfTrue), U8(24), B(LdaSmi), I8(2), - B(TestEqualStrict), R(6), U8(0), + B(TestEqualStrictNoFeedback), R(6), B(JumpIfTrue), U8(15), B(Jump), U8(2), B(LdaTrue), @@ -924,8 +985,13 @@ bytecodes: [ B(Star), R(6), /* 41 E> */ B(LdaNamedProperty), R(6), U8(2), U8(6), B(Star), R(6), - /* 31 E> */ B(CallProperty), R(3), R(4), U8(3), U8(2), - B(LdaUndefined), + /* 31 E> */ B(CallProperty2), R(3), R(4), R(5), R(6), U8(2), + B(StaCurrentContextSlot), U8(7), + B(LdaCurrentContextSlot), U8(7), + B(Star), R(3), + B(LdaTrue), + B(Star), R(4), + B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2), /* 45 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden index de0db058e9..7a31554ac7 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden @@ -72,13 +72,13 @@ snippet: " " frame size: 2 parameter count: 1 -bytecode array length: 21 +bytecode array length: 20 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), /* 45 S> */ B(CreateObjectLiteral), U8(0), U8(3), U8(1), R(1), - /* 69 E> */ B(AddSmi), I8(1), R(0), U8(2), + /* 69 E> */ B(AddSmi), I8(1), U8(2), B(StaNamedOwnProperty), R(1), U8(1), U8(4), B(Ldar), R(1), /* 76 S> */ B(Return), @@ -382,7 +382,7 @@ bytecodes: [ B(Star), R(3), B(StaDataPropertyInLiteral), R(1), R(2), U8(0), U8(5), B(LdaConstant), U8(3), - B(ToName), R(3), + B(Star), R(3), B(CreateClosure), U8(4), U8(2), U8(2), B(Star), R(4), B(LdaZero), @@ -390,7 +390,7 @@ bytecodes: [ B(Mov), R(1), R(2), B(CallRuntime), U16(Runtime::kDefineGetterPropertyUnchecked), R(2), U8(4), B(LdaConstant), U8(3), - B(ToName), R(3), + B(Star), R(3), B(CreateClosure), U8(5), U8(3), U8(2), B(Star), R(4), B(LdaZero), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrimitiveExpressions.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrimitiveExpressions.golden index 055c016e24..62c7c14efd 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrimitiveExpressions.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrimitiveExpressions.golden @@ -30,13 +30,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 10 +bytecode array length: 9 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(AddSmi), I8(3), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 0; return 3 + x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 14 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaZero), B(Star), R(0), /* 45 S> */ B(LdaSmi), I8(3), - /* 54 E> */ B(Add), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 54 E> */ B(Add), R(1), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -50,13 +72,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 10 +bytecode array length: 9 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaZero), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(SubSmi), I8(3), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 0; return 3 - x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 14 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaZero), B(Star), R(0), /* 45 S> */ B(LdaSmi), I8(3), - /* 54 E> */ B(Sub), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 54 E> */ B(Sub), R(1), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -70,13 +114,33 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(4), B(Star), R(0), - /* 45 S> */ B(LdaSmi), I8(3), - /* 54 E> */ B(Mul), R(0), U8(2), + /* 45 S> */ B(Nop), + /* 54 E> */ B(MulSmi), I8(3), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 4; return 3 * x; +" +frame size: 1 +parameter count: 1 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(4), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(MulSmi), I8(3), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -90,13 +154,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(4), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(DivSmi), I8(3), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 4; return 3 / x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(4), B(Star), R(0), /* 45 S> */ B(LdaSmi), I8(3), - /* 54 E> */ B(Div), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 54 E> */ B(Div), R(1), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -110,13 +196,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(4), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(ModSmi), I8(3), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 4; return 3 % x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(4), B(Star), R(0), /* 45 S> */ B(LdaSmi), I8(3), - /* 54 E> */ B(Mod), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 54 E> */ B(Mod), R(1), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -130,13 +238,33 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(LdaSmi), I8(2), - /* 54 E> */ B(BitwiseOr), R(0), U8(2), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseOrSmi), I8(2), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 1; return 2 | x; +" +frame size: 1 +parameter count: 1 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(1), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseOrSmi), I8(2), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -150,13 +278,33 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(LdaSmi), I8(2), - /* 54 E> */ B(BitwiseXor), R(0), U8(2), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseXorSmi), I8(2), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 1; return 2 ^ x; +" +frame size: 1 +parameter count: 1 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(1), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseXorSmi), I8(2), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -170,13 +318,33 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(1), + B(Star), R(0), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseAndSmi), I8(2), U8(2), + /* 59 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 1; return 2 & x; +" +frame size: 1 +parameter count: 1 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), B(Star), R(0), - /* 45 S> */ B(LdaSmi), I8(2), - /* 54 E> */ B(BitwiseAnd), R(0), U8(2), + /* 45 S> */ B(Nop), + /* 54 E> */ B(BitwiseAndSmi), I8(2), U8(2), /* 59 S> */ B(Return), ] constant pool: [ @@ -190,13 +358,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(10), + B(Star), R(0), + /* 46 S> */ B(Nop), + /* 55 E> */ B(ShiftLeftSmi), I8(3), U8(2), + /* 61 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 10; return 3 << x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), B(Star), R(0), /* 46 S> */ B(LdaSmi), I8(3), - /* 55 E> */ B(ShiftLeft), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 55 E> */ B(ShiftLeft), R(1), U8(2), /* 61 S> */ B(Return), ] constant pool: [ @@ -210,13 +400,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(10), + B(Star), R(0), + /* 46 S> */ B(Nop), + /* 55 E> */ B(ShiftRightSmi), I8(3), U8(2), + /* 61 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 10; return 3 >> x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), B(Star), R(0), /* 46 S> */ B(LdaSmi), I8(3), - /* 55 E> */ B(ShiftRight), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 55 E> */ B(ShiftRight), R(1), U8(2), /* 61 S> */ B(Return), ] constant pool: [ @@ -230,13 +442,35 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 +bytecodes: [ + /* 30 E> */ B(StackCheck), + /* 42 S> */ B(LdaSmi), I8(10), + B(Star), R(0), + /* 46 S> */ B(Nop), + /* 55 E> */ B(ShiftRightLogicalSmi), I8(3), U8(2), + /* 62 S> */ B(Return), +] +constant pool: [ +] +handlers: [ +] + +--- +snippet: " + var x = 10; return 3 >>> x; +" +frame size: 2 +parameter count: 1 +bytecode array length: 15 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(10), B(Star), R(0), /* 46 S> */ B(LdaSmi), I8(3), - /* 55 E> */ B(ShiftRightLogical), R(0), U8(2), + B(Star), R(1), + B(Ldar), R(0), + /* 55 E> */ B(ShiftRightLogical), R(1), U8(2), /* 62 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PropertyCall.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PropertyCall.golden index 38ef6a3fc4..2feef5ed76 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PropertyCall.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PropertyCall.golden @@ -13,13 +13,13 @@ snippet: " " frame size: 1 parameter count: 2 -bytecode array length: 14 +bytecode array length: 13 bytecodes: [ /* 10 E> */ B(StackCheck), /* 16 S> */ B(Nop), /* 24 E> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4), B(Star), R(0), - /* 25 E> */ B(CallProperty), R(0), R(arg0), U8(1), U8(2), + /* 25 E> */ B(CallProperty0), R(0), R(arg0), U8(2), /* 33 S> */ B(Return), ] constant pool: [ @@ -33,18 +33,15 @@ snippet: " function f(a, b, c) { return a.func(b, c); } f(new (function Obj() { this.func = function() { return; }})(), 1, 2) " -frame size: 4 +frame size: 1 parameter count: 4 -bytecode array length: 23 +bytecode array length: 15 bytecodes: [ /* 10 E> */ B(StackCheck), /* 22 S> */ B(Nop), /* 30 E> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4), B(Star), R(0), - B(Mov), R(arg0), R(1), - B(Mov), R(arg1), R(2), - B(Mov), R(arg2), R(3), - /* 31 E> */ B(CallProperty), R(0), R(1), U8(3), U8(2), + /* 31 E> */ B(CallProperty2), R(0), R(arg0), R(arg1), R(arg2), U8(2), /* 43 S> */ B(Return), ] constant pool: [ @@ -58,9 +55,9 @@ snippet: " function f(a, b) { return a.func(b + b, b); } f(new (function Obj() { this.func = function() { return; }})(), 1) " -frame size: 4 +frame size: 3 parameter count: 3 -bytecode array length: 27 +bytecode array length: 22 bytecodes: [ /* 10 E> */ B(StackCheck), /* 19 S> */ B(Nop), @@ -69,9 +66,7 @@ bytecodes: [ B(Ldar), R(arg1), /* 35 E> */ B(Add), R(arg1), U8(6), B(Star), R(2), - B(Mov), R(arg0), R(1), - B(Mov), R(arg1), R(3), - /* 28 E> */ B(CallProperty), R(0), R(1), U8(3), U8(2), + /* 28 E> */ B(CallProperty2), R(0), R(arg0), R(2), R(arg1), U8(2), /* 44 S> */ B(Return), ] constant pool: [ @@ -216,7 +211,7 @@ snippet: " " frame size: 1 parameter count: 2 -bytecode array length: 667 +bytecode array length: 665 bytecodes: [ /* 10 E> */ B(StackCheck), /* 17 S> */ B(Nop), @@ -478,7 +473,7 @@ bytecodes: [ /* 1169 S> */ B(Nop), /* 1177 E> */ B(Wide), B(LdaNamedProperty), R16(arg0), U16(0), U16(260), B(Star), R(0), - /* 1178 E> */ B(Wide), B(CallProperty), R16(0), R16(arg0), U16(1), U16(258), + /* 1178 E> */ B(Wide), B(CallProperty0), R16(0), R16(arg0), U16(258), /* 1186 S> */ B(Return), ] constant pool: [ @@ -494,7 +489,7 @@ snippet: " " frame size: 5 parameter count: 2 -bytecode array length: 55 +bytecode array length: 52 bytecodes: [ /* 10 E> */ B(StackCheck), /* 16 S> */ B(Nop), @@ -502,20 +497,19 @@ bytecodes: [ B(Star), R(2), B(LdaSmi), I8(1), B(Star), R(4), - B(Mov), R(arg0), R(3), - /* 25 E> */ B(CallProperty), R(2), R(3), U8(2), U8(6), + /* 25 E> */ B(CallProperty1), R(2), R(arg0), R(4), U8(6), B(Star), R(2), /* 32 E> */ B(LdaNamedProperty), R(2), U8(0), U8(10), B(Star), R(1), B(LdaSmi), I8(2), B(Star), R(3), - /* 33 E> */ B(CallProperty), R(1), R(2), U8(2), U8(4), + /* 33 E> */ B(CallProperty1), R(1), R(2), R(3), U8(4), B(Star), R(1), /* 40 E> */ B(LdaNamedProperty), R(1), U8(0), U8(12), B(Star), R(0), B(LdaSmi), I8(3), B(Star), R(2), - /* 41 E> */ B(CallProperty), R(0), R(1), U8(2), U8(2), + /* 41 E> */ B(CallProperty1), R(0), R(1), R(2), U8(2), /* 50 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden index 61b3b242b7..4c98cea746 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden @@ -56,7 +56,7 @@ bytecodes: [ B(Star), R(0), B(LdaConstant), U8(2), B(Star), R(2), - /* 48 E> */ B(CallProperty), R(0), R(1), U8(2), U8(2), + /* 48 E> */ B(CallProperty1), R(0), R(1), R(2), U8(2), /* 62 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden index 8446beb7bf..f7e241721a 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden @@ -51,38 +51,38 @@ snippet: " test = new B(1, 2, 3).constructor; })(); " -frame size: 6 +frame size: 7 parameter count: 1 -bytecode array length: 59 +bytecode array length: 61 bytecodes: [ B(CreateRestParameter), B(Star), R(2), B(Mov), R(closure), R(1), B(Mov), R(new_target), R(0), B(Ldar), R(new_target), + B(LdaTheHole), + B(Star), R(3), /* 128 E> */ B(StackCheck), + B(Mov), R(2), R(3), /* 140 S> */ B(Ldar), R(1), - B(GetSuperConstructor), R(3), + B(GetSuperConstructor), R(4), B(LdaSmi), I8(1), - B(Star), R(4), + B(Star), R(5), B(Ldar), R(0), - B(Mov), R(2), R(5), - /* 140 E> */ B(ConstructWithSpread), R(3), R(4), U8(2), - B(Star), R(3), + B(Mov), R(2), R(6), + /* 140 E> */ B(ConstructWithSpread), R(4), R(5), U8(2), + B(Star), R(4), B(Ldar), R(this), B(JumpIfNotHole), U8(4), B(Jump), U8(7), /* 140 E> */ B(CallRuntime), U16(Runtime::kThrowSuperAlreadyCalledError), R(0), U8(0), - B(Mov), R(3), R(this), + B(Mov), R(4), R(this), B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(0), - B(Star), R(3), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(3), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), /* 159 S> */ B(Return), ] constant pool: [ - ONE_BYTE_INTERNALIZED_STRING_TYPE ["this"], ] handlers: [ ] @@ -100,52 +100,52 @@ snippet: " test = new B(1, 2, 3).constructor; })(); " -frame size: 9 +frame size: 10 parameter count: 1 -bytecode array length: 92 +bytecode array length: 94 bytecodes: [ B(CreateRestParameter), B(Star), R(2), B(Mov), R(closure), R(1), B(Mov), R(new_target), R(0), B(Ldar), R(new_target), + B(LdaTheHole), + B(Star), R(3), /* 128 E> */ B(StackCheck), + B(Mov), R(2), R(3), /* 140 S> */ B(LdaUndefined), - B(Star), R(3), - /* 140 E> */ B(CallRuntime), U16(Runtime::k_GetSuperConstructor), R(1), U8(1), B(Star), R(4), - B(LdaUndefined), + /* 140 E> */ B(CallRuntime), U16(Runtime::k_GetSuperConstructor), R(1), U8(1), B(Star), R(5), - B(CreateArrayLiteral), U8(0), U8(2), U8(9), - B(Star), R(6), B(LdaUndefined), + B(Star), R(6), + B(CreateArrayLiteral), U8(0), U8(2), U8(9), B(Star), R(7), - B(Mov), R(2), R(8), - /* 152 E> */ B(CallJSRuntime), U8(%spread_iterable), R(7), U8(2), - B(Star), R(7), - B(CreateArrayLiteral), U8(1), U8(3), U8(9), + B(LdaUndefined), B(Star), R(8), - B(CallJSRuntime), U8(%spread_arguments), R(5), U8(4), - B(Star), R(5), - B(Mov), R(0), R(6), - /* 140 E> */ B(CallJSRuntime), U8(%reflect_construct), R(3), U8(4), - B(Star), R(3), + B(Mov), R(2), R(9), + /* 152 E> */ B(CallJSRuntime), U8(%spread_iterable), R(8), U8(2), + B(Star), R(8), + B(CreateArrayLiteral), U8(1), U8(3), U8(9), + B(Star), R(9), + B(CallJSRuntime), U8(%spread_arguments), R(6), U8(4), + B(Star), R(6), + B(Mov), R(0), R(7), + /* 140 E> */ B(CallJSRuntime), U8(%reflect_construct), R(4), U8(4), + B(Star), R(4), B(Ldar), R(this), B(JumpIfNotHole), U8(4), B(Jump), U8(7), /* 140 E> */ B(CallRuntime), U16(Runtime::kThrowSuperAlreadyCalledError), R(0), U8(0), - B(Mov), R(3), R(this), + B(Mov), R(4), R(this), B(Ldar), R(this), - B(JumpIfNotHole), U8(11), - B(LdaConstant), U8(2), - B(Star), R(3), - B(CallRuntime), U16(Runtime::kThrowReferenceError), R(3), U8(1), + B(JumpIfNotHole), U8(7), + B(CallRuntime), U16(Runtime::kThrowSuperNotCalled), R(0), U8(0), /* 162 S> */ B(Return), ] constant pool: [ CONSTANT_ELEMENTS_PAIR_TYPE, CONSTANT_ELEMENTS_PAIR_TYPE, - ONE_BYTE_INTERNALIZED_STRING_TYPE ["this"], ] handlers: [ ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/Switch.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/Switch.golden index a1025e5ba4..decd5df726 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/Switch.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/Switch.golden @@ -24,7 +24,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(1), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(2), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrue), U8(7), @@ -60,7 +60,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(1), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(2), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrue), U8(10), @@ -98,7 +98,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(1), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(2), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrue), U8(8), @@ -136,7 +136,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(2), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(3), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrue), U8(6), @@ -175,7 +175,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(2), B(TestEqualStrict), R(1), U8(2), B(Mov), R(1), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(3), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrue), U8(10), @@ -216,7 +216,7 @@ bytecodes: [ /* 45 S> */ B(TypeOf), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(4), + B(JumpIfTrue), U8(4), B(Jump), U8(8), /* 74 S> */ B(LdaSmi), I8(1), B(Star), R(0), @@ -318,7 +318,7 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(1), B(TestEqualStrict), R(1), U8(2), B(Mov), R(0), R(2), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(2), B(TestEqualStrict), R(2), U8(3), B(JumpIfTrueConstant), U8(0), @@ -479,7 +479,7 @@ snippet: " " frame size: 5 parameter count: 1 -bytecode array length: 62 +bytecode array length: 63 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), @@ -488,17 +488,18 @@ bytecodes: [ /* 45 S> */ B(LdaSmi), I8(1), B(TestEqualStrict), R(2), U8(5), B(Mov), R(0), R(3), - B(JumpIfToBooleanTrue), U8(11), + B(JumpIfTrue), U8(11), B(LdaSmi), I8(2), B(TestEqualStrict), R(3), U8(6), - B(JumpIfTrue), U8(34), - B(Jump), U8(36), - /* 79 E> */ B(AddSmi), I8(1), R(0), U8(2), + B(JumpIfTrue), U8(35), + B(Jump), U8(37), + B(Ldar), R(0), + /* 79 E> */ B(AddSmi), I8(1), U8(2), B(Star), R(1), /* 70 S> */ B(LdaSmi), I8(2), B(TestEqualStrict), R(1), U8(3), B(Mov), R(1), R(4), - B(JumpIfToBooleanTrue), U8(4), + B(JumpIfTrue), U8(4), B(Jump), U8(8), /* 101 S> */ B(LdaSmi), I8(1), B(Star), R(0), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/TryFinally.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/TryFinally.golden index eaad3bb8bb..6b5dadb53f 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/TryFinally.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/TryFinally.golden @@ -12,7 +12,7 @@ snippet: " " frame size: 4 parameter count: 1 -bytecode array length: 47 +bytecode array length: 46 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), @@ -34,7 +34,7 @@ bytecodes: [ B(Ldar), R(3), /* 72 E> */ B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(1), U8(0), + B(TestEqualStrictNoFeedback), R(1), B(JumpIfTrue), U8(4), B(Jump), U8(5), B(Ldar), R(2), @@ -55,7 +55,7 @@ snippet: " " frame size: 7 parameter count: 1 -bytecode array length: 74 +bytecode array length: 73 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(1), @@ -90,7 +90,7 @@ bytecodes: [ B(Ldar), R(4), /* 92 E> */ B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), + B(TestEqualStrictNoFeedback), R(2), B(JumpIfTrue), U8(4), B(Jump), U8(5), B(Ldar), R(3), @@ -115,7 +115,7 @@ snippet: " " frame size: 8 parameter count: 1 -bytecode array length: 97 +bytecode array length: 96 bytecodes: [ /* 30 E> */ B(StackCheck), B(Mov), R(context), R(4), @@ -161,7 +161,7 @@ bytecodes: [ B(Ldar), R(4), /* 116 E> */ B(SetPendingMessage), B(LdaZero), - B(TestEqualStrict), R(2), U8(0), + B(TestEqualStrictNoFeedback), R(2), B(JumpIfTrue), U8(4), B(Jump), U8(5), B(Ldar), R(3), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/UnaryOperators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/UnaryOperators.golden index b94144d76b..7bf28b4058 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/UnaryOperators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/UnaryOperators.golden @@ -24,8 +24,8 @@ bytecodes: [ /* 54 E> */ B(TestEqual), R(0), U8(2), B(JumpIfTrue), U8(13), /* 45 E> */ B(StackCheck), - /* 65 S> */ B(LdaSmi), I8(10), - /* 71 E> */ B(Add), R(0), U8(3), + /* 65 S> */ B(Ldar), R(0), + /* 71 E> */ B(AddSmi), I8(10), U8(3), B(Star), R(0), B(JumpLoop), U8(15), I8(0), /* 79 S> */ B(Ldar), R(0), @@ -74,13 +74,13 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 12 +bytecode array length: 11 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(101), B(Star), R(0), - /* 47 S> */ B(LdaSmi), I8(3), - /* 61 E> */ B(Mul), R(0), U8(2), + /* 47 S> */ B(Nop), + /* 61 E> */ B(MulSmi), I8(3), U8(2), B(LdaUndefined), /* 67 S> */ B(Return), ] @@ -95,17 +95,16 @@ snippet: " var y = void (x * x - 1); return y; " -frame size: 3 +frame size: 2 parameter count: 1 -bytecode array length: 22 +bytecode array length: 19 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(Wide), B(LdaSmi), I16(1234), B(Star), R(0), /* 56 S> */ B(Nop), /* 64 E> */ B(Mul), R(0), U8(2), - B(Star), R(2), - /* 68 E> */ B(SubSmi), I8(1), R(2), U8(3), + /* 68 E> */ B(SubSmi), I8(1), U8(3), B(LdaUndefined), B(Star), R(1), /* 74 S> */ B(Nop), @@ -123,13 +122,13 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(13), B(Star), R(0), - /* 46 S> */ B(LdaSmi), I8(-1), - /* 53 E> */ B(BitwiseXor), R(0), U8(2), + /* 46 S> */ B(Nop), + /* 53 E> */ B(BitwiseXorSmi), I8(-1), U8(2), /* 57 S> */ B(Return), ] constant pool: [ @@ -144,13 +143,13 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(13), B(Star), R(0), - /* 46 S> */ B(LdaSmi), I8(1), - /* 53 E> */ B(Mul), R(0), U8(2), + /* 46 S> */ B(Nop), + /* 53 E> */ B(MulSmi), I8(1), U8(2), /* 57 S> */ B(Return), ] constant pool: [ @@ -165,13 +164,13 @@ snippet: " " frame size: 1 parameter count: 1 -bytecode array length: 11 +bytecode array length: 10 bytecodes: [ /* 30 E> */ B(StackCheck), /* 42 S> */ B(LdaSmi), I8(13), B(Star), R(0), - /* 46 S> */ B(LdaSmi), I8(-1), - /* 53 E> */ B(Mul), R(0), U8(2), + /* 46 S> */ B(Nop), + /* 53 E> */ B(MulSmi), I8(-1), U8(2), /* 57 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc b/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc index 5ee0a6fc3c..b249799f6c 100644 --- a/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc +++ b/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc @@ -190,26 +190,48 @@ TEST(PrimitiveExpressions) { "var x = 0; return x + 3;\n", + "var x = 0; return 3 + x;\n", + "var x = 0; return x - 3;\n", + "var x = 0; return 3 - x;\n", + "var x = 4; return x * 3;\n", + "var x = 4; return 3 * x;\n", + "var x = 4; return x / 3;\n", + "var x = 4; return 3 / x;\n", + "var x = 4; return x % 3;\n", + "var x = 4; return 3 % x;\n", + "var x = 1; return x | 2;\n", + "var x = 1; return 2 | x;\n", + "var x = 1; return x ^ 2;\n", + "var x = 1; return 2 ^ x;\n", + "var x = 1; return x & 2;\n", + "var x = 1; return 2 & x;\n", + "var x = 10; return x << 3;\n", + "var x = 10; return 3 << x;\n", + "var x = 10; return x >> 3;\n", + "var x = 10; return 3 >> x;\n", + "var x = 10; return x >>> 3;\n", + "var x = 10; return 3 >>> x;\n", + "var x = 0; return (x, 3);\n", }; @@ -1007,6 +1029,81 @@ TEST(Typeof) { LoadGolden("Typeof.golden"))); } +TEST(CompareTypeOf) { + InitializedIgnitionHandleScope scope; + BytecodeExpectationsPrinter printer(CcTest::isolate()); + + const char* snippets[] = { + "return typeof(1) === 'number';\n", + + "return 'string' === typeof('foo');\n", + + "return typeof(true) == 'boolean';\n", + + "return 'string' === typeof(undefined);\n", + + "return 'unknown' === typeof(undefined);\n", + }; + + CHECK(CompareTexts(BuildActual(printer, snippets), + LoadGolden("CompareTypeOf.golden"))); +} + +TEST(CompareNil) { + InitializedIgnitionHandleScope scope; + BytecodeExpectationsPrinter printer(CcTest::isolate()); + + const char* snippets[] = { + "var a = 1;\n" + "return a === null;\n", + + "var a = undefined;\n" + "return undefined === a;\n", + + "var a = undefined;\n" + "return undefined !== a;\n", + + "var a = 2;\n" + "return a != null;\n", + + "var a = undefined;\n" + "return undefined == a;\n", + + "var a = undefined;\n" + "return undefined === a ? 1 : 2;\n", + + "var a = 0;\n" + "return null == a ? 1 : 2;\n", + + "var a = 0;\n" + "return undefined !== a ? 1 : 2;\n", + + "var a = 0;\n" + "return a === null ? 1 : 2;\n", + + "var a = 0;\n" + "if (a === null) {\n" + " return 1;\n" + "} else {\n" + " return 2;\n" + "}\n", + + "var a = 0;\n" + "if (a != undefined) {\n" + " return 1;\n" + "}\n", + + "var a = undefined;\n" + "var b = 0;\n" + "while (a !== undefined) {\n" + " b++;\n" + "}\n", + }; + + CHECK(CompareTexts(BuildActual(printer, snippets), + LoadGolden("CompareNil.golden"))); +} + TEST(Delete) { InitializedIgnitionHandleScope scope; BytecodeExpectationsPrinter printer(CcTest::isolate()); diff --git a/deps/v8/test/cctest/interpreter/test-interpreter-intrinsics.cc b/deps/v8/test/cctest/interpreter/test-interpreter-intrinsics.cc index cad46547b4..8d1f551ee7 100644 --- a/deps/v8/test/cctest/interpreter/test-interpreter-intrinsics.cc +++ b/deps/v8/test/cctest/interpreter/test-interpreter-intrinsics.cc @@ -27,7 +27,7 @@ class InvokeIntrinsicHelper { Handle<Object> Invoke(A... args) { CHECK(IntrinsicsHelper::IsSupported(function_id_)); BytecodeArrayBuilder builder(isolate_, zone_, sizeof...(args), 0, 0); - RegisterList reg_list(builder.Parameter(0).index(), sizeof...(args)); + RegisterList reg_list(builder.Receiver().index(), sizeof...(args)); builder.CallRuntime(function_id_, reg_list).Return(); InterpreterTester tester(isolate_, builder.ToBytecodeArray(isolate_)); auto callable = tester.GetCallable<A...>(); diff --git a/deps/v8/test/cctest/interpreter/test-interpreter.cc b/deps/v8/test/cctest/interpreter/test-interpreter.cc index ae5ab33eb6..f58740ea20 100644 --- a/deps/v8/test/cctest/interpreter/test-interpreter.cc +++ b/deps/v8/test/cctest/interpreter/test-interpreter.cc @@ -10,6 +10,7 @@ #include "src/handles.h" #include "src/interpreter/bytecode-array-builder.h" #include "src/interpreter/bytecode-array-iterator.h" +#include "src/interpreter/bytecode-flags.h" #include "src/interpreter/bytecode-label.h" #include "src/interpreter/interpreter.h" #include "src/objects-inl.h" @@ -26,6 +27,8 @@ static int GetIndex(FeedbackSlot slot) { return FeedbackVector::GetIndex(slot); } +using ToBooleanMode = BytecodeArrayBuilder::ToBooleanMode; + TEST(InterpreterReturn) { HandleAndZoneScope handles; Isolate* isolate = handles.main_isolate(); @@ -478,7 +481,7 @@ TEST(InterpreterParameter1) { Zone* zone = handles.main_zone(); BytecodeArrayBuilder builder(isolate, zone, 1, 0, 0); - builder.LoadAccumulatorWithRegister(builder.Parameter(0)).Return(); + builder.LoadAccumulatorWithRegister(builder.Receiver()).Return(); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); InterpreterTester tester(isolate, bytecode_array); @@ -516,14 +519,14 @@ TEST(InterpreterParameter8) { Handle<i::FeedbackMetadata> metadata = NewFeedbackMetadata(isolate, &feedback_spec); - builder.LoadAccumulatorWithRegister(builder.Parameter(0)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(1), GetIndex(slot)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(2), GetIndex(slot1)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(3), GetIndex(slot2)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(4), GetIndex(slot3)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(5), GetIndex(slot4)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(6), GetIndex(slot5)) - .BinaryOperation(Token::Value::ADD, builder.Parameter(7), GetIndex(slot6)) + builder.LoadAccumulatorWithRegister(builder.Receiver()) + .BinaryOperation(Token::Value::ADD, builder.Parameter(0), GetIndex(slot)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(1), GetIndex(slot1)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(2), GetIndex(slot2)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(3), GetIndex(slot3)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(4), GetIndex(slot4)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(5), GetIndex(slot5)) + .BinaryOperation(Token::Value::ADD, builder.Parameter(6), GetIndex(slot6)) .Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -591,7 +594,8 @@ TEST(InterpreterBinaryOpTypeFeedback) { {Token::Value::SUB, ast_factory.NewSmi(2), ast_factory.NewSmi(3), Handle<Smi>(Smi::FromInt(-1), isolate), BinaryOperationFeedback::kSignedSmall}, - {Token::Value::SUB, ast_factory.NewSmi(Smi::kMinValue), + {Token::Value::SUB, + ast_factory.NewSmi(static_cast<uint32_t>(Smi::kMinValue)), ast_factory.NewSmi(1), isolate->factory()->NewHeapNumber(Smi::kMinValue - 1.0), BinaryOperationFeedback::kNumber}, @@ -609,7 +613,8 @@ TEST(InterpreterBinaryOpTypeFeedback) { {Token::Value::MUL, ast_factory.NewSmi(2), ast_factory.NewSmi(3), Handle<Smi>(Smi::FromInt(6), isolate), BinaryOperationFeedback::kSignedSmall}, - {Token::Value::MUL, ast_factory.NewSmi(Smi::kMinValue), + {Token::Value::MUL, + ast_factory.NewSmi(static_cast<uint32_t>(Smi::kMinValue)), ast_factory.NewSmi(2), isolate->factory()->NewHeapNumber(Smi::kMinValue * 2.0), BinaryOperationFeedback::kNumber}, @@ -644,8 +649,8 @@ TEST(InterpreterBinaryOpTypeFeedback) { {Token::Value::MOD, ast_factory.NewSmi(5), ast_factory.NewSmi(3), Handle<Smi>(Smi::FromInt(2), isolate), BinaryOperationFeedback::kSignedSmall}, - {Token::Value::MOD, ast_factory.NewSmi(-4), ast_factory.NewSmi(2), - isolate->factory()->NewHeapNumber(-0.0), + {Token::Value::MOD, ast_factory.NewSmi(static_cast<uint32_t>(-4)), + ast_factory.NewSmi(2), isolate->factory()->NewHeapNumber(-0.0), BinaryOperationFeedback::kNumber}, {Token::Value::MOD, ast_factory.NewNumber(3.1415), ast_factory.NewSmi(3), isolate->factory()->NewHeapNumber(fmod(3.1415, 3.0)), @@ -722,7 +727,8 @@ TEST(InterpreterBinaryOpSmiTypeFeedback) { {Token::Value::SUB, ast_factory.NewSmi(2), 42, Handle<Smi>(Smi::FromInt(-40), isolate), BinaryOperationFeedback::kSignedSmall}, - {Token::Value::SUB, ast_factory.NewSmi(Smi::kMinValue), 1, + {Token::Value::SUB, + ast_factory.NewSmi(static_cast<uint32_t>(Smi::kMinValue)), 1, isolate->factory()->NewHeapNumber(Smi::kMinValue - 1.0), BinaryOperationFeedback::kNumber}, {Token::Value::SUB, ast_factory.NewNumber(3.1415), 2, @@ -833,13 +839,13 @@ TEST(InterpreterUnaryOpFeedback) { Handle<i::FeedbackMetadata> metadata = i::NewFeedbackMetadata(isolate, &feedback_spec); - builder.LoadAccumulatorWithRegister(builder.Parameter(0)) + builder.LoadAccumulatorWithRegister(builder.Receiver()) .CountOperation(test_case.op, GetIndex(slot0)) - .LoadAccumulatorWithRegister(builder.Parameter(1)) + .LoadAccumulatorWithRegister(builder.Parameter(0)) .CountOperation(test_case.op, GetIndex(slot1)) - .LoadAccumulatorWithRegister(builder.Parameter(2)) + .LoadAccumulatorWithRegister(builder.Parameter(1)) .CountOperation(test_case.op, GetIndex(slot2)) - .LoadAccumulatorWithRegister(builder.Parameter(3)) + .LoadAccumulatorWithRegister(builder.Parameter(2)) .CountOperation(test_case.op, GetIndex(slot3)) .Return(); @@ -896,10 +902,10 @@ TEST(InterpreterBitwiseTypeFeedback) { Handle<i::FeedbackMetadata> metadata = i::NewFeedbackMetadata(isolate, &feedback_spec); - builder.LoadAccumulatorWithRegister(builder.Parameter(0)) - .BinaryOperation(op, builder.Parameter(1), GetIndex(slot0)) - .BinaryOperation(op, builder.Parameter(2), GetIndex(slot1)) - .BinaryOperation(op, builder.Parameter(3), GetIndex(slot2)) + builder.LoadAccumulatorWithRegister(builder.Receiver()) + .BinaryOperation(op, builder.Parameter(0), GetIndex(slot0)) + .BinaryOperation(op, builder.Parameter(1), GetIndex(slot1)) + .BinaryOperation(op, builder.Parameter(2), GetIndex(slot2)) .Return(); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -940,8 +946,8 @@ TEST(InterpreterParameter1Assign) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 0); builder.LoadLiteral(Smi::FromInt(5)) - .StoreAccumulatorInRegister(builder.Parameter(0)) - .LoadAccumulatorWithRegister(builder.Parameter(0)) + .StoreAccumulatorInRegister(builder.Receiver()) + .LoadAccumulatorWithRegister(builder.Receiver()) .Return(); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -1070,8 +1076,7 @@ TEST(InterpreterLoadNamedProperty) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 0); - builder.LoadNamedProperty(builder.Parameter(0), name, GetIndex(slot)) - .Return(); + builder.LoadNamedProperty(builder.Receiver(), name, GetIndex(slot)).Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -1125,7 +1130,7 @@ TEST(InterpreterLoadKeyedProperty) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 1); builder.LoadLiteral(key) - .LoadKeyedProperty(builder.Parameter(0), GetIndex(slot)) + .LoadKeyedProperty(builder.Receiver(), GetIndex(slot)) .Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -1168,7 +1173,7 @@ TEST(InterpreterStoreNamedProperty) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 0); builder.LoadLiteral(Smi::FromInt(999)) - .StoreNamedProperty(builder.Parameter(0), name, GetIndex(slot), STRICT) + .StoreNamedProperty(builder.Receiver(), name, GetIndex(slot), STRICT) .Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -1233,7 +1238,7 @@ TEST(InterpreterStoreKeyedProperty) { builder.LoadLiteral(name) .StoreAccumulatorInRegister(Register(0)) .LoadLiteral(Smi::FromInt(999)) - .StoreKeyedProperty(builder.Parameter(0), Register(0), GetIndex(slot), + .StoreKeyedProperty(builder.Receiver(), Register(0), GetIndex(slot), i::SLOPPY) .Return(); ast_factory.Internalize(isolate); @@ -1289,11 +1294,15 @@ static void TestInterpreterCall(TailCallMode tail_call_mode) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 1); Register reg = builder.register_allocator()->NewRegister(); RegisterList args = builder.register_allocator()->NewRegisterList(1); - builder.LoadNamedProperty(builder.Parameter(0), name, slot_index) + builder.LoadNamedProperty(builder.Receiver(), name, slot_index) .StoreAccumulatorInRegister(reg) - .MoveRegister(builder.Parameter(0), args[0]); + .MoveRegister(builder.Receiver(), args[0]); - builder.Call(reg, args, call_slot_index, Call::GLOBAL_CALL, tail_call_mode); + if (tail_call_mode == TailCallMode::kAllow) { + builder.TailCall(reg, args, call_slot_index); + } else { + builder.CallProperty(reg, args, call_slot_index); + } builder.Return(); ast_factory.Internalize(isolate); @@ -1313,10 +1322,14 @@ static void TestInterpreterCall(TailCallMode tail_call_mode) { BytecodeArrayBuilder builder(isolate, zone, 1, 0, 1); Register reg = builder.register_allocator()->NewRegister(); RegisterList args = builder.register_allocator()->NewRegisterList(1); - builder.LoadNamedProperty(builder.Parameter(0), name, slot_index) + builder.LoadNamedProperty(builder.Receiver(), name, slot_index) .StoreAccumulatorInRegister(reg) - .MoveRegister(builder.Parameter(0), args[0]); - builder.Call(reg, args, call_slot_index, Call::GLOBAL_CALL, tail_call_mode); + .MoveRegister(builder.Receiver(), args[0]); + if (tail_call_mode == TailCallMode::kAllow) { + builder.TailCall(reg, args, call_slot_index); + } else { + builder.CallProperty(reg, args, call_slot_index); + } builder.Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -1339,16 +1352,20 @@ static void TestInterpreterCall(TailCallMode tail_call_mode) { Register reg = builder.register_allocator()->NewRegister(); RegisterList args = builder.register_allocator()->NewRegisterList(3); - builder.LoadNamedProperty(builder.Parameter(0), name, slot_index) + builder.LoadNamedProperty(builder.Receiver(), name, slot_index) .StoreAccumulatorInRegister(reg) - .LoadAccumulatorWithRegister(builder.Parameter(0)) + .LoadAccumulatorWithRegister(builder.Receiver()) .StoreAccumulatorInRegister(args[0]) .LoadLiteral(Smi::FromInt(51)) .StoreAccumulatorInRegister(args[1]) .LoadLiteral(Smi::FromInt(11)) .StoreAccumulatorInRegister(args[2]); - builder.Call(reg, args, call_slot_index, Call::GLOBAL_CALL, tail_call_mode); + if (tail_call_mode == TailCallMode::kAllow) { + builder.TailCall(reg, args, call_slot_index); + } else { + builder.CallProperty(reg, args, call_slot_index); + } builder.Return(); @@ -1372,9 +1389,9 @@ static void TestInterpreterCall(TailCallMode tail_call_mode) { Register reg = builder.register_allocator()->NewRegister(); RegisterList args = builder.register_allocator()->NewRegisterList(11); - builder.LoadNamedProperty(builder.Parameter(0), name, slot_index) + builder.LoadNamedProperty(builder.Receiver(), name, slot_index) .StoreAccumulatorInRegister(reg) - .LoadAccumulatorWithRegister(builder.Parameter(0)) + .LoadAccumulatorWithRegister(builder.Receiver()) .StoreAccumulatorInRegister(args[0]) .LoadLiteral(ast_factory.NewString(ast_factory.GetOneByteString("a"))) .StoreAccumulatorInRegister(args[1]) @@ -1397,7 +1414,11 @@ static void TestInterpreterCall(TailCallMode tail_call_mode) { .LoadLiteral(ast_factory.NewString(ast_factory.GetOneByteString("j"))) .StoreAccumulatorInRegister(args[10]); - builder.Call(reg, args, call_slot_index, Call::GLOBAL_CALL, tail_call_mode); + if (tail_call_mode == TailCallMode::kAllow) { + builder.TailCall(reg, args, call_slot_index); + } else { + builder.CallProperty(reg, args, call_slot_index); + } builder.Return(); @@ -1507,19 +1528,19 @@ TEST(InterpreterConditionalJumps) { builder.LoadLiteral(Smi::kZero) .StoreAccumulatorInRegister(reg) .LoadFalse() - .JumpIfFalse(&label[0]); + .JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &label[0]); IncrementRegister(builder, reg, 1024, scratch, GetIndex(slot)) .Bind(&label[0]) .LoadTrue() - .JumpIfFalse(&done); + .JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &done); IncrementRegister(builder, reg, 1, scratch, GetIndex(slot1)) .LoadTrue() - .JumpIfTrue(&label[1]); + .JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &label[1]); IncrementRegister(builder, reg, 2048, scratch, GetIndex(slot2)) .Bind(&label[1]); IncrementRegister(builder, reg, 2, scratch, GetIndex(slot3)) .LoadFalse() - .JumpIfTrue(&done1); + .JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &done1); IncrementRegister(builder, reg, 4, scratch, GetIndex(slot4)) .LoadAccumulatorWithRegister(reg) .Bind(&done) @@ -1557,19 +1578,19 @@ TEST(InterpreterConditionalJumps2) { builder.LoadLiteral(Smi::kZero) .StoreAccumulatorInRegister(reg) .LoadFalse() - .JumpIfFalse(&label[0]); + .JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &label[0]); IncrementRegister(builder, reg, 1024, scratch, GetIndex(slot)) .Bind(&label[0]) .LoadTrue() - .JumpIfFalse(&done); + .JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &done); IncrementRegister(builder, reg, 1, scratch, GetIndex(slot1)) .LoadTrue() - .JumpIfTrue(&label[1]); + .JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &label[1]); IncrementRegister(builder, reg, 2048, scratch, GetIndex(slot2)) .Bind(&label[1]); IncrementRegister(builder, reg, 2, scratch, GetIndex(slot3)) .LoadFalse() - .JumpIfTrue(&done1); + .JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &done1); IncrementRegister(builder, reg, 4, scratch, GetIndex(slot4)) .LoadAccumulatorWithRegister(reg) .Bind(&done) @@ -1689,9 +1710,8 @@ TEST(InterpreterJumpWith32BitOperand) { } static const Token::Value kComparisonTypes[] = { - Token::Value::EQ, Token::Value::NE, Token::Value::EQ_STRICT, - Token::Value::LT, Token::Value::LTE, Token::Value::GT, - Token::Value::GTE}; + Token::Value::EQ, Token::Value::EQ_STRICT, Token::Value::LT, + Token::Value::LTE, Token::Value::GT, Token::Value::GTE}; template <typename T> bool CompareC(Token::Value op, T lhs, T rhs, bool types_differed = false) { @@ -1984,17 +2004,9 @@ TEST(InterpreterMixedComparisons) { CompareC(comparison, lhs, rhs, true)); Object* feedback = callable.vector()->Get(slot); CHECK(feedback->IsSmi()); - int expected_feedback = CompareOperationFeedback::kNumber; - if (string_type == kInternalizedStringConstant && - !Token::IsOrderedRelationalCompareOp(comparison)) { - // Non-ordering compares (i.e. equality/strict equality) have - // special type feedback specifically for internalized strings. - expected_feedback |= - CompareOperationFeedback::kInternalizedString; - } else { - expected_feedback |= CompareOperationFeedback::kString; - } - CHECK_EQ(expected_feedback, static_cast<Smi*>(feedback)->value()); + // Comparison with a number and string collects kAny feedback. + CHECK_EQ(CompareOperationFeedback::kAny, + static_cast<Smi*>(feedback)->value()); } } } @@ -2074,6 +2086,58 @@ TEST(InterpreterStrictNotEqual) { } } +TEST(InterpreterCompareTypeOf) { + typedef TestTypeOfFlags::LiteralFlag LiteralFlag; + HandleAndZoneScope handles; + Isolate* isolate = handles.main_isolate(); + Factory* factory = isolate->factory(); + Zone* zone = handles.main_zone(); + std::pair<Handle<Object>, LiteralFlag> inputs[] = { + {handle(Smi::FromInt(24), isolate), LiteralFlag::kNumber}, + {factory->NewNumber(2.5), LiteralFlag::kNumber}, + {factory->NewStringFromAsciiChecked("foo"), LiteralFlag::kString}, + {factory + ->NewConsString(factory->NewStringFromAsciiChecked("foo"), + factory->NewStringFromAsciiChecked("bar")) + .ToHandleChecked(), + LiteralFlag::kString}, + {factory->prototype_string(), LiteralFlag::kString}, + {factory->NewSymbol(), LiteralFlag::kSymbol}, + {factory->true_value(), LiteralFlag::kBoolean}, + {factory->false_value(), LiteralFlag::kBoolean}, + {factory->undefined_value(), LiteralFlag::kUndefined}, + {InterpreterTester::NewObject( + "(function() { return function() {}; })();"), + LiteralFlag::kFunction}, + {InterpreterTester::NewObject("new Object();"), LiteralFlag::kObject}, + {factory->null_value(), LiteralFlag::kObject}, + }; + const LiteralFlag kLiterals[] = { +#define LITERAL_FLAG(name, _) LiteralFlag::k##name, + TYPEOF_LITERAL_LIST(LITERAL_FLAG) +#undef LITERAL_FLAG + }; + + for (size_t l = 0; l < arraysize(kLiterals); l++) { + LiteralFlag literal_flag = kLiterals[l]; + if (literal_flag == LiteralFlag::kOther) continue; + + BytecodeArrayBuilder builder(isolate, zone, 1, 0, 0); + builder.LoadAccumulatorWithRegister(builder.Receiver()) + .CompareTypeOf(kLiterals[l]) + .Return(); + Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); + InterpreterTester tester(isolate, bytecode_array); + auto callable = tester.GetCallable<Handle<Object>>(); + + for (size_t i = 0; i < arraysize(inputs); i++) { + Handle<Object> return_value = callable(inputs[i].first).ToHandleChecked(); + CHECK(return_value->IsBoolean()); + CHECK_EQ(return_value->BooleanValue(), inputs[i].second == literal_flag); + } + } +} + TEST(InterpreterInstanceOf) { HandleAndZoneScope handles; Isolate* isolate = handles.main_isolate(); @@ -2096,7 +2160,7 @@ TEST(InterpreterInstanceOf) { size_t func_entry = builder.AllocateDeferredConstantPoolEntry(); builder.SetDeferredConstantPoolEntry(func_entry, func); builder.LoadConstantPoolEntry(func_entry) - .CompareOperation(Token::Value::INSTANCEOF, r0, 0) + .CompareOperation(Token::Value::INSTANCEOF, r0) .Return(); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -2132,7 +2196,7 @@ TEST(InterpreterTestIn) { size_t array_entry = builder.AllocateDeferredConstantPoolEntry(); builder.SetDeferredConstantPoolEntry(array_entry, array); builder.LoadConstantPoolEntry(array_entry) - .CompareOperation(Token::Value::IN, r0, 0) + .CompareOperation(Token::Value::IN, r0) .Return(); ast_factory.Internalize(isolate); @@ -2157,7 +2221,7 @@ TEST(InterpreterUnaryNot) { Register r0(0); builder.LoadFalse(); for (size_t j = 0; j < i; j++) { - builder.LogicalNot(); + builder.LogicalNot(ToBooleanMode::kAlreadyBoolean); } builder.Return(); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); @@ -2195,7 +2259,7 @@ TEST(InterpreterUnaryNotNonBoolean) { Register r0(0); builder.LoadLiteral(object_type_tuples[i].first); - builder.LogicalNot(); + builder.LogicalNot(ToBooleanMode::kConvertToBoolean); builder.Return(); ast_factory.Internalize(isolate); Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate); diff --git a/deps/v8/test/cctest/interpreter/test-source-positions.cc b/deps/v8/test/cctest/interpreter/test-source-positions.cc index 22fd4991ac..912432a73e 100644 --- a/deps/v8/test/cctest/interpreter/test-source-positions.cc +++ b/deps/v8/test/cctest/interpreter/test-source-positions.cc @@ -19,12 +19,9 @@ namespace interpreter { // Flags enabling optimizations that change generated bytecode array. // Format is <command-line flag> <flag name> <bit index> -#define OPTIMIZATION_FLAGS(V) \ - V(FLAG_ignition_reo, kUseReo, 0) \ - V(FLAG_ignition_peephole, kUsePeephole, 1) \ - V(FLAG_ignition_filter_expression_positions, kUseFilterExpressionPositions, \ - 2) \ - V(FLAG_ignition_deadcode, kUseDeadCode, 3) +#define OPTIMIZATION_FLAGS(V) \ + V(FLAG_ignition_reo, kUseReo, 0) \ + V(FLAG_ignition_filter_expression_positions, kUseFilterExpressionPositions, 2) #define DECLARE_BIT(_, Name, BitIndex) static const int Name = 1 << BitIndex; OPTIMIZATION_FLAGS(DECLARE_BIT) @@ -35,20 +32,8 @@ OPTIMIZATION_FLAGS(DECLARE_BIT) // because it provides easier to comprehend failure case for humans. #define TEST_CASES(V) \ V(UsingReo, kUseReo) \ - V(UsingPeephole, kUsePeephole) \ - V(UsingDeadCode, kUseDeadCode) \ V(UsingFilterExpressionPositions, kUseFilterExpressionPositions) \ - V(UsingReoAndPeephole, kUseReo | kUsePeephole) \ - V(UsingReoAndFilterExpressionPositions, \ - kUseReo | kUseFilterExpressionPositions) \ - V(UsingReoAndDeadCode, kUseReo | kUseDeadCode) \ - V(UsingPeepholeAndFilterExpressionPositions, \ - kUsePeephole | kUseFilterExpressionPositions) \ - V(UsingPeepholeAndDeadCode, kUsePeephole | kUseDeadCode) \ - V(UsingFilterExpressionPositionsAndDeadCode, \ - kUseFilterExpressionPositions | kUseDeadCode) \ - V(UsingAllOptimizations, \ - kUseReo | kUsePeephole | kUseFilterExpressionPositions | kUseDeadCode) + V(UsingAllOptimizations, kUseReo | kUseFilterExpressionPositions) struct TestCaseData { TestCaseData(const char* const script, |