<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[218971] branches/safari-604.1.28-branch</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/218971">218971</a></dd>
<dt>Author</dt> <dd>jmarcell@apple.com</dd>
<dt>Date</dt> <dd>2017-06-29 17:07:54 -0700 (Thu, 29 Jun 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Cherry-pick <a href="http://trac.webkit.org/projects/webkit/changeset/218957">r218957</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari604128branchJSTestsChakraCoretestGlobalFunctionsevalreturns3baselinejsc">branches/safari-604.1.28-branch/JSTests/ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc</a></li>
<li><a href="#branchessafari604128branchJSTestsChangeLog">branches/safari-604.1.28-branch/JSTests/ChangeLog</a></li>
<li><a href="#branchessafari604128branchJSTestsmozillamozillatestsyaml">branches/safari-604.1.28-branch/JSTests/mozilla/mozilla-tests.yaml</a></li>
<li><a href="#branchessafari604128branchJSTestsstresssupergetbyidjs">branches/safari-604.1.28-branch/JSTests/stress/super-get-by-id.js</a></li>
<li><a href="#branchessafari604128branchJSTeststest262yaml">branches/safari-604.1.28-branch/JSTests/test262.yaml</a></li>
<li><a href="#branchessafari604128branchLayoutTestsChangeLog">branches/safari-604.1.28-branch/LayoutTests/ChangeLog</a></li>
<li><a href="#branchessafari604128branchLayoutTestsjsevalthrowreturnexpectedtxt">branches/safari-604.1.28-branch/LayoutTests/js/eval-throw-return-expected.txt</a></li>
<li><a href="#branchessafari604128branchLayoutTestsjskdecompletionexpectedtxt">branches/safari-604.1.28-branch/LayoutTests/js/kde/completion-expected.txt</a></li>
<li><a href="#branchessafari604128branchLayoutTestsjskdescripttestscompletionjs">branches/safari-604.1.28-branch/LayoutTests/js/kde/script-tests/completion.js</a></li>
<li><a href="#branchessafari604128branchLayoutTestsjsscripttestsevalthrowreturnjs">branches/safari-604.1.28-branch/LayoutTests/js/script-tests/eval-throw-return.js</a></li>
<li><a href="#branchessafari604128branchLayoutTestsjsscripttestsfunctiontoStringvsnamejs">branches/safari-604.1.28-branch/LayoutTests/js/script-tests/function-toString-vs-name.js</a></li>
<li><a href="#branchessafari604128branchLayoutTestssputnikConformance12_Statement126_Iteration_Statements1263_The_for_StatementS1263_A9expectedtxt">branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9-expected.txt</a></li>
<li><a href="#branchessafari604128branchLayoutTestssputnikConformance12_Statement126_Iteration_Statements1263_The_for_StatementS1263_A91expectedtxt">branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1-expected.txt</a></li>
<li><a href="#branchessafari604128branchSourceJavaScriptCoreChangeLog">branches/safari-604.1.28-branch/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchessafari604128branchSourceJavaScriptCorebytecompilerBytecodeGeneratorh">branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#branchessafari604128branchSourceJavaScriptCorebytecompilerNodesCodegencpp">branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp</a></li>
<li><a href="#branchessafari604128branchSourceJavaScriptCoreparserNodescpp">branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.cpp</a></li>
<li><a href="#branchessafari604128branchSourceJavaScriptCoreparserNodesh">branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.h</a></li>
<li><a href="#branchessafari604128branchToolsChangeLog">branches/safari-604.1.28-branch/Tools/ChangeLog</a></li>
<li><a href="#branchessafari604128branchToolsScriptsrunjscstresstests">branches/safari-604.1.28-branch/Tools/Scripts/run-jsc-stress-tests</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#branchessafari604128branchJSTestsstresscompletionvaluejs">branches/safari-604.1.28-branch/JSTests/stress/completion-value.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari604128branchJSTestsChakraCoretestGlobalFunctionsevalreturns3baselinejsc"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/JSTests/ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc        2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc   2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -5,14 +5,14 @@
</span><span class="cx"> 1
</span><span class="cx"> 0
</span><span class="cx"> 2
</span><del>-undefined
</del><ins>+hello
</ins><span class="cx"> 1
</span><span class="cx"> undefined
</span><span class="cx"> 1
</span><span class="cx"> hello
</span><del>-hello
</del><ins>+goodbye
</ins><span class="cx"> undefined
</span><del>-undefined
</del><ins>+good night
</ins><span class="cx"> function () { }
</span><span class="cx"> function () { }
</span><span class="cx"> 2
</span></span></pre></div>
<a id="branchessafari604128branchJSTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/JSTests/ChangeLog (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/ChangeLog        2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/ChangeLog   2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-06-29  Jason Marcell  <jmarcell@apple.com>
+
+        Cherry-pick r218957.
+
+    2017-06-29  Commit Queue  <commit-queue@webkit.org>
+
+            Unreviewed, rolling out r218512.
+            https://bugs.webkit.org/show_bug.cgi?id=173981
+
+            "It changes the behavior of the JS API's JSEvaluateScript
+            which breaks TurboTax" (Requested by saamyjoon on #webkit).
+
+            Reverted changeset:
+
+            "test262: Completion values for control flow do not match the
+            spec"
+            https://bugs.webkit.org/show_bug.cgi?id=171265
+            http://trac.webkit.org/changeset/218512
+
</ins><span class="cx"> 2017-06-27  JF Bastien  <jfbastien@apple.com>
</span><span class="cx"> 
</span><span class="cx">         WebAssembly: running out of executable memory should throw OoM
</span></span></pre></div>
<a id="branchessafari604128branchJSTestsmozillamozillatestsyaml"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/JSTests/mozilla/mozilla-tests.yaml (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/mozilla/mozilla-tests.yaml       2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/mozilla/mozilla-tests.yaml  2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1032,7 +1032,7 @@
</span><span class="cx"> - path: ecma/Statements/12.6.3-19.js
</span><span class="cx">   cmd: defaultRunMozillaTest :normal, "../shell.js"
</span><span class="cx"> - path: ecma/Statements/12.6.3-2.js
</span><del>-  cmd: defaultRunMozillaTest :failDueToOutdatedOrBadTest, "../shell.js"
</del><ins>+  cmd: defaultRunMozillaTest :normal, "../shell.js"
</ins><span class="cx"> - path: ecma/Statements/12.6.3-3.js
</span><span class="cx">   cmd: defaultRunMozillaTest :normal, "../shell.js"
</span><span class="cx"> - path: ecma/Statements/12.6.3-4.js
</span></span></pre></div>
<a id="branchessafari604128branchJSTestsstresscompletionvaluejs"></a>
<div class="delfile"><h4>Deleted: branches/safari-604.1.28-branch/JSTests/stress/completion-value.js (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/stress/completion-value.js       2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/stress/completion-value.js  2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,288 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function shouldBeWithValueCheck(actual, callback) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-// Basic.
-shouldBe(eval(), undefined);
-shouldBe(eval(""), undefined);
-shouldBe(eval(`1`), 1);
-shouldBe(eval(`1; 2`), 2);
-
-// Types of statements:
-// https://tc39.github.io/ecma262/#prod-Statement
-
-// Statements that produce an (empty) completion value do not affect results:
-//   - EmptyStatement
-//   - DebuggerStatement
-//   - BlockStatement (with no substatement)
-//   - DeclarationStatements (variables, functions, classes)
-//   - LabelledStatement (with an empty statement)
-//   - ContinueStatement / BreakStatement (tested below)
-shouldBe(eval(`42;`), 42);
-shouldBe(eval(`42;;;;;`), 42);
-shouldBe(eval(`42; var x;`), 42);
-shouldBe(eval(`42; let x;`), 42);
-shouldBe(eval(`42; const x = 1;`), 42);
-shouldBe(eval(`42; var x = 1;`), 42);
-shouldBe(eval(`42; var x = 1, y = 2;`), 42);
-shouldBe(eval(`42; debugger;`), 42);
-shouldBe(eval(`42; { }`), 42);
-shouldBe(eval(`42; class foo {}`), 42);
-shouldBe(eval(`42; function foo() {}`), 42);
-shouldBe(eval(`42; function* foo() {}`), 42);
-shouldBe(eval(`42; async function foo() {}`), 42);
-shouldBe(eval(`42; label: {}`), 42);
-shouldBe(eval(`42; { { var x; } var y; { { debugger } ;; } function foo() {} }`), 42);
-
-// ExpressionStatement
-shouldBe(eval(`99; 42`), 42);
-shouldBe(eval(`99; { 42 }`), 42);
-shouldBe(eval(`99; label: { 42 }`), 42);
-shouldBe(eval(`99; x = 42`), 42);
-shouldBe(eval(`99; x = 42; x`), 42);
-shouldBe(eval(`99; 1, 2, 3, 42`), 42);
-shouldBe(eval(`99; x = 41; ++x`), 42);
-shouldBe(eval(`99; x = 42; x++`), 42);
-shouldBe(eval(`99; true ? 42 : -1`), 42);
-shouldBe(eval(`99; false ? -1 : 42`), 42);
-shouldBe(Array.isArray(eval(`99; [x,y] = [1,2]`)), true);
-shouldBe(typeof eval(`99; ({})`), "object");
-shouldBe(typeof eval(`99; (function foo() {})`), "function");
-shouldBe(typeof eval(`99; (function* foo() {})`), "function");
-shouldBe(typeof eval(`99; (async function foo() {})`), "function");
-shouldBe(typeof eval(`99; (class foo {})`), "function");
-
-// IfStatement
-shouldBe(eval(`99; if (true);`), undefined);
-shouldBe(eval(`99; if (false);`), undefined);
-shouldBe(eval(`99; if (true) 42;`), 42);
-shouldBe(eval(`99; if (false) -1;`), undefined);
-shouldBe(eval(`99; if (true) {}`), undefined);
-shouldBe(eval(`99; if (true) {42}`), 42);
-shouldBe(eval(`99; if (false) {}`), undefined);
-shouldBe(eval(`99; if (false) {42}`), undefined);
-shouldBe(eval(`99; if (false) {-1} else {}`), undefined);
-shouldBe(eval(`99; if (false) {-1} else {42}`), 42);
-shouldBe(eval(`99; if (false) {-1} else if (true) {}`), undefined);
-shouldBe(eval(`99; if (false) {-1} else if (true) {42}`), 42);
-shouldBe(eval(`99; if (false) {-1} else if (true) {} else {-2}`), undefined);
-shouldBe(eval(`99; if (false) {-1} else if (true) {42} else {-2}`), 42);
-shouldBe(eval(`99; if (false) {-1} else if (false) {-2} else {}`), undefined);
-shouldBe(eval(`99; if (false) {-1} else if (false) {-2} else {42}`), 42);
-
-// DoWhile
-shouldBe(eval(`99; do; while (false);`), undefined);
-shouldBe(eval(`99; do 42; while (false);`), 42);
-shouldBe(eval(`99; do {} while (false);`), undefined);
-shouldBe(eval(`99; do break; while (true);`), undefined);
-shouldBe(eval(`99; do { break } while (true);`), undefined);
-shouldBe(eval(`99; do { 42 } while (false);`), 42);
-shouldBe(eval(`let x = 1; do { x } while (x++ !== (5+5));`), 10);
-shouldBe(eval(`let x = 1; do { x; 42 } while (x++ !== (5+5));`), 42);
-shouldBe(eval(`let x = 1; do { x; break } while (x++ !== (5+5));`), 1);
-shouldBe(eval(`let x = 1; do { x; continue } while (x++ !== (5+5));`), 10);
-
-// While
-shouldBe(eval(`99; while (false);`), undefined);
-shouldBe(eval(`99; while (false) {};`), undefined);
-shouldBe(eval(`99; while (true) break;`), undefined);
-shouldBe(eval(`99; while (true) { break };`), undefined);
-shouldBe(eval(`99; while (true) { 42; break };`), 42);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) ;`), undefined);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { }`), undefined);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x }`), 10);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; 42 }`), 42);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; break }`), 2);
-shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; continue }`), 10);
-
-// For
-shouldBe(eval(`99; for (;false;);`), undefined);
-shouldBe(eval(`99; for (;false;) {}`), undefined);
-shouldBe(eval(`99; for (var x = 1;false;);`), undefined);
-shouldBe(eval(`99; for (x = 1;false;) {}`), undefined);
-shouldBe(eval(`99; for (;;) break;`), undefined);
-shouldBe(eval(`99; for (;;) { break }`), undefined);
-shouldBe(eval(`99; for (;;) { 42; break }`), 42);
-shouldBe(eval(`99; for (;;) { 42; break; 3 }`), 42);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) x;`), 9);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; }`), 9);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; 42 }`), 42);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; break }`), 1);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; break; 3 }`), 1);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; continue }`), 9);
-shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; continue; 3 }`), 9);
-
-// ForOf
-shouldBe(eval(`99; for (var x of []) -1;`), undefined);
-shouldBe(eval(`99; for (x of []) -1;`), undefined);
-shouldBe(eval(`99; for (var x of [1,2]);`), undefined);
-shouldBe(eval(`99; for (x of [1,2]);`), undefined);
-shouldBe(eval(`99; for (x of [1,2]) {}`), undefined);
-shouldBe(eval(`99; for (x of [1,2]) break;`), undefined);
-shouldBe(eval(`99; for (x of [1,2]) { break; }`), undefined);
-shouldBe(eval(`99; for (x of [1,2]) { break; 3; }`), undefined);
-shouldBe(eval(`99; for (x of [1,2]) x`), 2);
-shouldBe(eval(`99; for (x of [1,2]) { x }`), 2);
-shouldBe(eval(`99; for (x of [1,2]) { x; break }`), 1);
-shouldBe(eval(`99; for (x of [1,2]) { x; break; 3 }`), 1);
-shouldBe(eval(`99; for (x of [1,2]) { x; continue }`), 2);
-shouldBe(eval(`99; for (x of [1,2]) { x; continue; 3 }`), 2);
-
-// ForIn
-shouldBe(eval(`99; for (var x in {}) -1;`), undefined);
-shouldBe(eval(`99; for (x in {}) -1;`), undefined);
-shouldBe(eval(`99; for (var x in {a:1,b:2});`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2});`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2}) {}`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2}) break;`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2}) { break; }`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2}) { break; 3; }`), undefined);
-shouldBe(eval(`99; for (x in {a:1,b:2}) x`), "b");
-shouldBe(eval(`99; for (x in {a:1,b:2}) { x }`), "b");
-shouldBe(eval(`99; for (x in {a:1,b:2}) { x; break }`), "a");
-shouldBe(eval(`99; for (x in {a:1,b:2}) { x; break; 3 }`), "a");
-shouldBe(eval(`99; for (x in {a:1,b:2}) { x; continue }`), "b");
-shouldBe(eval(`99; for (x in {a:1,b:2}) { x; continue; 3 }`), "b");
-
-// SwitchStatement
-shouldBe(eval(`99; switch (1) { }`), undefined);
-shouldBe(eval(`99; switch (1) { default:}`), undefined);
-shouldBe(eval(`99; switch (1) { default:42}`), 42);
-shouldBe(eval(`99; switch (1) { default:break;}`), undefined);
-shouldBe(eval(`99; switch (1) { case 1: /* empty */ }`), undefined);
-shouldBe(eval(`99; switch (1) { case 1: 42 }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: break; }`), undefined);
-shouldBe(eval(`99; switch (1) { case 1: break; }`), undefined);
-shouldBe(eval(`99; switch (1) { case 2: case 1: /* empty */ }`), undefined);
-shouldBe(eval(`99; switch (1) { case 2: case 1: 42 }`), 42);
-shouldBe(eval(`99; switch (1) { case 2: case 1: break; }`), undefined);
-shouldBe(eval(`99; switch (1) { case 2: case 1: 42; break; }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: case 2: /* empty */ }`), undefined);
-shouldBe(eval(`99; switch (1) { case 1: case 2: 42 }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: case 2: break; }`), undefined);
-shouldBe(eval(`99; switch (1) { case 1: case 2: 42; break; }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: 42; case 2: /* empty */ }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: -1; case 2: 42 }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: 42; case 2: break; }`), 42);
-shouldBe(eval(`99; switch (1) { case 1: -1; case 2: 42; break; }`), 42);
-shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: 42; break; default: -1; break; }`), 42);
-shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: /* empty */; break; default: -1; break; }`), undefined);
-shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: 42; break; default: -1; break; }`), 42);
-
-// WithStatement
-shouldBe(eval(`99; with (true);`), undefined);
-shouldBe(eval(`99; with (true) {}`), undefined);
-shouldBe(eval(`99; with (true) 42;`), 42);
-shouldBe(eval(`99; with (true) { 42 }`), 42);
-
-// TryCatchFinally / ThrowStatement
-shouldBe(eval(`99; try {} catch (e) {-1};`), undefined);
-shouldBe(eval(`99; try {} catch (e) {-1} finally {-2};`), undefined);
-shouldBe(eval(`99; try {42} catch (e) {-1};`), 42);
-shouldBe(eval(`99; try {42} catch (e) {-1} finally {-2};`), 42);
-shouldBe(eval(`99; try { [].x.x } catch (e) {};`), undefined);
-shouldBe(eval(`99; try { [].x.x } catch (e) {42} finally {-2};`), 42);
-shouldBe(eval(`99; try { throw 42 } catch (e) {e};`), 42);
-shouldBe(eval(`99; try { throw 42 } catch (e) {e} finally {-2};`), 42);
-
-// Break Statement where it is not normally available.
-shouldBe(eval(`99; do { -99; if (true) { break; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (true) { 42; break; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; if (false) { } else { break; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (false) { } else { 42; break; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; with (true) { break; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; with (true) { 42; break; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { break; } catch (e) { -1 }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) { -1 }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { break; } catch (e) {-1} finally {-2}; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) {-1} finally {-2}; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; } finally {-2}; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; } finally {-2}; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; } while (false);`), 42);
-
-// Break Statement where it is not normally available with other surrounding statements.
-shouldBe(eval(`99; do { -99; if (true) { break; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (true) { 42; break; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; if (false) { } else { break; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (false) { } else { 42; break; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; with (true) { break; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; with (true) { 42; break; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { break; } catch (e) { -1 }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) { -1 }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { break; } catch (e) {-1} finally {-2}; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) {-1} finally {-2}; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; } finally {-2}; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; } finally {-2}; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; -77 } while (false);`), 42);
-
-// Continue Statement where it is not normally available.
-shouldBe(eval(`99; do { -99; if (true) { continue; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (true) { 42; continue; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; if (false) { } else { continue; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (false) { } else { 42; continue; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; with (true) { continue; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; with (true) { 42; continue; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { continue; } catch (e) { -1 }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) { -1 }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { continue; } catch (e) {-1} finally {-2}; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) {-1} finally {-2}; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; }; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; } finally {-2}; } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; } finally {-2}; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; } while (false);`), 42);
-
-// Continue Statement where it is not normally available with other surrounding statements.
-shouldBe(eval(`99; do { -99; if (true) { continue; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (true) { 42; continue; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; if (false) { } else { continue; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; if (false) { } else { 42; continue; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; with (true) { continue; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; with (true) { 42; continue; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { continue; } catch (e) { -1 }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) { -1 }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { continue; } catch (e) {-1} finally {-2}; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) {-1} finally {-2}; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; }; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; } finally {-2}; -77 } while (false);`), undefined);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; } finally {-2}; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; -77 } while (false);`), 42);
-shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; -77 } while (false);`), 42);
-
-// Early break to a label.
-shouldBe(eval(`99; label: do { 1; if (true) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; if (true) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; with (true) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; with (true) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; do { break label; 2; } while (false); } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; do { break label; 2; } while (false); 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; try { break label; 2; } catch (e) {-1;} while (false); } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; try { break label; 2; } catch (e) {-1;} while (false); 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; while (true) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; while (true) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (;;) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (;;) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (var x in {a:77}) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (var x in {a:77}) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (var x of [77]) { break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; for (var x of [77]) { break label; 2; }; 3; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; switch (true) { default: break label; 2; }; } while (false);`), undefined);
-shouldBe(eval(`99; label: do { 1; switch (true) { default: break label; 2; }; 3; } while (false);`), undefined);
-
-// FIXME: Module Only Statements:
-// FIXME: ImportStatement
-// FIXME: ExportStatement
</del></span></pre></div>
<a id="branchessafari604128branchJSTestsstresssupergetbyidjs"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/JSTests/stress/super-get-by-id.js (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/stress/super-get-by-id.js        2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/stress/super-get-by-id.js   2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -44,9 +44,9 @@
</span><span class="cx"> let subclasses = new Array(numPolymorphicClasses);
</span><span class="cx"> for (let i = 0; i < numPolymorphicClasses; i++) {
</span><span class="cx">     let BaseCode = `
</span><del>-        (class Base${i} {
</del><ins>+       class Base${i} {
</ins><span class="cx">             get value() { return this._value; }
</span><del>-        });
</del><ins>+        };
</ins><span class="cx">     `;
</span><span class="cx"> 
</span><span class="cx">     let Base = eval(BaseCode);
</span><span class="lines">@@ -72,9 +72,9 @@
</span><span class="cx"> subclasses = new Array(nClasses);
</span><span class="cx"> for (let i = 0; i < nClasses; i++) {
</span><span class="cx">     let BaseCode = `
</span><del>-        (class Base${i + 4} {
</del><ins>+       class Base${i + 4} {
</ins><span class="cx">             get value() { return this._value; }
</span><del>-        });
</del><ins>+        };
</ins><span class="cx">     `;
</span><span class="cx"> 
</span><span class="cx">     let Base = eval(BaseCode);
</span></span></pre></div>
<a id="branchessafari604128branchJSTeststest262yaml"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/JSTests/test262.yaml (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/JSTests/test262.yaml     2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/JSTests/test262.yaml        2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -77648,13 +77648,13 @@
</span><span class="cx"> - path: test262/test/language/statements/do-while/S12.6.1_A9.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/do-while/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/do-while/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/do-while/cptn-normal.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/do-while/cptn-normal.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/do-while/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/do-while/decl-cls.js
</span><span class="lines">@@ -77938,29 +77938,29 @@
</span><span class="cx"> - path: test262/test/language/statements/for/S12.6.3_A8_T3.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/for/S12.6.3_A9.1.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/S12.6.3_A9.1.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/S12.6.3_A9.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/S12.6.3_A9.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-decl-expr-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-decl-expr-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-decl-expr-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-decl-expr-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-expr-expr-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-expr-expr-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-expr-expr-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for/cptn-expr-expr-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/for/decl-cls.js
</span><span class="lines">@@ -79160,37 +79160,37 @@
</span><span class="cx"> - path: test262/test/language/statements/for-in/S12.6.4_A7_T2.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-skip-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-skip-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-zero-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-decl-zero-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-skip-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-skip-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-zero-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-in/cptn-expr-zero-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-in/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/for-in/decl-cls.js
</span><span class="lines">@@ -79546,29 +79546,29 @@
</span><span class="cx"> - path: test262/test/language/statements/for-of/continue.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-no-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-decl-no-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-no-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/for-of/cptn-expr-no-itr.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/for-of/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/for-of/decl-cls.js
</span><span class="lines">@@ -84394,33 +84394,33 @@
</span><span class="cx"> - path: test262/test/language/statements/if/S12.5_A8.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/if/cptn-else-false-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-false-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-false-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-false-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-true-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-true-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-true-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-else-true-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-false.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-false.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-true-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-true-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-true-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/if/cptn-no-else-true-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/if/if-cls-else-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/if/if-cls-else-cls.js
</span><span class="lines">@@ -85202,9 +85202,9 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/S12.11_A4_T1.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-a-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-a-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-a-fall-thru-abrupt-empty.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-a-fall-thru-abrupt-empty.js
</span><span class="lines">@@ -85214,13 +85214,13 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-a-fall-thru-nrml.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-fall-thru-abrupt-empty.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-fall-thru-abrupt-empty.js
</span><span class="lines">@@ -85230,17 +85230,17 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-fall-thru-nrml.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-b-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-fall-thru-abrupt-empty.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-fall-thru-abrupt-empty.js
</span><span class="lines">@@ -85250,9 +85250,9 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-fall-thru-nrml.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-b-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-fall-thru-abrupt-empty.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-fall-thru-abrupt-empty.js
</span><span class="lines">@@ -85262,13 +85262,13 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-fall-thru-nrml.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-dflt-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-fall-thru-abrupt-empty.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-fall-thru-abrupt-empty.js
</span><span class="lines">@@ -85278,13 +85278,13 @@
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-fall-thru-nrml.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-match-final.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-no-match.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/switch/cptn-no-dflt-no-match.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/switch/early-lex-dup.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/switch/early-lex-dup.js
</span><span class="lines">@@ -85668,25 +85668,25 @@
</span><span class="cx"> - path: test262/test/language/statements/try/S12.14_A9_T5.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/try/cptn-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-from-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-from-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-skip-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-skip-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-wo-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-finally-wo-catch.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-try.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/try/cptn-try.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/try/dstr-ary-init-iter-close.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/try/dstr-ary-init-iter-close.js
</span><span class="lines">@@ -86716,17 +86716,17 @@
</span><span class="cx"> - path: test262/test/language/statements/while/S12.6.2_A9.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</span><span class="cx"> - path: test262/test/language/statements/while/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/while/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/while/cptn-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/while/cptn-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/while/cptn-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/while/cptn-no-iter.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
</ins><span class="cx"> - path: test262/test/language/statements/while/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/while/decl-cls.js
</span><span class="lines">@@ -87058,9 +87058,9 @@
</span><span class="cx"> - path: test262/test/language/statements/with/binding-not-blocked-by-unscopables-non-obj.js
</span><span class="cx">   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/with/cptn-abrupt-empty.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/with/cptn-nrml.js
</span><del>-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</del><ins>+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</ins><span class="cx"> - path: test262/test/language/statements/with/decl-cls.js
</span><span class="cx">   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
</span><span class="cx"> - path: test262/test/language/statements/with/decl-const.js
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/ChangeLog (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/ChangeLog    2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/ChangeLog       2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-06-29  Jason Marcell  <jmarcell@apple.com>
+
+        Cherry-pick r218957.
+
+    2017-06-29  Commit Queue  <commit-queue@webkit.org>
+
+            Unreviewed, rolling out r218512.
+            https://bugs.webkit.org/show_bug.cgi?id=173981
+
+            "It changes the behavior of the JS API's JSEvaluateScript
+            which breaks TurboTax" (Requested by saamyjoon on #webkit).
+
+            Reverted changeset:
+
+            "test262: Completion values for control flow do not match the
+            spec"
+            https://bugs.webkit.org/show_bug.cgi?id=171265
+            http://trac.webkit.org/changeset/218512
+
</ins><span class="cx"> 2017-06-27  Myles C. Maxfield  <mmaxfield@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [iOS] Cannot italicize or bold text rendered with text styles
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsjsevalthrowreturnexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/js/eval-throw-return-expected.txt (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/js/eval-throw-return-expected.txt    2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/js/eval-throw-return-expected.txt       2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -4,19 +4,19 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> PASS eval("1;") is 1
</span><del>-PASS eval("1; try { foo = [2,3,throwFunc(), 4]; } catch (e){}") is undefined
-PASS eval("1; try { 2; throw \"\"; } catch (e){}") is undefined
-PASS eval("1; try { 2; throwFunc(); } catch (e){}") is undefined
</del><ins>+PASS eval("1; try { foo = [2,3,throwFunc(), 4]; } catch (e){}") is 1
+PASS eval("1; try { 2; throw \"\"; } catch (e){}") is 2
+PASS eval("1; try { 2; throwFunc(); } catch (e){}") is 2
</ins><span class="cx"> PASS eval("1; try { 2; throwFunc(); } catch (e){3;} finally {}") is 3
</span><del>-PASS eval("1; try { 2; throwFunc(); } catch (e){3;} finally {4;}") is 3
</del><ins>+PASS eval("1; try { 2; throwFunc(); } catch (e){3;} finally {4;}") is 4
</ins><span class="cx"> PASS eval("function blah() { 1; }\n blah();") is undefined
</span><span class="cx"> PASS eval("var x = 1;") is undefined
</span><span class="cx"> PASS eval("if (true) { 1; } else { 2; }") is 1
</span><span class="cx"> PASS eval("if (false) { 1; } else { 2; }") is 2
</span><del>-PASS eval("try{1; if (true) { 2; throw \"\"; } else { 2; }} catch(e){}") is undefined
</del><ins>+PASS eval("try{1; if (true) { 2; throw \"\"; } else { 2; }} catch(e){}") is 2
</ins><span class="cx"> PASS eval("1; var i = 0; do { ++i; 2; } while(i!=1);") is 2
</span><del>-PASS eval("try{1; var i = 0; do { ++i; 2; throw \"\"; } while(i!=1);} catch(e){}") is undefined
-PASS eval("1; try{2; throwOnReturn();} catch(e){}") is undefined
</del><ins>+PASS eval("try{1; var i = 0; do { ++i; 2; throw \"\"; } while(i!=1);} catch(e){}") is 2
+PASS eval("1; try{2; throwOnReturn();} catch(e){}") is 2
</ins><span class="cx"> PASS eval("1; twoFunc();") is undefined
</span><span class="cx"> PASS eval("1; with ( { a: 0 } ) { 2; }") is 2
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsjskdecompletionexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/js/kde/completion-expected.txt (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/js/kde/completion-expected.txt       2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/js/kde/completion-expected.txt  2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> PASS caught is true
</span><span class="cx"> PASS val is 11
</span><span class="cx"> PASS val is 12
</span><del>-PASS val is undefined
</del><ins>+PASS val is 13
</ins><span class="cx"> PASS val is 14
</span><span class="cx"> PASS val is 15
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsjskdescripttestscompletionjs"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/js/kde/script-tests/completion.js (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/js/kde/script-tests/completion.js    2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/js/kde/script-tests/completion.js       2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx"> val = eval("12; ;");
</span><span class="cx"> shouldBe("val", "12");
</span><span class="cx"> val = eval("13; if(false);");
</span><del>-shouldBe("val", "undefined");
</del><ins>+shouldBe("val", "13");
</ins><span class="cx"> val = eval("14; function f() {}");
</span><span class="cx"> shouldBe("val", "14");
</span><span class="cx"> val = eval("15; var v = 0");
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsjsscripttestsevalthrowreturnjs"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/js/script-tests/eval-throw-return.js (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/js/script-tests/eval-throw-return.js 2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/js/script-tests/eval-throw-return.js    2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -14,18 +14,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> shouldBe('eval("1;")', "1");
</span><del>-shouldBe('eval("1; try { foo = [2,3,throwFunc(), 4]; } catch (e){}")', "undefined");
-shouldBe('eval("1; try { 2; throw \\"\\"; } catch (e){}")', "undefined");
-shouldBe('eval("1; try { 2; throwFunc(); } catch (e){}")', "undefined");
</del><ins>+shouldBe('eval("1; try { foo = [2,3,throwFunc(), 4]; } catch (e){}")', "1");
+shouldBe('eval("1; try { 2; throw \\"\\"; } catch (e){}")', "2");
+shouldBe('eval("1; try { 2; throwFunc(); } catch (e){}")', "2");
</ins><span class="cx"> shouldBe('eval("1; try { 2; throwFunc(); } catch (e){3;} finally {}")', "3");
</span><del>-shouldBe('eval("1; try { 2; throwFunc(); } catch (e){3;} finally {4;}")', "3");
</del><ins>+shouldBe('eval("1; try { 2; throwFunc(); } catch (e){3;} finally {4;}")', "4");
</ins><span class="cx"> shouldBe('eval("function blah() { 1; }\\n blah();")', "undefined");
</span><span class="cx"> shouldBe('eval("var x = 1;")', "undefined");
</span><span class="cx"> shouldBe('eval("if (true) { 1; } else { 2; }")', "1");
</span><span class="cx"> shouldBe('eval("if (false) { 1; } else { 2; }")', "2");
</span><del>-shouldBe('eval("try{1; if (true) { 2; throw \\"\\"; } else { 2; }} catch(e){}")', "undefined");
</del><ins>+shouldBe('eval("try{1; if (true) { 2; throw \\"\\"; } else { 2; }} catch(e){}")', "2");
</ins><span class="cx"> shouldBe('eval("1; var i = 0; do { ++i; 2; } while(i!=1);")', "2");
</span><del>-shouldBe('eval("try{1; var i = 0; do { ++i; 2; throw \\"\\"; } while(i!=1);} catch(e){}")', "undefined");
-shouldBe('eval("1; try{2; throwOnReturn();} catch(e){}")', "undefined");
</del><ins>+shouldBe('eval("try{1; var i = 0; do { ++i; 2; throw \\"\\"; } while(i!=1);} catch(e){}")', "2");
+shouldBe('eval("1; try{2; throwOnReturn();} catch(e){}")', "2");
</ins><span class="cx"> shouldBe('eval("1; twoFunc();")', "undefined");
</span><span class="cx"> shouldBe('eval("1; with ( { a: 0 } ) { 2; }")', "2");
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestsjsscripttestsfunctiontoStringvsnamejs"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/js/script-tests/function-toString-vs-name.js (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/js/script-tests/function-toString-vs-name.js 2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/js/script-tests/function-toString-vs-name.js    2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -446,11 +446,11 @@
</span><span class="cx"> // Checking if there are CodeCache badness that can result from class statements in
</span><span class="cx"> // identical eval statements.
</span><span class="cx"> (function () {
</span><del>-    let body1 = "class foo { constructor(x) { return x; } stuff() { return 5; } }; foo";
</del><ins>+    let body1 = "class foo { constructor(x) { return x; } stuff() { return 5; } }";
</ins><span class="cx">     // Identical class body as body1.
</span><del>-    let body2 = "class foo { constructor(x) { return x; } stuff() { return 5; } }; foo";
</del><ins>+    let body2 = "class foo { constructor(x) { return x; } stuff() { return 5; } }";
</ins><span class="cx">     // Identical constructor as body1 & body2, but different otherwise.
</span><del>-    let body3 = "class foo3 { constructor(x) { return x; } stuff3() { return 15; } }; foo3";
</del><ins>+    let body3 = "class foo3 { constructor(x) { return x; } stuff3() { return 15; } }";
</ins><span class="cx"> 
</span><span class="cx">     let bar1 = eval(body1);
</span><span class="cx">     let bar2 = eval(body2);
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestssputnikConformance12_Statement126_Iteration_Statements1263_The_for_StatementS1263_A9expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9-expected.txt (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9-expected.txt  2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9-expected.txt     2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> S12.6.3_A9
</span><span class="cx"> 
</span><del>-FAIL SputnikError: #1: var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception
</del><ins>+PASS 
</ins><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari604128branchLayoutTestssputnikConformance12_Statement126_Iteration_Statements1263_The_for_StatementS1263_A91expectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1-expected.txt (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1-expected.txt        2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/LayoutTests/sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1-expected.txt   2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> S12.6.3_A9.1
</span><span class="cx"> 
</span><del>-FAIL SputnikError: #1: var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception
</del><ins>+PASS 
</ins><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari604128branchSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Source/JavaScriptCore/ChangeLog (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Source/JavaScriptCore/ChangeLog  2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Source/JavaScriptCore/ChangeLog     2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-06-29  Jason Marcell  <jmarcell@apple.com>
+
+        Cherry-pick r218957.
+
+    2017-06-29  Commit Queue  <commit-queue@webkit.org>
+
+            Unreviewed, rolling out r218512.
+            https://bugs.webkit.org/show_bug.cgi?id=173981
+
+            "It changes the behavior of the JS API's JSEvaluateScript
+            which breaks TurboTax" (Requested by saamyjoon on #webkit).
+
+            Reverted changeset:
+
+            "test262: Completion values for control flow do not match the
+            spec"
+            https://bugs.webkit.org/show_bug.cgi?id=171265
+            http://trac.webkit.org/changeset/218512
+
</ins><span class="cx"> 2017-06-29  Dean Jackson  <dino@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Disable some features on this release branch.
</span></span></pre></div>
<a id="branchessafari604128branchSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h   2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h      2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -916,9 +916,7 @@
</span><span class="cx"> 
</span><span class="cx">         CodeType codeType() const { return m_codeType; }
</span><span class="cx"> 
</span><del>-        bool shouldBeConcernedWithCompletionValue() const { return m_codeType != FunctionCode; }
-
-        bool shouldEmitDebugHooks() const { return m_shouldEmitDebugHooks; }
</del><ins>+        bool shouldEmitDebugHooks() { return m_shouldEmitDebugHooks; }
</ins><span class="cx">         
</span><span class="cx">         bool isStrictMode() const { return m_codeBlock->isStrictMode(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari604128branchSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp      2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp 2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -2461,25 +2461,30 @@
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ SourceElements -------------------------------
</span><span class="cx"> 
</span><ins>+
+inline StatementNode* SourceElements::lastStatement() const
+{
+    return m_tail;
+}
+
</ins><span class="cx"> inline void SourceElements::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    StatementNode* lastStatementWithCompletionValue = nullptr;
-    if (generator.shouldBeConcernedWithCompletionValue()) {
-        for (StatementNode* statement = m_head; statement; statement = statement->next()) {
-            if (statement->hasCompletionValue())
-                lastStatementWithCompletionValue = statement;
-        }
-    }
-
-    for (StatementNode* statement = m_head; statement; statement = statement->next()) {
-        if (statement == lastStatementWithCompletionValue)
-            generator.emitLoad(dst, jsUndefined());
</del><ins>+    for (StatementNode* statement = m_head; statement; statement = statement->next())
</ins><span class="cx">         generator.emitNodeInTailPosition(dst, statement);
</span><del>-    }
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ BlockNode ------------------------------------
</span><span class="cx"> 
</span><ins>+inline StatementNode* BlockNode::lastStatement() const
+{
+    return m_statements ? m_statements->lastStatement() : 0;
+}
+
+StatementNode* BlockNode::singleStatement() const
+{
+    return m_statements ? m_statements->singleStatement() : 0;
+}
+
</ins><span class="cx"> void BlockNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><span class="cx">     if (!m_statements)
</span><span class="lines">@@ -2603,11 +2608,6 @@
</span><span class="cx"> 
</span><span class="cx"> void IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue()) {
-        if (m_ifBlock->hasEarlyBreakOrContinue() || (m_elseBlock && m_elseBlock->hasEarlyBreakOrContinue()))
-            generator.emitLoad(dst, jsUndefined());
-    }
-
</del><span class="cx">     Ref<Label> beforeThen = generator.newLabel();
</span><span class="cx">     Ref<Label> beforeElse = generator.newLabel();
</span><span class="cx">     Ref<Label> afterElse = generator.newLabel();
</span><span class="lines">@@ -2643,9 +2643,6 @@
</span><span class="cx"> 
</span><span class="cx"> void DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     Ref<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
</span><span class="cx"> 
</span><span class="cx">     Ref<Label> topOfLoop = generator.newLabel();
</span><span class="lines">@@ -2664,9 +2661,6 @@
</span><span class="cx"> 
</span><span class="cx"> void WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     Ref<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
</span><span class="cx">     Ref<Label> topOfLoop = generator.newLabel();
</span><span class="cx"> 
</span><span class="lines">@@ -2691,9 +2685,6 @@
</span><span class="cx"> 
</span><span class="cx"> void ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     Ref<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
</span><span class="cx"> 
</span><span class="cx">     RegisterID* forLoopSymbolTable = nullptr;
</span><span class="lines">@@ -2843,9 +2834,6 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     Ref<Label> end = generator.newLabel();
</span><span class="cx"> 
</span><span class="cx">     RegisterID* forLoopSymbolTable = nullptr;
</span><span class="lines">@@ -3000,9 +2988,6 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     RegisterID* forLoopSymbolTable = nullptr;
</span><span class="cx">     generator.pushLexicalScope(this, BytecodeGenerator::TDZCheckOptimization::Optimize, BytecodeGenerator::NestedScopeType::IsNested, &forLoopSymbolTable);
</span><span class="cx">     auto extractor = [this, dst](BytecodeGenerator& generator, RegisterID* value)
</span><span class="lines">@@ -3156,8 +3141,6 @@
</span><span class="cx">     RefPtr<RegisterID> scope = generator.emitNode(m_expr);
</span><span class="cx">     generator.emitExpressionInfo(m_divot, m_divot - m_expressionLength, m_divot);
</span><span class="cx">     generator.emitPushWithScope(scope.get());
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_statement->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
</del><span class="cx">     generator.emitNodeInTailPosition(dst, m_statement);
</span><span class="cx">     generator.emitPopWithScope();
</span><span class="cx"> }
</span><span class="lines">@@ -3326,9 +3309,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     Ref<LabelScope> scope = generator.newLabelScope(LabelScope::Switch);
</span><span class="cx"> 
</span><span class="cx">     RefPtr<RegisterID> r0 = generator.emitNode(m_expr);
</span><span class="lines">@@ -3373,9 +3353,6 @@
</span><span class="cx">     // NOTE: The catch and finally blocks must be labeled explicitly, so the
</span><span class="cx">     // optimizer knows they may be jumped to from anywhere.
</span><span class="cx"> 
</span><del>-    if (generator.shouldBeConcernedWithCompletionValue() && m_tryBlock->hasEarlyBreakOrContinue())
-        generator.emitLoad(dst, jsUndefined());
-
</del><span class="cx">     ASSERT(m_catchBlock || m_finallyBlock);
</span><span class="cx">     BytecodeGenerator::CompletionRecordScope completionRecordScope(generator, m_finallyBlock);
</span><span class="cx"> 
</span><span class="lines">@@ -3467,7 +3444,7 @@
</span><span class="cx"> 
</span><span class="cx">         int finallyStartOffset = m_catchBlock ? m_catchBlock->endOffset() + 1 : m_tryBlock->endOffset() + 1;
</span><span class="cx">         generator.emitProfileControlFlow(finallyStartOffset);
</span><del>-        generator.emitNodeInTailPosition(m_finallyBlock);
</del><ins>+        generator.emitNodeInTailPosition(dst, m_finallyBlock);
</ins><span class="cx"> 
</span><span class="cx">         generator.emitFinallyCompletion(finallyContext, savedCompletionTypeRegister.get(), *finallyEndLabel);
</span><span class="cx">         generator.emitLabel(*finallyEndLabel);
</span><span class="lines">@@ -3742,9 +3719,9 @@
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ ClassDeclNode ---------------------------------
</span><span class="cx"> 
</span><del>-void ClassDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
</del><ins>+void ClassDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
</ins><span class="cx"> {
</span><del>-    generator.emitNode(m_classDeclaration);
</del><ins>+    generator.emitNode(dst, m_classDeclaration);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ ClassExprNode ---------------------------------
</span></span></pre></div>
<a id="branchessafari604128branchSourceJavaScriptCoreparserNodescpp"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.cpp (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.cpp   2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.cpp      2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -66,55 +66,6 @@
</span><span class="cx">     return m_head == m_tail ? m_head : nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-StatementNode* SourceElements::lastStatement() const
-{
-    return m_tail;
-}
-
-bool SourceElements::hasCompletionValue() const
-{
-    for (StatementNode* statement = m_head; statement; statement = statement->next()) {
-        if (statement->hasCompletionValue())
-            return true;
-    }
-
-    return false;
-}
-
-bool SourceElements::hasEarlyBreakOrContinue() const
-{
-    for (StatementNode* statement = m_head; statement; statement = statement->next()) {
-        if (statement->isBreak() || statement->isContinue())
-            return true;
-        if (statement->hasCompletionValue())
-            return false;
-    }
-
-    return false;
-}
-
-// ------------------------------ BlockNode ------------------------------------
-
-StatementNode* BlockNode::lastStatement() const
-{
-    return m_statements ? m_statements->lastStatement() : nullptr;
-}
-
-StatementNode* BlockNode::singleStatement() const
-{
-    return m_statements ? m_statements->singleStatement() : nullptr;
-}
-
-bool BlockNode::hasCompletionValue() const
-{
-    return m_statements ? m_statements->hasCompletionValue() : false;
-}
-
-bool BlockNode::hasEarlyBreakOrContinue() const
-{
-    return m_statements ? m_statements->hasEarlyBreakOrContinue() : false;
-}
-
</del><span class="cx"> // ------------------------------ ScopeNode -----------------------------
</span><span class="cx"> 
</span><span class="cx"> ScopeNode::ScopeNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, bool inStrictContext)
</span><span class="lines">@@ -149,19 +100,9 @@
</span><span class="cx"> 
</span><span class="cx"> StatementNode* ScopeNode::singleStatement() const
</span><span class="cx"> {
</span><del>-    return m_statements ? m_statements->singleStatement() : nullptr;
</del><ins>+    return m_statements ? m_statements->singleStatement() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ScopeNode::hasCompletionValue() const
-{
-    return m_statements ? m_statements->hasCompletionValue() : false;
-}
-
-bool ScopeNode::hasEarlyBreakOrContinue() const
-{
-    return m_statements ? m_statements->hasEarlyBreakOrContinue() : false;
-}
-
</del><span class="cx"> // ------------------------------ ProgramNode -----------------------------
</span><span class="cx"> 
</span><span class="cx"> ProgramNode::ProgramNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack&& funcStack, VariableEnvironment& lexicalVariables, UniquedStringImplPtrSet&& sloppyModeHoistedFunctions, FunctionParameters*, const SourceCode& source, CodeFeatures features, InnerArrowFunctionCodeFeatures innerArrowFunctionCodeFeatures, int numConstants, RefPtr<ModuleScopeData>&&)
</span></span></pre></div>
<a id="branchessafari604128branchSourceJavaScriptCoreparserNodesh"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.h (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.h     2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Source/JavaScriptCore/parser/Nodes.h        2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -209,12 +209,9 @@
</span><span class="cx">         void setLoc(unsigned firstLine, unsigned lastLine, int startOffset, int lineStartOffset);
</span><span class="cx">         unsigned lastLine() const { return m_lastLine; }
</span><span class="cx"> 
</span><del>-        StatementNode* next() const { return m_next; }
</del><ins>+        StatementNode* next() { return m_next; }
</ins><span class="cx">         void setNext(StatementNode* next) { m_next = next; }
</span><span class="cx"> 
</span><del>-        virtual bool hasCompletionValue() const { return true; }
-        virtual bool hasEarlyBreakOrContinue() const { return false; }
-
</del><span class="cx">         virtual bool isEmptyStatement() const { return false; }
</span><span class="cx">         virtual bool isDebuggerStatement() const { return false; }
</span><span class="cx">         virtual bool isFunctionNode() const { return false; }
</span><span class="lines">@@ -1344,9 +1341,6 @@
</span><span class="cx">         StatementNode* singleStatement() const;
</span><span class="cx">         StatementNode* lastStatement() const;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const;
-        bool hasEarlyBreakOrContinue() const;
-
</del><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* destination);
</span><span class="cx">         void analyzeModule(ModuleAnalyzer&);
</span><span class="cx"> 
</span><span class="lines">@@ -1367,9 +1361,6 @@
</span><span class="cx">     private:
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override;
-        bool hasEarlyBreakOrContinue() const override;
-
</del><span class="cx">         bool isBlock() const override { return true; }
</span><span class="cx"> 
</span><span class="cx">         SourceElements* m_statements;
</span><span class="lines">@@ -1382,7 +1373,6 @@
</span><span class="cx">     private:
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isEmptyStatement() const override { return true; }
</span><span class="cx">     };
</span><span class="cx">     
</span><span class="lines">@@ -1390,7 +1380,6 @@
</span><span class="cx">     public:
</span><span class="cx">         DebuggerStatementNode(const JSTokenLocation&);
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isDebuggerStatement() const override { return true; }
</span><span class="cx">         
</span><span class="cx">     private:
</span><span class="lines">@@ -1417,8 +1406,6 @@
</span><span class="cx">     private:
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override { return false; }
-
</del><span class="cx">         ExpressionNode* m_expr;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -1536,7 +1523,6 @@
</span><span class="cx">         Label* trivialTarget(BytecodeGenerator&);
</span><span class="cx">         
</span><span class="cx">     private:
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isContinue() const override { return true; }
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><span class="lines">@@ -1549,7 +1535,6 @@
</span><span class="cx">         Label* trivialTarget(BytecodeGenerator&);
</span><span class="cx">         
</span><span class="cx">     private:
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isBreak() const override { return true; }
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><span class="lines">@@ -1590,7 +1575,6 @@
</span><span class="cx">         bool isLabel() const override { return true; }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        bool hasCompletionValue() const override { return m_statement->hasCompletionValue(); }
</del><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><span class="cx">         const Identifier& m_name;
</span><span class="lines">@@ -1675,9 +1659,6 @@
</span><span class="cx"> 
</span><span class="cx">         StatementNode* singleStatement() const;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override;
-        bool hasEarlyBreakOrContinue() const override;
-
</del><span class="cx">         void emitStatementsBytecode(BytecodeGenerator&, RegisterID* destination);
</span><span class="cx">         
</span><span class="cx">         void analyzeModule(ModuleAnalyzer&);
</span><span class="lines">@@ -1787,7 +1768,6 @@
</span><span class="cx">     class ModuleDeclarationNode : public StatementNode {
</span><span class="cx">     public:
</span><span class="cx">         virtual void analyzeModule(ModuleAnalyzer&) = 0;
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isModuleDeclarationNode() const override { return true; }
</span><span class="cx"> 
</span><span class="cx">     protected:
</span><span class="lines">@@ -2285,7 +2265,6 @@
</span><span class="cx">     public:
</span><span class="cx">         FuncDeclNode(const JSTokenLocation&, const Identifier&, FunctionMetadataNode*, const SourceCode&);
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override { return false; }
</del><span class="cx">         bool isFuncDeclNode() const override { return true; }
</span><span class="cx">         FunctionMetadataNode* metadata() { return m_metadata; }
</span><span class="cx"> 
</span><span class="lines">@@ -2302,8 +2281,6 @@
</span><span class="cx">     private:
</span><span class="cx">         void emitBytecode(BytecodeGenerator&, RegisterID* = 0) override;
</span><span class="cx"> 
</span><del>-        bool hasCompletionValue() const override { return false; }
-
</del><span class="cx">         ExpressionNode* m_classDeclaration;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari604128branchToolsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Tools/ChangeLog (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Tools/ChangeLog  2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Tools/ChangeLog     2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-06-29  Jason Marcell  <jmarcell@apple.com>
+
+        Cherry-pick r218957.
+
+    2017-06-29  Commit Queue  <commit-queue@webkit.org>
+
+            Unreviewed, rolling out r218512.
+            https://bugs.webkit.org/show_bug.cgi?id=173981
+
+            "It changes the behavior of the JS API's JSEvaluateScript
+            which breaks TurboTax" (Requested by saamyjoon on #webkit).
+
+            Reverted changeset:
+
+            "test262: Completion values for control flow do not match the
+            spec"
+            https://bugs.webkit.org/show_bug.cgi?id=171265
+            http://trac.webkit.org/changeset/218512
+
</ins><span class="cx"> 2017-06-29  Dean Jackson  <dino@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Disable some features on this release branch.
</span></span></pre></div>
<a id="branchessafari604128branchToolsScriptsrunjscstresstests"></a>
<div class="modfile"><h4>Modified: branches/safari-604.1.28-branch/Tools/Scripts/run-jsc-stress-tests (218970 => 218971)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-604.1.28-branch/Tools/Scripts/run-jsc-stress-tests       2017-06-30 00:07:48 UTC (rev 218970)
+++ branches/safari-604.1.28-branch/Tools/Scripts/run-jsc-stress-tests  2017-06-30 00:07:54 UTC (rev 218971)
</span><span class="lines">@@ -1460,8 +1460,6 @@
</span><span class="cx">         errorHandler = mozillaExit3ErrorHandler
</span><span class="cx">     when :fail
</span><span class="cx">         errorHandler = mozillaFailErrorHandler
</span><del>-    when :failDueToOutdatedOrBadTest
-        errorHandler = mozillaFailErrorHandler
</del><span class="cx">     when :skip
</span><span class="cx">         return
</span><span class="cx">     else
</span></span></pre>
</div>
</div>

</body>
</html>