<!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>[194423] trunk/Source/JavaScriptCore</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/194423">194423</a></dd>
<dt>Author</dt> <dd>mark.lam@apple.com</dd>
<dt>Date</dt> <dd>2015-12-26 22:27:03 -0800 (Sat, 26 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename NodeMayOverflowInXXX to NodeMayOverflowInt32InXXX.
https://bugs.webkit.org/show_bug.cgi?id=152555

Reviewed by Alex Christensen.

That's because the NodeMayOverflowInBaseline and NodeMayOverflowInDFG flags only
indicates potential overflowing of Int32 values.  We'll be adding overflow
profiling for Int52 values later, and we should disambiguate between the 2 types.

This is purely a renaming patch.  There are no semantic changes.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::makeSafe):
(JSC::DFG::ByteCodeParser::makeDivSafe):
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGNodeFlags.cpp:
(JSC::DFG::dumpNodeFlags):
* dfg/DFGNodeFlags.h:
(JSC::DFG::nodeMayOverflowInt32):
(JSC::DFG::nodeCanSpeculateInt32):
(JSC::DFG::nodeMayOverflow): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeFlagscpp">trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeFlagsh">trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (194422 => 194423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-12-27 02:24:29 UTC (rev 194422)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-12-27 06:27:03 UTC (rev 194423)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2015-12-26  Mark Lam  &lt;mark.lam@apple.com&gt;
+
+        Rename NodeMayOverflowInXXX to NodeMayOverflowInt32InXXX.
+        https://bugs.webkit.org/show_bug.cgi?id=152555
+
+        Reviewed by Alex Christensen.
+
+        That's because the NodeMayOverflowInBaseline and NodeMayOverflowInDFG flags only
+        indicates potential overflowing of Int32 values.  We'll be adding overflow
+        profiling for Int52 values later, and we should disambiguate between the 2 types.
+
+        This is purely a renaming patch.  There are no semantic changes.
+
+        * dfg/DFGByteCodeParser.cpp:
+        (JSC::DFG::ByteCodeParser::makeSafe):
+        (JSC::DFG::ByteCodeParser::makeDivSafe):
+        (JSC::DFG::ByteCodeParser::handleIntrinsicCall):
+        * dfg/DFGNodeFlags.cpp:
+        (JSC::DFG::dumpNodeFlags):
+        * dfg/DFGNodeFlags.h:
+        (JSC::DFG::nodeMayOverflowInt32):
+        (JSC::DFG::nodeCanSpeculateInt32):
+        (JSC::DFG::nodeMayOverflow): Deleted.
+
</ins><span class="cx"> 2015-12-23  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         jsc CLI tool crashes on EOF.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (194422 => 194423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2015-12-27 02:24:29 UTC (rev 194422)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2015-12-27 06:27:03 UTC (rev 194423)
</span><span class="lines">@@ -882,7 +882,7 @@
</span><span class="cx">     Node* makeSafe(Node* node)
</span><span class="cx">     {
</span><span class="cx">         if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow))
</span><del>-            node-&gt;mergeFlags(NodeMayOverflowInDFG);
</del><ins>+            node-&gt;mergeFlags(NodeMayOverflowInt32InDFG);
</ins><span class="cx">         if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, NegativeZero))
</span><span class="cx">             node-&gt;mergeFlags(NodeMayNegZeroInDFG);
</span><span class="cx">         
</span><span class="lines">@@ -898,14 +898,14 @@
</span><span class="cx">         case ArithSub:
</span><span class="cx">         case ValueAdd:
</span><span class="cx">         case ArithMod: // for ArithMod &quot;MayOverflow&quot; means we tried to divide by zero, or we saw double.
</span><del>-            node-&gt;mergeFlags(NodeMayOverflowInBaseline);
</del><ins>+            node-&gt;mergeFlags(NodeMayOverflowInt32InBaseline);
</ins><span class="cx">             break;
</span><span class="cx">             
</span><span class="cx">         case ArithNegate:
</span><span class="cx">             // Currently we can't tell the difference between a negation overflowing
</span><span class="cx">             // (i.e. -(1 &lt;&lt; 31)) or generating negative zero (i.e. -0). If it took slow
</span><span class="cx">             // path then we assume that it did both of those things.
</span><del>-            node-&gt;mergeFlags(NodeMayOverflowInBaseline);
</del><ins>+            node-&gt;mergeFlags(NodeMayOverflowInt32InBaseline);
</ins><span class="cx">             node-&gt;mergeFlags(NodeMayNegZeroInBaseline);
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="lines">@@ -915,7 +915,7 @@
</span><span class="cx">             // https://bugs.webkit.org/show_bug.cgi?id=132470
</span><span class="cx">             if (m_inlineStackTop-&gt;m_profiledBlock-&gt;likelyToTakeDeepestSlowCase(m_currentIndex)
</span><span class="cx">                 || m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow))
</span><del>-                node-&gt;mergeFlags(NodeMayOverflowInBaseline | NodeMayNegZeroInBaseline);
</del><ins>+                node-&gt;mergeFlags(NodeMayOverflowInt32InBaseline | NodeMayNegZeroInBaseline);
</ins><span class="cx">             else if (m_inlineStackTop-&gt;m_profiledBlock-&gt;likelyToTakeSlowCase(m_currentIndex)
</span><span class="cx">                 || m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, NegativeZero))
</span><span class="cx">                 node-&gt;mergeFlags(NodeMayNegZeroInBaseline);
</span><span class="lines">@@ -934,7 +934,7 @@
</span><span class="cx">         ASSERT(node-&gt;op() == ArithDiv);
</span><span class="cx">         
</span><span class="cx">         if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow))
</span><del>-            node-&gt;mergeFlags(NodeMayOverflowInDFG);
</del><ins>+            node-&gt;mergeFlags(NodeMayOverflowInt32InDFG);
</ins><span class="cx">         if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, NegativeZero))
</span><span class="cx">             node-&gt;mergeFlags(NodeMayNegZeroInDFG);
</span><span class="cx">         
</span><span class="lines">@@ -948,7 +948,7 @@
</span><span class="cx">             return node;
</span><span class="cx">         
</span><span class="cx">         // FIXME: It might be possible to make this more granular.
</span><del>-        node-&gt;mergeFlags(NodeMayOverflowInBaseline | NodeMayNegZeroInBaseline);
</del><ins>+        node-&gt;mergeFlags(NodeMayOverflowInt32InBaseline | NodeMayNegZeroInBaseline);
</ins><span class="cx">         
</span><span class="cx">         return node;
</span><span class="cx">     }
</span><span class="lines">@@ -2010,7 +2010,7 @@
</span><span class="cx">         insertChecks();
</span><span class="cx">         Node* node = addToGraph(ArithAbs, get(virtualRegisterForArgument(1, registerOffset)));
</span><span class="cx">         if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow))
</span><del>-            node-&gt;mergeFlags(NodeMayOverflowInDFG);
</del><ins>+            node-&gt;mergeFlags(NodeMayOverflowInt32InDFG);
</ins><span class="cx">         set(VirtualRegister(resultOperand), node);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeFlagscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp (194422 => 194423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp        2015-12-27 02:24:29 UTC (rev 194422)
+++ trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp        2015-12-27 06:27:03 UTC (rev 194423)
</span><span class="lines">@@ -84,13 +84,13 @@
</span><span class="cx">         if (flags &amp; NodeBytecodeUsesAsOther)
</span><span class="cx">             out.print(comma, &quot;UseAsOther&quot;);
</span><span class="cx">     }
</span><del>-    
-    if (flags &amp; NodeMayOverflowInBaseline)
-        out.print(comma, &quot;MayOverflowInBaseline&quot;);
-    
-    if (flags &amp; NodeMayOverflowInDFG)
-        out.print(comma, &quot;MayOverflowInDFG&quot;);
-    
</del><ins>+
+    if (flags &amp; NodeMayOverflowInt32InBaseline)
+        out.print(comma, &quot;MayOverflowInt32InBaseline&quot;);
+
+    if (flags &amp; NodeMayOverflowInt32InDFG)
+        out.print(comma, &quot;MayOverflowInt32InDFG&quot;);
+
</ins><span class="cx">     if (flags &amp; NodeMayNegZeroInBaseline)
</span><span class="cx">         out.print(comma, &quot;MayNegZeroInBaseline&quot;);
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeFlagsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.h (194422 => 194423)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.h        2015-12-27 02:24:29 UTC (rev 194422)
+++ trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.h        2015-12-27 06:27:03 UTC (rev 194423)
</span><span class="lines">@@ -49,8 +49,8 @@
</span><span class="cx"> // 0x0020 and 0x0040 are free.
</span><span class="cx">                                 
</span><span class="cx"> #define NodeBehaviorMask                 0x0780
</span><del>-#define NodeMayOverflowInBaseline        0x0080
-#define NodeMayOverflowInDFG             0x0100
</del><ins>+#define NodeMayOverflowInt32InBaseline   0x0080
+#define NodeMayOverflowInt32InDFG        0x0100
</ins><span class="cx"> #define NodeMayNegZeroInBaseline         0x0200
</span><span class="cx"> #define NodeMayNegZeroInDFG              0x0400
</span><span class="cx">                                 
</span><span class="lines">@@ -94,18 +94,18 @@
</span><span class="cx">     AllRareCases
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static inline bool nodeMayOverflow(NodeFlags flags, RareCaseProfilingSource source)
</del><ins>+static inline bool nodeMayOverflowInt32(NodeFlags flags, RareCaseProfilingSource source)
</ins><span class="cx"> {
</span><span class="cx">     NodeFlags mask = 0;
</span><span class="cx">     switch (source) {
</span><span class="cx">     case BaselineRareCase:
</span><del>-        mask = NodeMayOverflowInBaseline;
</del><ins>+        mask = NodeMayOverflowInt32InBaseline;
</ins><span class="cx">         break;
</span><span class="cx">     case DFGRareCase:
</span><del>-        mask = NodeMayOverflowInDFG;
</del><ins>+        mask = NodeMayOverflowInt32InDFG;
</ins><span class="cx">         break;
</span><span class="cx">     case AllRareCases:
</span><del>-        mask = NodeMayOverflowInBaseline | NodeMayOverflowInDFG;
</del><ins>+        mask = NodeMayOverflowInt32InBaseline | NodeMayOverflowInt32InDFG;
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx">     return !!(flags &amp; mask);
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> 
</span><span class="cx"> static inline bool nodeCanSpeculateInt32(NodeFlags flags, RareCaseProfilingSource source)
</span><span class="cx"> {
</span><del>-    if (nodeMayOverflow(flags, source))
</del><ins>+    if (nodeMayOverflowInt32(flags, source))
</ins><span class="cx">         return !bytecodeUsesAsNumber(flags);
</span><span class="cx">     
</span><span class="cx">     if (nodeMayNegZero(flags, source))
</span></span></pre>
</div>
</div>

</body>
</html>