Title: [97014] trunk/Source/_javascript_Core
Revision
97014
Author
[email protected]
Date
2011-10-08 13:42:13 -0700 (Sat, 08 Oct 2011)

Log Message

JSVALUE32_64 DFG JIT - GetLocal should produce a cell result for Array predictions
https://bugs.webkit.org/show_bug.cgi?id=69699

Patch by Yuqiang Xian <[email protected]> on 2011-10-08
Reviewed by Filip Pizlo.

It should match SetLocal where only payload is stored for array predictions.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (97013 => 97014)


--- trunk/Source/_javascript_Core/ChangeLog	2011-10-08 20:40:03 UTC (rev 97013)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-10-08 20:42:13 UTC (rev 97014)
@@ -1,5 +1,17 @@
 2011-10-08  Yuqiang Xian  <[email protected]>
 
+        JSVALUE32_64 DFG JIT - GetLocal should produce a cell result for Array predictions
+        https://bugs.webkit.org/show_bug.cgi?id=69699
+
+        Reviewed by Filip Pizlo.
+
+        It should match SetLocal where only payload is stored for array predictions.
+
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+
+2011-10-08  Yuqiang Xian  <[email protected]>
+
         JSVALUE32_64 DFG JIT - Bug fixes for Branch and LogicalNot
         https://bugs.webkit.org/show_bug.cgi?id=69702
 

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (97013 => 97014)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2011-10-08 20:40:03 UTC (rev 97013)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2011-10-08 20:42:13 UTC (rev 97014)
@@ -662,6 +662,17 @@
             break;
         }
 
+        if (isArrayPrediction(prediction)) {
+            m_jit.load32(JITCompiler::payloadFor(node.local()), result.gpr());
+
+            // Like cellResult, but don't useChildren - our children are phi nodes,
+            // and don't represent values within this dataflow with virtual registers.
+            VirtualRegister virtualRegister = node.virtualRegister();
+            m_gprs.retain(result.gpr(), virtualRegister, SpillOrderInteger);
+            m_generationInfo[virtualRegister].initCell(m_compileIndex, node.refCount(), result.gpr());
+            break;
+        }
+
         GPRTemporary tag(this);
         m_jit.load32(JITCompiler::payloadFor(node.local()), result.gpr());
         m_jit.load32(JITCompiler::tagFor(node.local()), tag.gpr());
@@ -672,14 +683,7 @@
         m_gprs.retain(result.gpr(), virtualRegister, SpillOrderJS);
         m_gprs.retain(tag.gpr(), virtualRegister, SpillOrderJS);
 
-        DataFormat format;
-        if (isArrayPrediction(prediction))
-            format = DataFormatJSCell;
-        else if (isBooleanPrediction(prediction))
-            format = DataFormatJSBoolean;
-        else
-            format = DataFormatJS;
-
+        DataFormat format = isBooleanPrediction(prediction) ? DataFormatJSBoolean : DataFormatJS;
         m_generationInfo[virtualRegister].initJSValue(m_compileIndex, node.refCount(), tag.gpr(), result.gpr(), format);
         break;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to