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

Reply via email to