<!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>[183962] trunk</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/183962">183962</a></dd>
<dt>Author</dt> <dd>saambarati1@gmail.com</dd>
<dt>Date</dt> <dd>2015-05-07 17:20:58 -0700 (Thu, 07 May 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>exceptionFuzz tests should explicitly initialize the exceptionFuzz boolean in JavaScript code through a function in jsc.cpp
https://bugs.webkit.org/show_bug.cgi?id=144753

Reviewed by Mark Lam.

Source/JavaScriptCore:

This allows the BytecodeGenerator to freely emit startup code that &quot;may&quot;
throw exceptions without worrying that this startup code will trigger
the exceptionFuzz exception. The exceptionFuzz counter will only begin
ticking when the 'enableExceptionFuzz' function is explicitly called in
the exceptionFuzz tests.

* jsc.cpp:
(GlobalObject::finishCreation):
(functionEnableExceptionFuzz):
* tests/exceptionFuzz/3d-cube.js:
* tests/exceptionFuzz/date-format-xparb.js:
* tests/exceptionFuzz/earley-boyer.js:

Tools:

* Scripts/jsc-stress-test-helpers/js-exception-fuzz:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsexceptionFuzz3dcubejs">trunk/Source/JavaScriptCore/tests/exceptionFuzz/3d-cube.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsexceptionFuzzdateformatxparbjs">trunk/Source/JavaScriptCore/tests/exceptionFuzz/date-format-xparb.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsexceptionFuzzearleyboyerjs">trunk/Source/JavaScriptCore/tests/exceptionFuzz/earley-boyer.js</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptsjscstresstesthelpersjsexceptionfuzz">trunk/Tools/Scripts/jsc-stress-test-helpers/js-exception-fuzz</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2015-05-07  Saam Barati  &lt;saambarati1@gmail.com&gt;
+
+        exceptionFuzz tests should explicitly initialize the exceptionFuzz boolean in JavaScript code through a function in jsc.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=144753
+
+        Reviewed by Mark Lam.
+
+        This allows the BytecodeGenerator to freely emit startup code that &quot;may&quot;
+        throw exceptions without worrying that this startup code will trigger
+        the exceptionFuzz exception. The exceptionFuzz counter will only begin
+        ticking when the 'enableExceptionFuzz' function is explicitly called in 
+        the exceptionFuzz tests.
+
+        * jsc.cpp:
+        (GlobalObject::finishCreation):
+        (functionEnableExceptionFuzz):
+        * tests/exceptionFuzz/3d-cube.js:
+        * tests/exceptionFuzz/date-format-xparb.js:
+        * tests/exceptionFuzz/earley-boyer.js:
+
</ins><span class="cx"> 2015-05-07  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Optimize serialization of quoted JSON strings.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -478,6 +478,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionReturnTypeFor(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionDumpBasicBlockExecutionRanges(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionHasBasicBlockExecuted(ExecState*);
</span><ins>+static EncodedJSValue JSC_HOST_CALL functionEnableExceptionFuzz(ExecState*);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SAMPLING_FLAGS)
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionSetSamplingFlags(ExecState*);
</span><span class="lines">@@ -635,6 +636,8 @@
</span><span class="cx"> 
</span><span class="cx">         addFunction(vm, &quot;dumpBasicBlockExecutionRanges&quot;, functionDumpBasicBlockExecutionRanges , 0);
</span><span class="cx">         addFunction(vm, &quot;hasBasicBlockExecuted&quot;, functionHasBasicBlockExecuted, 2);
</span><ins>+
+        addFunction(vm, &quot;enableExceptionFuzz&quot;, functionEnableExceptionFuzz, 0);
</ins><span class="cx">         
</span><span class="cx">         JSArray* array = constructEmptyArray(globalExec(), 0);
</span><span class="cx">         for (size_t i = 0; i &lt; arguments.size(); ++i)
</span><span class="lines">@@ -1129,6 +1132,12 @@
</span><span class="cx">     return JSValue::encode(jsBoolean(hasExecuted));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL functionEnableExceptionFuzz(ExecState*)
+{
+    Options::enableExceptionFuzz() = true;
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> // Use SEH for Release builds only to get rid of the crash report dialog
</span><span class="cx"> // (luckily the same tests fail in Release and Debug builds so far). Need to
</span><span class="cx"> // be in a separate main function because the jscmain function requires object
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsexceptionFuzz3dcubejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/exceptionFuzz/3d-cube.js (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/exceptionFuzz/3d-cube.js        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Source/JavaScriptCore/tests/exceptionFuzz/3d-cube.js        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -4,6 +4,9 @@
</span><span class="cx"> // http://www.speich.net/computer/moztesting/3d.htm
</span><span class="cx"> // Created by Simon Speich
</span><span class="cx"> 
</span><ins>+enableExceptionFuzz();
+
+
</ins><span class="cx"> var Q = new Array();
</span><span class="cx"> var MTrans = new Array();  // transformation matrix
</span><span class="cx"> var MQube = new Array();  // position information of qube
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsexceptionFuzzdateformatxparbjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/exceptionFuzz/date-format-xparb.js (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/exceptionFuzz/date-format-xparb.js        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Source/JavaScriptCore/tests/exceptionFuzz/date-format-xparb.js        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -13,6 +13,9 @@
</span><span class="cx">  * details.
</span><span class="cx">  */
</span><span class="cx"> 
</span><ins>+enableExceptionFuzz();
+
+
</ins><span class="cx"> Date.parseFunctions = {count:0};
</span><span class="cx"> Date.parseRegexes = [];
</span><span class="cx"> Date.formatFunctions = {count:0};
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsexceptionFuzzearleyboyerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/exceptionFuzz/earley-boyer.js (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/exceptionFuzz/earley-boyer.js        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Source/JavaScriptCore/tests/exceptionFuzz/earley-boyer.js        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -39,7 +39,9 @@
</span><span class="cx"> }
</span><span class="cx"> */
</span><span class="cx"> 
</span><ins>+enableExceptionFuzz();
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> function sc_print_debug() {
</span><span class="cx">     sc_print.apply(null, arguments);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Tools/ChangeLog        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2015-05-07  Saam Barati  &lt;saambarati1@gmail.com&gt;
+
+        exceptionFuzz tests should explicitly initialize the exceptionFuzz boolean in JavaScript code through a function in jsc.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=144753
+
+        Reviewed by Mark Lam.
+
+        * Scripts/jsc-stress-test-helpers/js-exception-fuzz:
+
</ins><span class="cx"> 2015-05-07  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         New force-related DOM events should fire in WK1 views
</span></span></pre></div>
<a id="trunkToolsScriptsjscstresstesthelpersjsexceptionfuzz"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/jsc-stress-test-helpers/js-exception-fuzz (183961 => 183962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/jsc-stress-test-helpers/js-exception-fuzz        2015-05-08 00:17:48 UTC (rev 183961)
+++ trunk/Tools/Scripts/jsc-stress-test-helpers/js-exception-fuzz        2015-05-08 00:20:58 UTC (rev 183962)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     die &quot;Ignoring garbage arguments; only the first non-option argument is used as the command string.&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-open (my $testInput, &quot;$commandString --enableExceptionFuzz=true |&quot;) or fail(&quot;Cannot execute initial command when getting check count&quot;);
</del><ins>+open (my $testInput, &quot;$commandString |&quot;) or fail(&quot;Cannot execute initial command when getting check count&quot;);
</ins><span class="cx"> while (my $inputLine = &lt;$testInput&gt;) {
</span><span class="cx">     chomp($inputLine);
</span><span class="cx">     my $handled = 0;
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     if ($verbose) {
</span><span class="cx">         print &quot;iteration($iteration) target($target): Running.\n&quot;;
</span><span class="cx">     }
</span><del>-    open ($testInput, &quot;$commandString --enableExceptionFuzz=true --fireExceptionFuzzAt=$target |&quot;) or fail(&quot;Cannot execute command on iteration $iteration&quot;);
</del><ins>+    open ($testInput, &quot;$commandString --fireExceptionFuzzAt=$target |&quot;) or fail(&quot;Cannot execute command on iteration $iteration&quot;);
</ins><span class="cx">     my $state = &quot;waiting&quot;;
</span><span class="cx">     while (my $inputLine = &lt;$testInput&gt;) {
</span><span class="cx">         chomp($inputLine);
</span></span></pre>
</div>
</div>

</body>
</html>