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()) {