Title: [114570] trunk/Source/_javascript_Core
Revision
114570
Author
[email protected]
Date
2012-04-18 15:31:54 -0700 (Wed, 18 Apr 2012)

Log Message

JSVALUE32_64 should be able to perform division on ARM without crashing, and variables
forced double should not be scrambled when performing OSR entry
https://bugs.webkit.org/show_bug.cgi?id=84272

Reviewed by Geoff Garen.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (114569 => 114570)


--- trunk/Source/_javascript_Core/ChangeLog	2012-04-18 22:29:02 UTC (rev 114569)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-04-18 22:31:54 UTC (rev 114570)
@@ -1,3 +1,16 @@
+2012-04-18  Filip Pizlo  <[email protected]>
+
+        JSVALUE32_64 should be able to perform division on ARM without crashing, and variables
+        forced double should not be scrambled when performing OSR entry
+        https://bugs.webkit.org/show_bug.cgi?id=84272
+
+        Reviewed by Geoff Garen.
+
+        * dfg/DFGFixupPhase.cpp:
+        (JSC::DFG::FixupPhase::fixupNode):
+        * dfg/DFGOSREntry.cpp:
+        (JSC::DFG::prepareOSREntry):
+
 2012-04-18  Don Olmstead  <[email protected]> 
 
         _javascript_Core.gypi not current

Modified: trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp (114569 => 114570)


--- trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2012-04-18 22:29:02 UTC (rev 114569)
+++ trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2012-04-18 22:31:54 UTC (rev 114570)
@@ -250,7 +250,6 @@
         case ArithMin:
         case ArithMax:
         case ArithMul:
-        case ArithDiv:
         case ArithMod: {
             if (Node::shouldSpeculateInteger(m_graph[node.child1()], m_graph[node.child2()])
                 && node.canSpeculateInteger())
@@ -260,6 +259,16 @@
             break;
         }
             
+        case ArithDiv: {
+            if (isX86()
+                && Node::shouldSpeculateInteger(m_graph[node.child1()], m_graph[node.child2()])
+                && node.canSpeculateInteger())
+                break;
+            fixDoubleEdge(0);
+            fixDoubleEdge(1);
+            break;
+        }
+            
         case ArithAbs: {
             if (m_graph[node.child1()].shouldSpeculateInteger()
                 && node.canSpeculateInteger())

Modified: trunk/Source/_javascript_Core/dfg/DFGOSREntry.cpp (114569 => 114570)


--- trunk/Source/_javascript_Core/dfg/DFGOSREntry.cpp	2012-04-18 22:29:02 UTC (rev 114569)
+++ trunk/Source/_javascript_Core/dfg/DFGOSREntry.cpp	2012-04-18 22:31:54 UTC (rev 114570)
@@ -141,13 +141,11 @@
     dataLog("    OSR should succeed.\n");
 #endif
     
-#if USE(JSVALUE64)
     // 3) Perform data format conversions.
     for (size_t local = 0; local < entry->m_expectedValues.numberOfLocals(); ++local) {
         if (entry->m_localsForcedDouble.get(local))
             *bitwise_cast<double*>(exec->registers() + local) = exec->registers()[local].jsValue().asNumber();
     }
-#endif
     
     // 4) Fix the call frame.
     
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to