Title: [157293] trunk/Source/_javascript_Core
Revision
157293
Author
[email protected]
Date
2013-10-10 23:37:33 -0700 (Thu, 10 Oct 2013)

Log Message

FTL shouldn't pass i1's into llvm.webkit.stackmap's
https://bugs.webkit.org/show_bug.cgi?id=122629
<rdar://problem/15203037>

Reviewed by Sam Weinig and Nadav Rotem.
        
LLVM's stackmap support requires that we only pass operands with legal types (i.e. types
that are hardware-representable). i1, which the FTL previously used for Booleans, is not
legal.
        
We have two options: either add support in LLVM to legalize stackmap operands, or add
support to the FTL to legalize stackmap operands. It's easier to fix this in FTL, and
that's what this patch does.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (157292 => 157293)


--- trunk/Source/_javascript_Core/ChangeLog	2013-10-11 06:18:44 UTC (rev 157292)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-10-11 06:37:33 UTC (rev 157293)
@@ -1,3 +1,22 @@
+2013-10-10  Filip Pizlo  <[email protected]>
+
+        FTL shouldn't pass i1's into llvm.webkit.stackmap's
+        https://bugs.webkit.org/show_bug.cgi?id=122629
+        <rdar://problem/15203037>
+
+        Reviewed by Sam Weinig and Nadav Rotem.
+        
+        LLVM's stackmap support requires that we only pass operands with legal types (i.e. types
+        that are hardware-representable). i1, which the FTL previously used for Booleans, is not
+        legal.
+        
+        We have two options: either add support in LLVM to legalize stackmap operands, or add
+        support to the FTL to legalize stackmap operands. It's easier to fix this in FTL, and
+        that's what this patch does.
+
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
+
 2013-10-09  Oliver Hunt  <[email protected]>
 
         Further improve ArrayIterator performance

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (157292 => 157293)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2013-10-11 06:18:44 UTC (rev 157292)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2013-10-11 06:37:33 UTC (rev 157293)
@@ -3442,7 +3442,12 @@
         
         value = m_booleanValues.get(node);
         if (isValid(value)) {
-            addExitArgument(exit, arguments, index, ValueFormatBoolean, value.value());
+            LValue valueToPass;
+            if (Options::ftlOSRExitUsesStackmap())
+                valueToPass = m_out.zeroExt(value.value(), m_out.int32);
+            else
+                valueToPass = value.value();
+            addExitArgument(exit, arguments, index, ValueFormatBoolean, valueToPass);
             return;
         }
         
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to