Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (183200 => 183201)
--- trunk/Source/_javascript_Core/ChangeLog 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/ChangeLog 2015-04-23 19:25:10 UTC (rev 183201)
@@ -1,3 +1,56 @@
+2015-04-23 Filip Pizlo <[email protected]>
+
+ Rename HardPhantom to MustGenerate.
+
+ Rubber stamped by Geoffrey Garen.
+
+ We are steadily moving towards Phantom just being a backend hack in the DFG. HardPhantom
+ is more than that; it's a utility for forcing the execution of otherwise killable nodes.
+ NodeMustGenerate is the flag we use to indicate that something isn't killable. So this
+ node should just be called MustGenerate.
+
+ * dfg/DFGAbstractInterpreterInlines.h:
+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+ * dfg/DFGArgumentsEliminationPhase.cpp:
+ * dfg/DFGClobberize.h:
+ (JSC::DFG::clobberize):
+ * dfg/DFGDCEPhase.cpp:
+ (JSC::DFG::DCEPhase::run):
+ * dfg/DFGDoesGC.cpp:
+ (JSC::DFG::doesGC):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupNode):
+ (JSC::DFG::FixupPhase::tryToRelaxRepresentation):
+ * dfg/DFGIntegerCheckCombiningPhase.cpp:
+ (JSC::DFG::IntegerCheckCombiningPhase::insertMustAdd):
+ * dfg/DFGMayExit.cpp:
+ (JSC::DFG::mayExit):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::willHaveCodeGenOrOSR):
+ * dfg/DFGNodeType.h:
+ * dfg/DFGObjectAllocationSinkingPhase.cpp:
+ (JSC::DFG::ObjectAllocationSinkingPhase::handleNode):
+ * dfg/DFGPhantomCanonicalizationPhase.cpp:
+ (JSC::DFG::PhantomCanonicalizationPhase::run):
+ * dfg/DFGPhantomRemovalPhase.cpp:
+ (JSC::DFG::PhantomRemovalPhase::run):
+ * dfg/DFGPredictionPropagationPhase.cpp:
+ (JSC::DFG::PredictionPropagationPhase::propagate):
+ * dfg/DFGSafeToExecute.h:
+ (JSC::DFG::safeToExecute):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGTypeCheckHoistingPhase.cpp:
+ (JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
+ (JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
+ * dfg/DFGVarargsForwardingPhase.cpp:
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile):
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::LowerDFGToLLVM::compileNode):
+
2015-04-23 Jordan Harband <[email protected]>
Implement `Object.assign`
Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h 2015-04-23 19:25:10 UTC (rev 183201)
@@ -2068,7 +2068,7 @@
case ProfileType:
case ProfileControlFlow:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case CountExecution:
case CheckTierUpInLoop:
case CheckTierUpAtReturn:
Modified: trunk/Source/_javascript_Core/dfg/DFGArgumentsEliminationPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGArgumentsEliminationPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGArgumentsEliminationPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -161,7 +161,7 @@
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
case MovHint:
case PutHint:
break;
Modified: trunk/Source/_javascript_Core/dfg/DFGClobberize.h (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGClobberize.h 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGClobberize.h 2015-04-23 19:25:10 UTC (rev 183201)
@@ -115,7 +115,7 @@
case Identity:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Check:
case ExtractOSREntryLocal:
case CheckStructureImmediate:
Modified: trunk/Source/_javascript_Core/dfg/DFGDCEPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGDCEPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGDCEPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -71,7 +71,7 @@
cleanVariables(m_graph.m_arguments);
}
- // Just do a basic HardPhantom/Phantom/Check clean-up.
+ // Just do a basic MustGenerate/Phantom/Check clean-up.
for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) {
BasicBlock* block = m_graph.block(blockIndex);
if (!block)
@@ -82,7 +82,7 @@
Node* node = block->at(sourceIndex++);
switch (node->op()) {
case Check:
- case HardPhantom:
+ case MustGenerate:
case Phantom:
if (node->children.isEmpty())
continue;
Modified: trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -55,7 +55,7 @@
case MovHint:
case ZombieHint:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Upsilon:
case Phi:
case Flush:
Modified: trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -1027,7 +1027,7 @@
case ConstantStoragePointer:
case DoubleAsInt32:
case ValueToInt32:
- case HardPhantom: // HardPhantom would be trivial to handle but anyway we assert that we won't see it here yet.
+ case MustGenerate: // MustGenerate would be trivial to handle but anyway we assert that we won't see it here yet.
case DoubleRep:
case ValueRep:
case Int52Rep:
@@ -2011,7 +2011,7 @@
case MovHint:
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
DFG_NODE_DO_TO_CHILDREN(m_graph, m_currentNode, fixEdgeRepresentation);
break;
Modified: trunk/Source/_javascript_Core/dfg/DFGIntegerCheckCombiningPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGIntegerCheckCombiningPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGIntegerCheckCombiningPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -390,7 +390,7 @@
{
Node* result = insertAdd(nodeIndex, origin, source, addend);
m_insertionSet.insertNode(
- nodeIndex, SpecNone, HardPhantom, origin, result->defaultEdge());
+ nodeIndex, SpecNone, MustGenerate, origin, result->defaultEdge());
return result;
}
Modified: trunk/Source/_javascript_Core/dfg/DFGMayExit.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGMayExit.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGMayExit.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -71,7 +71,7 @@
case Flush:
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
case GetLocal:
case LoopHint:
case Phi:
Modified: trunk/Source/_javascript_Core/dfg/DFGNode.h (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGNode.h 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGNode.h 2015-04-23 19:25:10 UTC (rev 183201)
@@ -1543,7 +1543,7 @@
case ZombieHint:
return true;
case Phantom:
- case HardPhantom:
+ case MustGenerate:
return child1().useKindUnchecked() != UntypedUse || child2().useKindUnchecked() != UntypedUse || child3().useKindUnchecked() != UntypedUse;
default:
return shouldGenerate();
Modified: trunk/Source/_javascript_Core/dfg/DFGNodeType.h (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGNodeType.h 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGNodeType.h 2015-04-23 19:25:10 UTC (rev 183201)
@@ -66,7 +66,7 @@
macro(MovHint, NodeMustGenerate) \
macro(ZombieHint, NodeMustGenerate) \
macro(Phantom, NodeMustGenerate) \
- macro(HardPhantom, NodeMustGenerate) /* Like Phantom, but we never remove any of its children. */ \
+ macro(MustGenerate, NodeMustGenerate) /* Utility node for making soem not-usually-NodeMustGenerate node become like NodeMustGenerate. */ \
macro(Check, NodeMustGenerate) /* Used if we want just a type check but not liveness. Non-checking uses will be removed. */\
macro(Upsilon, NodeRelevantToOSR) \
macro(Phi, NodeRelevantToOSR) \
Modified: trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -768,7 +768,7 @@
case MovHint:
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
case StoreBarrier:
case StoreBarrierWithNullCheck:
case PutHint:
Modified: trunk/Source/_javascript_Core/dfg/DFGPhantomCanonicalizationPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGPhantomCanonicalizationPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGPhantomCanonicalizationPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -38,7 +38,7 @@
namespace JSC { namespace DFG {
static const NodeFlags NodeNeedsPhantom = NodeMiscFlag1;
-static const NodeFlags NodeNeedsHardPhantom = NodeMiscFlag2;
+static const NodeFlags NodeNeedsMustGenerate = NodeMiscFlag2;
class PhantomCanonicalizationPhase : public Phase {
public:
@@ -51,7 +51,7 @@
{
ASSERT(m_graph.m_form == SSA);
- m_graph.clearFlagsOnAllNodes(NodeNeedsPhantom | NodeNeedsHardPhantom | NodeRelevantToOSR);
+ m_graph.clearFlagsOnAllNodes(NodeNeedsPhantom | NodeNeedsMustGenerate | NodeRelevantToOSR);
m_graph.mergeRelevantToOSR();
for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) {
@@ -63,13 +63,13 @@
unsigned targetIndex = 0;
while (sourceIndex < block->size()) {
Node* node = block->at(sourceIndex++);
- if (node->op() == HardPhantom || node->op() == Phantom || node->op() == Check) {
+ if (node->op() == MustGenerate || node->op() == Phantom || node->op() == Check) {
for (unsigned i = 0; i < AdjacencyList::Size; ++i) {
Edge edge = node->children.child(i);
if (!edge)
break;
- if (node->op() == HardPhantom)
- edge->mergeFlags(NodeNeedsHardPhantom);
+ if (node->op() == MustGenerate)
+ edge->mergeFlags(NodeNeedsMustGenerate);
if ((edge->flags() & NodeRelevantToOSR) && node->op() == Phantom) {
// A Phantom on a node that is RelevantToOSR means that we need to keep
// a Phantom on this node instead of just having a Check.
@@ -101,9 +101,9 @@
for (unsigned nodeIndex = 0; nodeIndex < block->size(); ++nodeIndex) {
Node* node = block->at(nodeIndex);
- if (node->flags() & NodeNeedsHardPhantom) {
+ if (node->flags() & NodeNeedsMustGenerate) {
insertionSet.insertNode(
- nodeIndex + 1, SpecNone, HardPhantom, node->origin, node->defaultEdge());
+ nodeIndex + 1, SpecNone, MustGenerate, node->origin, node->defaultEdge());
} else if (node->flags() & NodeNeedsPhantom) {
insertionSet.insertNode(
nodeIndex + 1, SpecNone, Phantom, node->origin, node->defaultEdge());
Modified: trunk/Source/_javascript_Core/dfg/DFGPhantomRemovalPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGPhantomRemovalPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGPhantomRemovalPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -147,7 +147,7 @@
break;
}
- case HardPhantom: {
+ case MustGenerate: {
if (node->children.isEmpty()) {
m_graph.m_allocator.free(node);
continue;
Modified: trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGPredictionPropagationPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -534,7 +534,7 @@
case InvalidationPoint:
case CheckInBounds:
case ValueToInt32:
- case HardPhantom:
+ case MustGenerate:
case DoubleRep:
case ValueRep:
case Int52Rep:
Modified: trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGSafeToExecute.h 2015-04-23 19:25:10 UTC (rev 183201)
@@ -125,7 +125,7 @@
case MovHint:
case ZombieHint:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Upsilon:
case Phi:
case Flush:
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -4617,7 +4617,7 @@
break;
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Check:
DFG_NODE_DO_TO_CHILDREN(m_jit.graph(), node, speculate);
noResult(node);
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -4334,7 +4334,7 @@
break;
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Check:
DFG_NODE_DO_TO_CHILDREN(m_jit.graph(), node, speculate);
noResult(node);
Modified: trunk/Source/_javascript_Core/dfg/DFGTypeCheckHoistingPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGTypeCheckHoistingPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGTypeCheckHoistingPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -244,7 +244,7 @@
case GetIndexedPropertyStorage:
case GetTypedArrayByteOffset:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case MovHint:
case MultiGetByOffset:
case MultiPutByOffset:
@@ -337,7 +337,7 @@
case GetArrayLength:
case GetIndexedPropertyStorage:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case MovHint:
case MultiGetByOffset:
case MultiPutByOffset:
Modified: trunk/Source/_javascript_Core/dfg/DFGVarargsForwardingPhase.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/dfg/DFGVarargsForwardingPhase.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/dfg/DFGVarargsForwardingPhase.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -92,7 +92,7 @@
switch (node->op()) {
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
case MovHint:
case PutHint:
case LoadVarargs:
@@ -214,7 +214,7 @@
switch (node->op()) {
case Phantom:
case Check:
- case HardPhantom:
+ case MustGenerate:
case MovHint:
case PutHint:
// We don't need to change anything with these.
Modified: trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -52,7 +52,7 @@
case MovHint:
case ZombieHint:
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Flush:
case PhantomLocal:
case SetArgument:
Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (183200 => 183201)
--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2015-04-23 18:58:04 UTC (rev 183200)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2015-04-23 19:25:10 UTC (rev 183201)
@@ -464,7 +464,7 @@
compilePutStack();
break;
case Phantom:
- case HardPhantom:
+ case MustGenerate:
case Check:
compilePhantom();
break;