Title: [96875] trunk/Source/_javascript_Core
Revision
96875
Author
oli...@apple.com
Date
2011-10-06 16:48:06 -0700 (Thu, 06 Oct 2011)

Log Message

Write barrier shouldn't allocate temporaries inside control flow
https://bugs.webkit.org/show_bug.cgi?id=69582

Reviewed by Gavin Barraclough.

Reorder the code to avoid spill-related badness.

* dfg/DFGJITCodeGenerator.cpp:
(JSC::DFG::JITCodeGenerator::writeBarrier):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (96874 => 96875)


--- trunk/Source/_javascript_Core/ChangeLog	2011-10-06 23:42:57 UTC (rev 96874)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-10-06 23:48:06 UTC (rev 96875)
@@ -1,3 +1,15 @@
+2011-10-06  Oliver Hunt  <oli...@apple.com>
+
+        Write barrier shouldn't allocate temporaries inside control flow
+        https://bugs.webkit.org/show_bug.cgi?id=69582
+
+        Reviewed by Gavin Barraclough.
+
+        Reorder the code to avoid spill-related badness.
+
+        * dfg/DFGJITCodeGenerator.cpp:
+        (JSC::DFG::JITCodeGenerator::writeBarrier):
+
 2011-10-06  Filip Pizlo  <fpi...@apple.com>
 
         DFG::shouldSpeculate methods are too complicated

Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp (96874 => 96875)


--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp	2011-10-06 23:42:57 UTC (rev 96874)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp	2011-10-06 23:48:06 UTC (rev 96875)
@@ -247,13 +247,6 @@
 #endif
 
 #if ENABLE(GGC)
-    JITCompiler::Jump rhsNotCell;
-    bool hadCellCheck = false;
-    if (!isKnownCell(valueIndex) && !isCellPrediction(m_jit.getPrediction(valueIndex))) {
-        hadCellCheck = true;
-        rhsNotCell = m_jit.branchIfNotCell(valueGPR);
-    }
-
     GPRTemporary temp1;
     GPRTemporary temp2;
     if (scratch1 == InvalidGPRReg) {
@@ -266,8 +259,16 @@
         temp2.adopt(scratchGPR);
         scratch2 = temp2.gpr();
     }
+    
+    JITCompiler::Jump rhsNotCell;
+    bool hadCellCheck = false;
+    if (!isKnownCell(valueIndex) && !isCellPrediction(m_jit.getPrediction(valueIndex))) {
+        hadCellCheck = true;
+        rhsNotCell = m_jit.branchIfNotCell(valueGPR);
+    }
 
     markCellCard(m_jit, ownerGPR, scratch1, scratch2);
+
     if (hadCellCheck)
         rhsNotCell.link(&m_jit);
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to