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