Unreviewed, roll out r208811. It's not sound.
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2016 23:57:05 +0000 (23:57 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2016 23:57:05 +0000 (23:57 +0000)
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::mutatorFence):
(JSC::FTL::DFG::LowerDFGToB3::setButterfly):
(JSC::FTL::DFG::LowerDFGToB3::splatWordsIfMutatorIsFenced): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208822 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

index 29d0a1c..aaa78e4 100644 (file)
@@ -1,3 +1,16 @@
+2016-11-16  Filip Pizlo  <fpizlo@apple.com>
+
+        Unreviewed, roll out r208811. It's not sound.
+
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
+        (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
+        (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
+        (JSC::FTL::DFG::LowerDFGToB3::allocateObject):
+        (JSC::FTL::DFG::LowerDFGToB3::mutatorFence):
+        (JSC::FTL::DFG::LowerDFGToB3::setButterfly):
+        (JSC::FTL::DFG::LowerDFGToB3::splatWordsIfMutatorIsFenced): Deleted.
+
 2016-11-16  Keith Miller  <keith_miller@apple.com>
 
         Wasm function parser should use template functions for each binary and unary opcode
 2016-11-16  Keith Miller  <keith_miller@apple.com>
 
         Wasm function parser should use template functions for each binary and unary opcode
index c18c09e..9247e44 100644 (file)
@@ -8134,7 +8134,7 @@ private:
                 
                 ValueFromBlock haveButterfly = m_out.anchor(fastButterflyValue);
                 
                 
                 ValueFromBlock haveButterfly = m_out.anchor(fastButterflyValue);
                 
-                splatWordsIfMutatorIsFenced(
+                splatWords(
                     fastButterflyValue,
                     m_out.constInt32(-structure->outOfLineCapacity() - 1),
                     m_out.constInt32(-1),
                     fastButterflyValue,
                     m_out.constInt32(-structure->outOfLineCapacity() - 1),
                     m_out.constInt32(-1),
@@ -8960,25 +8960,6 @@ private:
         splatWords(butterfly, begin, end, hole, heap->atAnyIndex());
     }
     
         splatWords(butterfly, begin, end, hole, heap->atAnyIndex());
     }
     
-    void splatWordsIfMutatorIsFenced(LValue base, LValue begin, LValue end, LValue value, const AbstractHeap& heap)
-    {
-        LBasicBlock slowPath = m_out.newBlock();
-        LBasicBlock continuation = m_out.newBlock();
-        
-        LBasicBlock lastNext = m_out.insertNewBlocksBefore(slowPath);
-        
-        m_out.branch(
-            m_out.load8ZeroExt32(m_out.absolute(vm().heap.addressOfMutatorShouldBeFenced())),
-            rarely(slowPath), usually(continuation));
-        
-        m_out.appendTo(slowPath, continuation);
-        
-        splatWords(base, begin, end, value, heap);
-        m_out.jump(continuation);
-        
-        m_out.appendTo(continuation, lastNext);
-    }
-    
     void splatWords(LValue base, LValue begin, LValue end, LValue value, const AbstractHeap& heap)
     {
         const uint64_t unrollingLimit = 10;
     void splatWords(LValue base, LValue begin, LValue end, LValue value, const AbstractHeap& heap)
     {
         const uint64_t unrollingLimit = 10;
@@ -9032,7 +9013,7 @@ private:
         
         LValue result = allocatePropertyStorageWithSizeImpl(initialOutOfLineCapacity);
 
         
         LValue result = allocatePropertyStorageWithSizeImpl(initialOutOfLineCapacity);
 
-        splatWordsIfMutatorIsFenced(
+        splatWords(
             result,
             m_out.constInt32(-initialOutOfLineCapacity - 1), m_out.constInt32(-1),
             m_out.int64Zero, m_heaps.properties.atAnyNumber());
             result,
             m_out.constInt32(-initialOutOfLineCapacity - 1), m_out.constInt32(-1),
             m_out.int64Zero, m_heaps.properties.atAnyNumber());
@@ -9065,7 +9046,7 @@ private:
             m_out.storePtr(loaded, m_out.address(m_heaps.properties.atAnyNumber(), result, offset));
         }
         
             m_out.storePtr(loaded, m_out.address(m_heaps.properties.atAnyNumber(), result, offset));
         }
         
-        splatWordsIfMutatorIsFenced(
+        splatWords(
             result,
             m_out.constInt32(-newSize - 1), m_out.constInt32(-oldSize - 1),
             m_out.int64Zero, m_heaps.properties.atAnyNumber());
             result,
             m_out.constInt32(-newSize - 1), m_out.constInt32(-oldSize - 1),
             m_out.int64Zero, m_heaps.properties.atAnyNumber());
@@ -9945,7 +9926,7 @@ private:
         LValue allocator, Structure* structure, LValue butterfly, LBasicBlock slowPath)
     {
         LValue result = allocateCell(allocator, structure, slowPath);
         LValue allocator, Structure* structure, LValue butterfly, LBasicBlock slowPath)
     {
         LValue result = allocateCell(allocator, structure, slowPath);
-        splatWordsIfMutatorIsFenced(
+        splatWords(
             result,
             m_out.constInt32(JSFinalObject::offsetOfInlineStorage() / 8),
             m_out.constInt32(JSFinalObject::offsetOfInlineStorage() / 8 + structure->inlineCapacity()),
             result,
             m_out.constInt32(JSFinalObject::offsetOfInlineStorage() / 8),
             m_out.constInt32(JSFinalObject::offsetOfInlineStorage() / 8 + structure->inlineCapacity()),