Title: [184368] trunk/Source/_javascript_Core
Revision
184368
Author
[email protected]
Date
2015-05-14 21:14:39 -0700 (Thu, 14 May 2015)

Log Message

Remove StoreBarrierWithNullCheck, nobody ever generates this.
        
Rubber stamped by Benjamin Poulain and Michael Saboff.

If we did bring something like this back in the future, we would just use UntypedUse instead
of CellUse to indicate that this is what we want.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::isStoreBarrier):
* dfg/DFGNodeType.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
(JSC::DFG::ObjectAllocationSinkingPhase::lowerNonReadingOperationsOnPhantomAllocations):
(JSC::DFG::ObjectAllocationSinkingPhase::handleNode):
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileStoreBarrier):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileStoreBarrierWithNullCheck): Deleted.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (184367 => 184368)


--- trunk/Source/_javascript_Core/ChangeLog	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-05-15 04:14:39 UTC (rev 184368)
@@ -1,5 +1,44 @@
 2015-05-14  Filip Pizlo  <[email protected]>
 
+        Remove StoreBarrierWithNullCheck, nobody ever generates this.
+        
+        Rubber stamped by Benjamin Poulain and Michael Saboff.
+
+        If we did bring something like this back in the future, we would just use UntypedUse instead
+        of CellUse to indicate that this is what we want.
+
+        * dfg/DFGAbstractInterpreterInlines.h:
+        (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+        * dfg/DFGClobberize.h:
+        (JSC::DFG::clobberize):
+        * dfg/DFGDoesGC.cpp:
+        (JSC::DFG::doesGC):
+        * dfg/DFGFixupPhase.cpp:
+        (JSC::DFG::FixupPhase::fixupNode):
+        * dfg/DFGNode.h:
+        (JSC::DFG::Node::isStoreBarrier):
+        * dfg/DFGNodeType.h:
+        * dfg/DFGObjectAllocationSinkingPhase.cpp:
+        (JSC::DFG::ObjectAllocationSinkingPhase::lowerNonReadingOperationsOnPhantomAllocations):
+        (JSC::DFG::ObjectAllocationSinkingPhase::handleNode):
+        * dfg/DFGPredictionPropagationPhase.cpp:
+        (JSC::DFG::PredictionPropagationPhase::propagate):
+        * dfg/DFGSafeToExecute.h:
+        (JSC::DFG::safeToExecute):
+        * dfg/DFGSpeculativeJIT.cpp:
+        (JSC::DFG::SpeculativeJIT::compileStoreBarrier):
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * ftl/FTLCapabilities.cpp:
+        (JSC::FTL::canCompile):
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::LowerDFGToLLVM::compileNode):
+        (JSC::FTL::LowerDFGToLLVM::compileStoreBarrierWithNullCheck): Deleted.
+
+2015-05-14  Filip Pizlo  <[email protected]>
+
         PutGlobalVar should reference the global object it's storing into
         https://bugs.webkit.org/show_bug.cgi?id=145036
 

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2015-05-15 04:14:39 UTC (rev 184368)
@@ -2270,10 +2270,6 @@
         break;
     }
 
-    case StoreBarrierWithNullCheck: {
-        break;
-    }
-
     case CheckTierUpAndOSREnter:
     case LoopHint:
     case ZombieHint:

Modified: trunk/Source/_javascript_Core/dfg/DFGClobberize.h (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGClobberize.h	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGClobberize.h	2015-05-15 04:14:39 UTC (rev 184368)
@@ -293,7 +293,6 @@
     case ProfileType:
     case ProfileControlFlow:
     case StoreBarrier:
-    case StoreBarrierWithNullCheck:
     case PutHint:
         write(SideState);
         return;

Modified: trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -161,7 +161,6 @@
     case CheckTierUpAndOSREnter:
     case LoopHint:
     case StoreBarrier:
-    case StoreBarrierWithNullCheck:
     case InvalidationPoint:
     case NotifyWrite:
     case CheckInBounds:

Modified: trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -1299,7 +1299,6 @@
         case ExtractOSREntryLocal:
         case LoopHint:
         case StoreBarrier:
-        case StoreBarrierWithNullCheck:
         case MovHint:
         case ZombieHint:
         case BottomValue:

Modified: trunk/Source/_javascript_Core/dfg/DFGNode.h (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGNode.h	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGNode.h	2015-05-15 04:14:39 UTC (rev 184368)
@@ -830,13 +830,7 @@
 
     bool isStoreBarrier()
     {
-        switch (op()) {
-        case StoreBarrier:
-        case StoreBarrierWithNullCheck:
-            return true;
-        default:
-            return false;
-        }
+        return op() == StoreBarrier;
     }
 
     bool hasIdentifier()

Modified: trunk/Source/_javascript_Core/dfg/DFGNodeType.h (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGNodeType.h	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGNodeType.h	2015-05-15 04:14:39 UTC (rev 184368)
@@ -323,7 +323,6 @@
     macro(CheckWatchdogTimer, NodeMustGenerate) \
     /* Write barriers ! */\
     macro(StoreBarrier, NodeMustGenerate) \
-    macro(StoreBarrierWithNullCheck, NodeMustGenerate) \
     \
     /* For-in enumeration opcodes */\
     macro(GetEnumerableLength, NodeMustGenerate | NodeResultJS) \

Modified: trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -612,8 +612,7 @@
                     break;
                 }
 
-                case StoreBarrier:
-                case StoreBarrierWithNullCheck: {
+                case StoreBarrier: {
                     Node* target = node->child1().node();
                     if (m_sinkCandidates.contains(target)) {
                         ASSERT(target->isPhantomAllocation());
@@ -856,7 +855,6 @@
         case MovHint:
         case PutHint:
         case StoreBarrier:
-        case StoreBarrierWithNullCheck:
             break;
 
         case PutStructure:

Modified: trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -618,7 +618,6 @@
 #ifndef NDEBUG
         // These get ignored because they don't return anything.
         case StoreBarrier:
-        case StoreBarrierWithNullCheck:
         case PutByValDirect:
         case PutByVal:
         case PutClosureVar:

Modified: trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h	2015-05-15 04:14:39 UTC (rev 184368)
@@ -248,7 +248,6 @@
     case CheckTierUpAndOSREnter:
     case LoopHint:
     case StoreBarrier:
-    case StoreBarrierWithNullCheck:
     case InvalidationPoint:
     case NotifyWrite:
     case CheckInBounds:

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -6109,37 +6109,14 @@
 #if ENABLE(GGC)
 void SpeculativeJIT::compileStoreBarrier(Node* node)
 {
-    switch (node->op()) {
-    case StoreBarrier: {
-        SpeculateCellOperand base(this, node->child1());
-        GPRTemporary scratch1(this);
-        GPRTemporary scratch2(this);
+    ASSERT(node->op() == StoreBarrier);
     
-        writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
-        break;
-    }
-
-    case StoreBarrierWithNullCheck: {
-        JSValueOperand base(this, node->child1());
-        GPRTemporary scratch1(this);
-        GPRTemporary scratch2(this);
+    SpeculateCellOperand base(this, node->child1());
+    GPRTemporary scratch1(this);
+    GPRTemporary scratch2(this);
     
-#if USE(JSVALUE64)
-        JITCompiler::Jump isNull = m_jit.branchTest64(JITCompiler::Zero, base.gpr());
-        writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
-#else
-        JITCompiler::Jump isNull = m_jit.branch32(JITCompiler::Equal, base.tagGPR(), TrustedImm32(JSValue::EmptyValueTag));
-        writeBarrier(base.payloadGPR(), scratch1.gpr(), scratch2.gpr());
-#endif
-        isNull.link(&m_jit);
-        break;
-    }
+    writeBarrier(base.gpr(), scratch1.gpr(), scratch2.gpr());
 
-    default:
-        RELEASE_ASSERT_NOT_REACHED();
-        break;
-    }
-
     noResult(node);
 }
 

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -4251,8 +4251,7 @@
         compileIn(node);
         break;
 
-    case StoreBarrier:
-    case StoreBarrierWithNullCheck: {
+    case StoreBarrier: {
         compileStoreBarrier(node);
         break;
     }

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -4316,8 +4316,7 @@
         DFG_CRASH(m_jit.graph(), node, "Unexpected Unreachable node");
         break;
 
-    case StoreBarrier:
-    case StoreBarrierWithNullCheck: {
+    case StoreBarrier: {
         compileStoreBarrier(node);
         break;
     }

Modified: trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -124,7 +124,6 @@
     case GetTypedArrayByteOffset:
     case NotifyWrite:
     case StoreBarrier:
-    case StoreBarrierWithNullCheck:
     case Call:
     case Construct:
     case CallVarargs:

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (184367 => 184368)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2015-05-15 03:51:52 UTC (rev 184367)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2015-05-15 04:14:39 UTC (rev 184368)
@@ -818,9 +818,6 @@
         case StoreBarrier:
             compileStoreBarrier();
             break;
-        case StoreBarrierWithNullCheck:
-            compileStoreBarrierWithNullCheck();
-            break;
         case HasIndexedProperty:
             compileHasIndexedProperty();
             break;
@@ -4901,22 +4898,6 @@
         emitStoreBarrier(lowCell(m_node->child1()));
     }
 
-    void compileStoreBarrierWithNullCheck()
-    {
-#if ENABLE(GGC)
-        LBasicBlock isNotNull = FTL_NEW_BLOCK(m_out, ("Store barrier with null check value not null"));
-        LBasicBlock continuation = FTL_NEW_BLOCK(m_out, ("Store barrier continuation"));
-
-        LValue base = lowJSValue(m_node->child1());
-        m_out.branch(m_out.isZero64(base), unsure(continuation), unsure(isNotNull));
-        LBasicBlock lastNext = m_out.appendTo(isNotNull, continuation);
-        emitStoreBarrier(base);
-        m_out.appendTo(continuation, lastNext);
-#else
-        speculate(m_node->child1());
-#endif
-    }
-    
     void compileHasIndexedProperty()
     {
         switch (m_node->arrayMode().type()) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to