[debug] Treat Comma-separated Expressions like Statements when Stepping.

This CL introduces statement positions before the right-hand side of
comma expressions, in order to align the stepping behavior (and also
generally the breakpoint behavior) around semicolon (;) and comma (,)
separated expressions.

The motivation here is that left-hand sides of comma expressions are
evaluated purely for their side-effects and as such, they aren't
really any different from statements from a developers perspective.
And more importantly, minifiers (like UglifyJS, terser, or esbuild)
by default turn statement expression lists into comma-separated
expressions, thus implicitly changing the stepping behavior in ways
that are difficult to understand for developers.

Doc: http://go/chrome-devtools:comma-stepping-proposal
Demo: https://devtools-dbg-stories.netlify.app/crbug-1370200.html
Video: https://i.imgur.com/5WC03wF.gif
Fixed: chromium:1370200
Change-Id: I38f288d964bc992d1de0dce2ed2becd4220793df
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3934288
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#83599}
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc
index 6ac64dc..6e67f0f 100644
--- a/src/interpreter/bytecode-generator.cc
+++ b/src/interpreter/bytecode-generator.cc
@@ -6597,6 +6597,7 @@
 
 void BytecodeGenerator::VisitCommaExpression(BinaryOperation* binop) {
   VisitForEffect(binop->left());
+  builder()->SetExpressionAsStatementPosition(binop->right());
   Visit(binop->right());
 }
 
@@ -6605,8 +6606,11 @@
 
   VisitForEffect(expr->first());
   for (size_t i = 0; i < expr->subsequent_length() - 1; ++i) {
+    builder()->SetExpressionAsStatementPosition(expr->subsequent(i));
     VisitForEffect(expr->subsequent(i));
   }
+  builder()->SetExpressionAsStatementPosition(
+      expr->subsequent(expr->subsequent_length() - 1));
   Visit(expr->subsequent(expr->subsequent_length() - 1));
 }
 
diff --git a/test/inspector/debugger/comma-expression-expected.txt b/test/inspector/debugger/comma-expression-expected.txt
new file mode 100644
index 0000000..eabf6f6
--- /dev/null
+++ b/test/inspector/debugger/comma-expression-expected.txt
@@ -0,0 +1,225 @@
+Tests breakable locations in comma expressions.
+
+Running test: testBreakLocations
+
+function testFunction() {
+  |C|foo(), |C|foo(), |C|foo();
+  |_|return |C|bar(), |C|bar();|R|
+}
+
+function foo() {
+  |_|return |C|baz(), |C|baz();|R|
+}
+
+function bar() {
+  |_|return |C|foo(),
+         1 |_|+ |C|foo(),
+         2 |_|+ |C|foo();|R|
+}
+
+const baz = |_|() => |_|0|R|;
+|R|
+
+
+Running test: testStepping
+Execution paused in testFunction:
+function testFunction() {
+  #foo(), foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  #return baz(), baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  #foo(), foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), #baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  #foo(), foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), baz();#
+}
+
+Called from testFunction:
+function testFunction() {
+  #foo(), foo(), foo();
+  return bar(), bar();
+
+Execution paused in testFunction:
+function testFunction() {
+  foo(), #foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  #return baz(), baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), #foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), #baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), #foo(), foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), baz();#
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), #foo(), foo();
+  return bar(), bar();
+
+Execution paused in testFunction:
+function testFunction() {
+  foo(), foo(), #foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  #return baz(), baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), foo(), #foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), #baz();
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), foo(), #foo();
+  return bar(), bar();
+
+Execution paused in foo:
+function foo() {
+  return baz(), baz();#
+}
+
+Called from testFunction:
+function testFunction() {
+  foo(), foo(), #foo();
+  return bar(), bar();
+
+Execution paused in testFunction:
+  foo(), foo(), foo();
+  #return bar(), bar();
+}
+
+Execution paused in bar:
+function bar() {
+  #return foo(),
+         1 + foo(),
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return #bar(), bar();
+}
+
+Execution paused in bar:
+  return foo(),
+         1 #+ foo(),
+         2 + foo();
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return #bar(), bar();
+}
+
+Execution paused in bar:
+         1 + foo(),
+         2 #+ foo();
+}
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return #bar(), bar();
+}
+
+Execution paused in bar:
+         1 + foo(),
+         2 + foo();#
+}
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return #bar(), bar();
+}
+
+Execution paused in testFunction:
+  foo(), foo(), foo();
+  return bar(), #bar();
+}
+
+Execution paused in bar:
+function bar() {
+  #return foo(),
+         1 + foo(),
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return bar(), #bar();
+}
+
+Execution paused in bar:
+  return foo(),
+         1 #+ foo(),
+         2 + foo();
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return bar(), #bar();
+}
+
+Execution paused in bar:
+         1 + foo(),
+         2 #+ foo();
+}
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return bar(), #bar();
+}
+
+Execution paused in bar:
+         1 + foo(),
+         2 + foo();#
+}
+
+Called from testFunction:
+  foo(), foo(), foo();
+  return bar(), #bar();
+}
+
+Execution paused in testFunction:
+  foo(), foo(), foo();
+  return bar(), bar();#
+}
+
+Resuming and finishing...
diff --git a/test/inspector/debugger/comma-expression.js b/test/inspector/debugger/comma-expression.js
new file mode 100644
index 0000000..4e3b26f
--- /dev/null
+++ b/test/inspector/debugger/comma-expression.js
@@ -0,0 +1,96 @@
+// Copyright 2022 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+let {session, contextGroup, Protocol} =
+    InspectorTest.start('Tests breakable locations in comma expressions.');
+
+const source = `
+function testFunction() {
+  foo(), foo(), foo();
+  return bar(), bar();
+}
+
+function foo() {
+  return baz(), baz();
+}
+
+function bar() {
+  return foo(),
+         1 + foo(),
+         2 + foo();
+}
+
+const baz = () => 0;
+`;
+
+const url = 'test.js';
+contextGroup.addScript(source, 0, 0, url);
+session.setupScriptMap();
+
+InspectorTest.runAsyncTestSuite([
+  async function testBreakLocations() {
+    const [, , {params: {scriptId}}] = await Promise.all([
+      Protocol.Runtime.enable(),
+      Protocol.Debugger.enable(),
+      Protocol.Debugger.onceScriptParsed(),
+    ]);
+    const {result: {locations}} =
+        await Protocol.Debugger.getPossibleBreakpoints(
+            {start: {lineNumber: 0, columnNumber: 0, scriptId}});
+    await session.logBreakLocations(locations);
+    await Promise.all([
+      Protocol.Debugger.disable(),
+      Protocol.Runtime.disable(),
+    ]);
+  },
+
+  async function testStepping() {
+    const [, , {params: {scriptId}}] = await Promise.all([
+      Protocol.Runtime.enable(),
+      Protocol.Debugger.enable(),
+      Protocol.Debugger.onceScriptParsed(),
+    ]);
+    const {breakpointId} = await Protocol.Debugger.setBreakpoint({
+      location: {
+        scriptId,
+        lineNumber: 2,
+      }
+    });
+    const evalPromise =
+        Protocol.Runtime.evaluate({expression: 'testFunction()'});
+    for (;;) {
+      const {method, params} = await Promise.race([
+        evalPromise,
+        Protocol.Debugger.oncePaused(),
+      ]);
+      if (method !== 'Debugger.paused') {
+        break;
+      }
+      const callFrames = params.callFrames.filter(
+          callFrame => callFrame.location.scriptId === scriptId);
+      if (callFrames.length === 0) {
+        InspectorTest.log('Resuming and finishing...');
+        await Protocol.Debugger.resume();
+      } else {
+        const [{functionName, location}, ...callerFrames] = callFrames;
+        InspectorTest.log(`Execution paused in ${functionName}:`);
+        await session.logSourceLocation(location);
+        for (const {location, functionName} of callerFrames) {
+          InspectorTest.log(`Called from ${functionName}:`);
+          await session.logSourceLocation(location);
+        }
+        if (functionName === 'testFunction') {
+          await Protocol.Debugger.stepInto();
+        } else {
+          await Protocol.Debugger.stepOver();
+        }
+      }
+    }
+    await Promise.all([
+      Protocol.Debugger.removeBreakpoint({breakpointId}),
+      Protocol.Debugger.disable(),
+      Protocol.Runtime.disable(),
+    ]);
+  }
+]);
diff --git a/test/unittests/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden b/test/unittests/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden
index 6f2b1bf..77edb47 100644
--- a/test/unittests/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden
+++ b/test/unittests/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden
@@ -20,11 +20,11 @@
                 B(Star1),
   /*   52 S> */ B(LdaSmi), I8(2),
                 B(Star0),
-                B(LdaSmi), I8(3),
+  /*   69 S> */ B(LdaSmi), I8(3),
                 B(Star1),
-                B(LdaSmi), I8(4),
+  /*   76 S> */ B(LdaSmi), I8(4),
                 B(Star0),
-                B(LdaSmi), I8(5),
+  /*   83 S> */ B(LdaSmi), I8(5),
                 B(Star1),
   /*   88 S> */ B(Return),
 ]
diff --git a/test/unittests/interpreter/bytecode_expectations/LogicalExpressions.golden b/test/unittests/interpreter/bytecode_expectations/LogicalExpressions.golden
index 13bed9d..d53ffdc 100644
--- a/test/unittests/interpreter/bytecode_expectations/LogicalExpressions.golden
+++ b/test/unittests/interpreter/bytecode_expectations/LogicalExpressions.golden
@@ -96,7 +96,7 @@
   /*   42 S> */ B(LdaZero),
                 B(Star0),
   /*   45 S> */ B(JumpIfToBooleanTrue), U8(4),
-                B(LdaSmi), I8(3),
+  /*   64 S> */ B(LdaSmi), I8(3),
   /*   67 S> */ B(Return),
 ]
 constant pool: [
@@ -120,9 +120,9 @@
                 B(Star2),
   /*   59 S> */ B(Ldar), R(0),
                 B(JumpIfToBooleanTrue), U8(7),
-                B(LdaSmi), I8(5),
+  /*   86 S> */ B(LdaSmi), I8(5),
                 B(Star2),
-                B(LdaSmi), I8(3),
+  /*   91 S> */ B(LdaSmi), I8(3),
   /*   94 S> */ B(Return),
 ]
 constant pool: [
@@ -180,133 +180,133 @@
                 B(JumpIfToBooleanTrue), U8(196),
                 B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*   88 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*   98 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  105 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  115 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  122 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  132 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  139 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  149 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  156 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  166 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  173 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  183 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  190 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  200 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  207 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  217 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  224 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  234 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  241 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  251 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  258 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  268 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  275 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  285 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  292 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  302 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  309 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  319 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  326 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  336 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  343 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  353 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  360 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  370 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  377 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  387 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  394 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  404 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  411 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  421 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  428 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  438 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  445 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  455 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  462 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  472 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  479 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  489 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  496 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  506 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  513 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  523 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  530 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  540 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  547 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  557 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  564 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  574 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  581 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  591 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  598 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  608 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  615 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(3),
+  /*  620 S> */ B(LdaSmi), I8(3),
   /*  623 S> */ B(Return),
 ]
 constant pool: [
@@ -364,133 +364,133 @@
                 B(JumpIfToBooleanFalse), U8(196),
                 B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*   88 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*   98 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  105 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  115 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  122 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  132 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  139 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  149 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  156 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  166 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  173 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  183 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  190 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  200 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  207 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  217 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  224 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  234 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  241 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  251 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  258 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  268 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  275 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  285 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  292 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  302 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  309 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  319 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  326 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  336 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  343 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  353 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  360 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  370 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  377 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  387 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  394 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  404 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  411 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  421 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  428 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  438 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  445 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  455 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  462 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  472 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  479 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  489 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  496 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  506 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  513 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  523 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  530 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  540 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  547 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  557 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  564 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  574 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  581 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  591 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  598 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  608 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  615 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(3),
+  /*  620 S> */ B(LdaSmi), I8(3),
   /*  623 S> */ B(Return),
 ]
 constant pool: [
@@ -549,133 +549,133 @@
                 B(JumpIfTrue), U8(196),
                 B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*   94 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  104 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  111 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  121 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  128 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  138 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  145 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  155 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  162 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  172 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  179 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  189 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  196 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  206 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  213 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  223 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  230 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  240 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  247 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  257 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  264 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  274 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  281 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  291 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  298 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  308 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  315 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  325 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  332 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  342 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  349 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  359 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  366 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  376 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  383 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  393 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  400 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  410 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  417 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  427 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  434 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  444 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  451 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  461 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  468 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  478 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  485 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  495 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  502 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  512 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  519 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  529 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  536 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  546 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  553 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  563 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  570 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  580 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  587 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  597 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  604 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  614 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  621 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(3),
+  /*  626 S> */ B(LdaSmi), I8(3),
   /*  629 S> */ B(Return),
 ]
 constant pool: [
@@ -734,133 +734,133 @@
                 B(JumpIfFalse), U8(196),
                 B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*   94 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  104 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  111 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  121 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  128 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  138 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  145 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  155 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  162 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  172 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  179 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  189 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  196 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  206 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  213 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  223 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  230 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  240 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  247 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  257 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  264 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  274 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  281 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  291 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  298 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  308 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  315 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  325 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  332 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  342 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  349 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  359 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  366 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  376 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  383 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  393 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  400 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  410 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  417 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  427 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  434 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  444 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  451 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  461 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  468 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  478 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  485 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  495 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  502 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  512 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  519 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  529 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  536 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  546 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  553 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  563 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  570 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  580 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  587 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  597 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  604 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(1),
+  /*  614 S> */ B(LdaSmi), I8(1),
                 B(Star1),
-                B(LdaSmi), I8(2),
+  /*  621 S> */ B(LdaSmi), I8(2),
                 B(Star2),
-                B(LdaSmi), I8(3),
+  /*  626 S> */ B(LdaSmi), I8(3),
   /*  629 S> */ B(Return),
 ]
 constant pool: [
@@ -914,7 +914,7 @@
                 B(LdaSmi), I8(3),
                 B(JumpIfToBooleanTrue), U8(3),
                 B(LdaZero),
-                B(LdaSmi), I8(1),
+  /*   65 S> */ B(LdaSmi), I8(1),
   /*   67 S> */ B(Return),
 ]
 constant pool: [
diff --git a/test/unittests/interpreter/bytecode_expectations/PrimitiveExpressions.golden b/test/unittests/interpreter/bytecode_expectations/PrimitiveExpressions.golden
index e2d02ee..b8490f7 100644
--- a/test/unittests/interpreter/bytecode_expectations/PrimitiveExpressions.golden
+++ b/test/unittests/interpreter/bytecode_expectations/PrimitiveExpressions.golden
@@ -449,7 +449,7 @@
 bytecodes: [
   /*   42 S> */ B(LdaZero),
                 B(Star0),
-  /*   45 S> */ B(LdaSmi), I8(3),
+  /*   56 S> */ B(LdaSmi), I8(3),
   /*   59 S> */ B(Return),
 ]
 constant pool: [