aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/interpreter
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/test/cctest/interpreter
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadandroid-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')
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden10
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden9
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden94
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden6
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CallGlobal.golden26
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden32
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ClassAndSuperClass.golden41
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden6
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CompareNil.golden289
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CompareTypeOf.golden97
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden38
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden20
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden24
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/CreateRestParameter.golden44
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden8
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/Eval.golden26
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden576
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ForIn.golden13
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ForOf.golden148
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden22
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden36
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/Generators.golden175
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCompoundExpressions.golden14
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalCountOperators.golden8
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/GlobalDelete.golden8
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/IfConditions.golden10
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/LookupSlot.golden130
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/Modules.golden316
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden8
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/PrimitiveExpressions.golden286
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/PropertyCall.golden34
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden2
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden70
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/Switch.golden27
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/TryFinally.golden12
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/UnaryOperators.golden35
-rw-r--r--deps/v8/test/cctest/interpreter/test-bytecode-generator.cc97
-rw-r--r--deps/v8/test/cctest/interpreter/test-interpreter-intrinsics.cc2
-rw-r--r--deps/v8/test/cctest/interpreter/test-interpreter.cc198
-rw-r--r--deps/v8/test/cctest/interpreter/test-source-positions.cc23
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,