Title: [97216] trunk/Source/_javascript_Core
- Revision
- 97216
- Author
- [email protected]
- Date
- 2011-10-11 18:53:18 -0700 (Tue, 11 Oct 2011)
Log Message
DFG JIT 32_64 - Fix silentFillGPR for non-integer constants.
https://bugs.webkit.org/show_bug.cgi?id=69890
Reviewed by Oliver Hunt.
Cell constants are currently hitting the valueOfInt32Constant case, there is no constant handling for JSValues.
* dfg/DFGJITCodeGenerator.h:
(JSC::DFG::JITCodeGenerator::silentFillGPR):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (97215 => 97216)
--- trunk/Source/_javascript_Core/ChangeLog 2011-10-12 01:53:01 UTC (rev 97215)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-10-12 01:53:18 UTC (rev 97216)
@@ -1,3 +1,15 @@
+2011-10-11 Gavin Barraclough <[email protected]>
+
+ DFG JIT 32_64 - Fix silentFillGPR for non-integer constants.
+ https://bugs.webkit.org/show_bug.cgi?id=69890
+
+ Reviewed by Oliver Hunt.
+
+ Cell constants are currently hitting the valueOfInt32Constant case, there is no constant handling for JSValues.
+
+ * dfg/DFGJITCodeGenerator.h:
+ (JSC::DFG::JITCodeGenerator::silentFillGPR):
+
2011-10-11 Ryosuke Niwa <[email protected]>
GTK build fix attempt after r97197.
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h (97215 => 97216)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-10-12 01:53:01 UTC (rev 97215)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-10-12 01:53:18 UTC (rev 97216)
@@ -54,7 +54,9 @@
class JITCodeGenerator {
protected:
typedef JITCompiler::TrustedImm32 TrustedImm32;
- typedef MacroAssembler::Imm32 Imm32;
+ typedef JITCompiler::Imm32 Imm32;
+ typedef JITCompiler::TrustedImmPtr TrustedImmPtr;
+ typedef JITCompiler::ImmPtr ImmPtr;
// These constants are used to set priorities for spill order for
// the register allocator.
@@ -336,31 +338,38 @@
ASSERT(info.registerFormat() != DataFormatDouble);
DataFormat registerFormat = info.registerFormat();
-#if USE(JSVALUE64)
if (registerFormat == DataFormatInteger) {
if (node.hasConstant()) {
ASSERT(isInt32Constant(nodeIndex));
m_jit.move(Imm32(valueOfInt32Constant(nodeIndex)), info.gpr());
} else
- m_jit.load32(JITCompiler::addressFor(spillMe), info.gpr());
+ m_jit.load32(JITCompiler::payloadFor(spillMe), info.gpr());
return;
}
+ if (registerFormat == DataFormatCell) {
+ if (node.isConstant()) {
+ JSValue value = valueOfJSConstant(nodeIndex);
+ ASSERT(value.isCell());
+ m_jit.move(ImmPtr(value.asCell()), info.gpr());
+ } else
+ m_jit.loadPtr(JITCompiler::payloadFor(spillMe), info.gpr());
+ return;
+ }
+
+ if (registerFormat == DataFormatStorage)
+ m_jit.loadPtr(JITCompiler::addressFor(spillMe), info.gpr());
+
+ ASSERT(registerFormat & DataFormatJS);
+#if USE(JSVALUE64)
if (node.hasConstant())
m_jit.move(valueOfJSConstantAsImmPtr(nodeIndex), info.gpr());
- else {
- ASSERT(registerFormat & DataFormatJS || registerFormat == DataFormatCell || registerFormat == DataFormatStorage);
+ else
m_jit.loadPtr(JITCompiler::addressFor(spillMe), info.gpr());
- }
-#elif USE(JSVALUE32_64)
- if (registerFormat == DataFormatInteger || registerFormat == DataFormatCell) {
- if (node.isConstant())
- m_jit.move(Imm32(valueOfInt32Constant(nodeIndex)), info.gpr());
- else
- m_jit.load32(JITCompiler::payloadFor(spillMe), info.gpr());
- } else if (registerFormat == DataFormatStorage)
- m_jit.load32(JITCompiler::addressFor(spillMe), info.gpr());
- else
+#else
+ if (node.hasConstant())
+ m_jit.emitLoad(valueOfJSConstant(nodeIndex), info.tagGPR(), info.payloadGPR());
+ else
m_jit.emitLoad(nodeIndex, info.tagGPR(), info.payloadGPR());
#endif
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes