Title: [193434] trunk/Source/_javascript_Core
Revision
193434
Author
[email protected]
Date
2015-12-04 12:27:37 -0800 (Fri, 04 Dec 2015)

Log Message

[JSC] Add signExt() to FTLB3Output
https://bugs.webkit.org/show_bug.cgi?id=151853

Patch by Benjamin Poulain <[email protected]> on 2015-12-04
Reviewed by Geoffrey Garen.

Rename signExt() to signExt32To64(). This is just to separate
it explicitly from the remaining signExt() used inside FTLOutput.

Then use the SExt32 for implementing that in B3.

* ftl/FTLB3Output.h:
(JSC::FTL::Output::signExt32To64):
(JSC::FTL::Output::signExt): Deleted.
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileInt52Rep):
(JSC::FTL::DFG::LowerDFGToLLVM::compileGetDirectPname):
(JSC::FTL::DFG::LowerDFGToLLVM::strictInt52ToInt32):
(JSC::FTL::DFG::LowerDFGToLLVM::strictInt52ToJSValue):
(JSC::FTL::DFG::LowerDFGToLLVM::jsValueToStrictInt52):
* ftl/FTLOutput.h:
(JSC::FTL::Output::signExt32To64):
(JSC::FTL::Output::signExt):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (193433 => 193434)


--- trunk/Source/_javascript_Core/ChangeLog	2015-12-04 20:15:14 UTC (rev 193433)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-12-04 20:27:37 UTC (rev 193434)
@@ -1,3 +1,28 @@
+2015-12-04  Benjamin Poulain  <[email protected]>
+
+        [JSC] Add signExt() to FTLB3Output
+        https://bugs.webkit.org/show_bug.cgi?id=151853
+
+        Reviewed by Geoffrey Garen.
+
+        Rename signExt() to signExt32To64(). This is just to separate
+        it explicitly from the remaining signExt() used inside FTLOutput.
+
+        Then use the SExt32 for implementing that in B3.
+
+        * ftl/FTLB3Output.h:
+        (JSC::FTL::Output::signExt32To64):
+        (JSC::FTL::Output::signExt): Deleted.
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileInt52Rep):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileGetDirectPname):
+        (JSC::FTL::DFG::LowerDFGToLLVM::strictInt52ToInt32):
+        (JSC::FTL::DFG::LowerDFGToLLVM::strictInt52ToJSValue):
+        (JSC::FTL::DFG::LowerDFGToLLVM::jsValueToStrictInt52):
+        * ftl/FTLOutput.h:
+        (JSC::FTL::Output::signExt32To64):
+        (JSC::FTL::Output::signExt):
+
 2015-12-04  Joseph Pecoraro  <[email protected]>
 
         Web Inspector: Unskip many inspector/debugger tests

Modified: trunk/Source/_javascript_Core/ftl/FTLB3Output.h (193433 => 193434)


--- trunk/Source/_javascript_Core/ftl/FTLB3Output.h	2015-12-04 20:15:14 UTC (rev 193433)
+++ trunk/Source/_javascript_Core/ftl/FTLB3Output.h	2015-12-04 20:27:37 UTC (rev 193434)
@@ -171,7 +171,7 @@
     static bool hasSensibleDoubleToInt() { CRASH(); }
     LValue sensibleDoubleToInt(LValue) { CRASH(); }
 
-    LValue signExt(LValue value, LType type) { CRASH(); }
+    LValue signExt32To64(LValue value) { return m_block->appendNew<B3::Value>(m_proc, B3::SExt32, origin(), value); }
     LValue zeroExt(LValue value, LType type) { return m_block->appendNew<B3::Value>(m_proc, B3::ZExt32, type, origin(), value); }
     LValue zeroExtPtr(LValue value) { return zeroExt(value, B3::Int64); }
     LValue fpToInt(LValue value, LType type) { CRASH(); }

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (193433 => 193434)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2015-12-04 20:15:14 UTC (rev 193433)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2015-12-04 20:27:37 UTC (rev 193434)
@@ -1274,7 +1274,7 @@
     {
         switch (m_node->child1().useKind()) {
         case Int32Use:
-            setStrictInt52(m_out.signExt(lowInt32(m_node->child1()), m_out.int64));
+            setStrictInt52(m_out.signExt32To64(lowInt32(m_node->child1())));
             return;
             
         case MachineIntUse:
@@ -5807,9 +5807,8 @@
 
         m_out.appendTo(outOfLineLoad, slowCase);
         LValue storage = loadButterflyReadOnly(base);
-        LValue realIndex = m_out.signExt(
-            m_out.neg(m_out.sub(index, m_out.load32(enumerator, m_heaps.JSPropertyNameEnumerator_cachedInlineCapacity))), 
-            m_out.int64);
+        LValue realIndex = m_out.signExt32To64(
+            m_out.neg(m_out.sub(index, m_out.load32(enumerator, m_heaps.JSPropertyNameEnumerator_cachedInlineCapacity))));
         int32_t offsetOfFirstProperty = static_cast<int32_t>(offsetInButterfly(firstOutOfLineOffset)) * sizeof(EncodedJSValue);
         ValueFromBlock outOfLineResult = m_out.anchor(
             m_out.load64(m_out.baseIndex(m_heaps.properties.atAnyNumber(), storage, realIndex, ScaleEight, offsetOfFirstProperty)));
@@ -8342,7 +8341,7 @@
         LValue result = m_out.castToInt32(value);
         FTL_TYPE_CHECK(
             noValue(), edge, SpecInt32,
-            m_out.notEqual(m_out.signExt(result, m_out.int64), value));
+            m_out.notEqual(m_out.signExt32To64(result), value));
         setInt32(edge.node(), result);
         return result;
     }
@@ -8362,7 +8361,7 @@
             
         LValue int32Value = m_out.castToInt32(value);
         m_out.branch(
-            m_out.equal(m_out.signExt(int32Value, m_out.int64), value),
+            m_out.equal(m_out.signExt32To64(int32Value), value),
             unsure(isInt32), unsure(isDouble));
         
         LBasicBlock lastNext = m_out.appendTo(isInt32, isDouble);
@@ -8450,7 +8449,7 @@
         LBasicBlock lastNext = m_out.appendTo(intCase, doubleCase);
             
         ValueFromBlock intToInt52 = m_out.anchor(
-            m_out.signExt(unboxInt32(boxedValue), m_out.int64));
+            m_out.signExt32To64(unboxInt32(boxedValue)));
         m_out.jump(continuation);
             
         m_out.appendTo(doubleCase, continuation);

Modified: trunk/Source/_javascript_Core/ftl/FTLOutput.h (193433 => 193434)


--- trunk/Source/_javascript_Core/ftl/FTLOutput.h	2015-12-04 20:15:14 UTC (rev 193433)
+++ trunk/Source/_javascript_Core/ftl/FTLOutput.h	2015-12-04 20:27:37 UTC (rev 193434)
@@ -211,8 +211,8 @@
 
     static bool hasSensibleDoubleToInt() { return isX86(); }
     LValue sensibleDoubleToInt(LValue);
-    
-    LValue signExt(LValue value, LType type) { return buildSExt(m_builder, value, type); }
+
+    LValue signExt32To64(LValue value) { return signExt(value, int64); }
     LValue zeroExt(LValue value, LType type) { return buildZExt(m_builder, value, type); }
     LValue zeroExtPtr(LValue value) { return zeroExt(value, intPtr); }
     LValue fpToInt(LValue value, LType type) { return buildFPToSI(m_builder, value, type); }
@@ -444,6 +444,9 @@
     LBuilder m_builder;
     LBasicBlock m_block;
     LBasicBlock m_nextBlock;
+
+private:
+    LValue signExt(LValue value, LType type) { return buildSExt(m_builder, value, type); }
 };
 
 inline LValue Output::load8SignExt32(TypedPointer pointer)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to