Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (94941 => 94942)
--- trunk/Source/_javascript_Core/ChangeLog 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-09-12 03:42:39 UTC (rev 94942)
@@ -1,3 +1,43 @@
+2011-09-11 Filip Pizlo <[email protected]>
+
+ DFGNode.h has macros that indicate the enabling of a feature, but
+ they do not use the ENABLE() idiom.
+ https://bugs.webkit.org/show_bug.cgi?id=67907
+
+ Reviewed by Oliver Hunt.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::stronglyPredict):
+ (JSC::DFG::ByteCodeParser::parse):
+ * dfg/DFGGraph.cpp:
+ (JSC::DFG::Graph::predictArgumentTypes):
+ * dfg/DFGJITCodeGenerator.cpp:
+ * dfg/DFGJITCodeGenerator.h:
+ * dfg/DFGJITCompiler.cpp:
+ (JSC::DFG::JITCompiler::fillInt32ToInteger):
+ (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
+ (JSC::DFG::JITCompiler::compileBody):
+ (JSC::DFG::JITCompiler::link):
+ * dfg/DFGJITCompiler.h:
+ * dfg/DFGNode.h:
+ * dfg/DFGNonSpeculativeJIT.cpp:
+ (JSC::DFG::NonSpeculativeJIT::compile):
+ * dfg/DFGOperations.cpp:
+ * dfg/DFGOperations.h:
+ * dfg/DFGPropagator.cpp:
+ (JSC::DFG::Propagator::fixpoint):
+ (JSC::DFG::Propagator::propagateNode):
+ (JSC::DFG::Propagator::propagateForward):
+ (JSC::DFG::Propagator::propagateBackward):
+ (JSC::DFG::propagate):
+ * dfg/DFGScoreBoard.h:
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT.h:
+ (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+
2011-09-11 Fumitoshi Ukai <[email protected]>
Unreviewed build fix for chromium/mac & clang.
Modified: trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -475,13 +475,13 @@
#if ENABLE(DYNAMIC_OPTIMIZATION)
ValueProfile* profile = ""
ASSERT(profile);
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf("Dynamic profile [%u, %u]: ", nodeIndex, bytecodeIndex);
profile->dump(stdout);
printf("\n");
#endif
m_graph[nodeIndex].predict(makePrediction(*m_globalData, *profile), StrongPrediction);
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf(" Prediction: %s\n", predictionToString(m_graph[nodeIndex].getPrediction()));
#endif
#else
@@ -1375,7 +1375,7 @@
allocateVirtualRegisters();
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
m_graph.dump(m_codeBlock);
#endif
Modified: trunk/Source/_javascript_Core/dfg/DFGGraph.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGGraph.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGGraph.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -218,7 +218,7 @@
if (!profile)
continue;
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf("Argument profile [%lu]: ", arg);
profile->dump(stdout);
printf("\n");
@@ -226,7 +226,7 @@
m_predictions.predictArgument(arg, makePrediction(globalData, *profile) & ~PredictionTagMask, StrongPrediction);
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf(" Prediction: %s\n", predictionToString(m_predictions.getArgumentPrediction(arg)));
#endif
}
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -1208,7 +1208,7 @@
#endif
-#if DFG_CONSISTENCY_CHECK
+#if ENABLE(DFG_CONSISTENCY_CHECK)
void JITCodeGenerator::checkConsistency()
{
bool failed = false;
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -927,7 +927,7 @@
void dump(const char* label = 0);
#endif
-#if DFG_CONSISTENCY_CHECK
+#if ENABLE(DFG_CONSISTENCY_CHECK)
void checkConsistency();
#else
void checkConsistency() {}
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -68,7 +68,7 @@
ASSERT(isInt32Constant(nodeIndex));
move(MacroAssembler::Imm32(valueOfInt32Constant(nodeIndex)), gpr);
} else {
-#if DFG_JIT_ASSERT
+#if ENABLE(DFG_JIT_ASSERT)
// Redundant load, just so we can check the tag!
loadPtr(addressFor(node.virtualRegister()), gpr);
jitAssertIsJSInt32(gpr);
@@ -482,14 +482,14 @@
// Link the jump from the Speculative path to here.
check.m_check.link(this);
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
fprintf(stderr, "Speculation failure for Node @%d at JIT offset 0x%x\n", (int)check.m_nodeIndex, debugOffset());
#endif
-#if DFG_JIT_BREAK_ON_SPECULATION_FAILURE
+#if ENABLE(DFG_JIT_BREAK_ON_SPECULATION_FAILURE)
breakpoint();
#endif
-#if DFG_VERBOSE_SPECULATION_FAILURE
+#if ENABLE(DFG_VERBOSE_SPECULATION_FAILURE)
SpeculationFailureDebugInfo* debugInfo = new SpeculationFailureDebugInfo;
debugInfo->codeBlock = m_codeBlock;
debugInfo->debugOffset = debugOffset();
@@ -826,7 +826,7 @@
// register values around, rebox values, and ensure spilled, to match the
// non-speculative path's requirements).
-#if DFG_JIT_BREAK_ON_EVERY_FUNCTION
+#if ENABLE(DFG_JIT_BREAK_ON_EVERY_FUNCTION)
// Handy debug tool!
breakpoint();
#endif
@@ -834,7 +834,7 @@
// First generate the speculative path.
Label speculativePathBegin = label();
SpeculativeJIT speculative(*this);
-#if !DFG_DEBUG_LOCAL_DISBALE_SPECULATIVE
+#if !ENABLE(DFG_DEBUG_LOCAL_DISBALE_SPECULATIVE)
bool compiledSpeculative = speculative.compile();
#else
bool compiledSpeculative = false;
@@ -892,7 +892,7 @@
void JITCompiler::link(LinkBuffer& linkBuffer)
{
// Link the code, populate data in CodeBlock data structures.
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
fprintf(stderr, "JIT code for %p start at [%p, %p)\n", m_codeBlock, linkBuffer.debugAddress(), static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.debugSize());
#endif
@@ -1024,7 +1024,7 @@
entry = JITCode(linkBuffer.finalizeCode(), JITCode::DFGJIT);
}
-#if DFG_JIT_ASSERT
+#if ENABLE(DFG_JIT_ASSERT)
void JITCompiler::jitAssertIsInt32(GPRReg gpr)
{
#if CPU(X86_64)
Modified: trunk/Source/_javascript_Core/dfg/DFGJITCompiler.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGJITCompiler.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCompiler.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -58,7 +58,7 @@
typedef void (*V_DFGDebugOperation_EP)(ExecState*, void*);
#endif
-#if DFG_VERBOSE_SPECULATION_FAILURE
+#if ENABLE(DFG_VERBOSE_SPECULATION_FAILURE)
struct SpeculationFailureDebugInfo {
CodeBlock* codeBlock;
unsigned debugOffset;
@@ -258,7 +258,7 @@
bool valueOfBooleanConstant(NodeIndex nodeIndex) { return graph().valueOfBooleanConstant(codeBlock(), nodeIndex); }
// These methods JIT generate dynamic, debug-only checks - akin to ASSERTs.
-#if DFG_JIT_ASSERT
+#if ENABLE(DFG_JIT_ASSERT)
void jitAssertIsInt32(GPRReg);
void jitAssertIsJSInt32(GPRReg);
void jitAssertIsJSNumber(GPRReg);
Modified: trunk/Source/_javascript_Core/dfg/DFGNode.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGNode.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGNode.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -27,31 +27,31 @@
#define DFGNode_h
// Emit various logging information for debugging, including dumping the dataflow graphs.
-#define DFG_DEBUG_VERBOSE 0
+#define ENABLE_DFG_DEBUG_VERBOSE 0
// Enable generation of dynamic checks into the instruction stream.
#if !ASSERT_DISABLED
-#define DFG_JIT_ASSERT 1
+#define ENABLE_DFG_JIT_ASSERT 1
#else
-#define DFG_JIT_ASSERT 0
+#define ENABLE_DFG_JIT_ASSERT 0
#endif
// Consistency check contents compiler data structures.
-#define DFG_CONSISTENCY_CHECK 0
+#define ENBALE_DFG_CONSISTENCY_CHECK 0
// Emit a breakpoint into the head of every generated function, to aid debugging in GDB.
-#define DFG_JIT_BREAK_ON_EVERY_FUNCTION 0
+#define ENABLE_DFG_JIT_BREAK_ON_EVERY_FUNCTION 0
// Emit a breakpoint into the head of every generated node, to aid debugging in GDB.
-#define DFG_JIT_BREAK_ON_EVERY_BLOCK 0
+#define ENABLE_DFG_JIT_BREAK_ON_EVERY_BLOCK 0
// Emit a breakpoint into the head of every generated node, to aid debugging in GDB.
-#define DFG_JIT_BREAK_ON_EVERY_NODE 0
+#define ENABLE_DFG_JIT_BREAK_ON_EVERY_NODE 0
// Emit a breakpoint into the speculation failure code.
-#define DFG_JIT_BREAK_ON_SPECULATION_FAILURE 0
+#define ENABLE_DFG_JIT_BREAK_ON_SPECULATION_FAILURE 0
// Log every speculation failure.
-#define DFG_VERBOSE_SPECULATION_FAILURE 0
+#define ENABLE_DFG_VERBOSE_SPECULATION_FAILURE 0
// Disable the DFG JIT without having to touch Platform.h!
#define DFG_DEBUG_LOCAL_DISBALE 0
// Disable the SpeculativeJIT without having to touch Platform.h!
#define DFG_DEBUG_LOCAL_DISBALE_SPECULATIVE 0
// Generate stats on how successful we were in making use of the DFG jit, and remaining on the hot path.
-#define DFG_SUCCESS_STATS 0
+#define ENABLE_DFG_SUCCESS_STATS 0
#if ENABLE(DFG_JIT)
Modified: trunk/Source/_javascript_Core/dfg/DFGNonSpeculativeJIT.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGNonSpeculativeJIT.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGNonSpeculativeJIT.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -1086,7 +1086,7 @@
ASSERT(GPRInfo::regT1 != GPRInfo::returnValueGPR);
ASSERT(GPRInfo::returnValueGPR != GPRInfo::callFrameRegister);
-#if DFG_SUCCESS_STATS
+#if ENABLE(DFG_SUCCESS_STATS)
static SamplingCounter counter("NonSpeculativeJIT");
m_jit.emitCount(counter);
#endif
@@ -1252,7 +1252,7 @@
ASSERT(m_compileIndex == block.begin);
m_blockHeads[m_block] = m_jit.label();
-#if DFG_JIT_BREAK_ON_EVERY_BLOCK
+#if ENABLE(DFG_JIT_BREAK_ON_EVERY_BLOCK)
m_jit.breakpoint();
#endif
@@ -1261,16 +1261,16 @@
if (!node.shouldGenerate())
continue;
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
fprintf(stderr, "NonSpeculativeJIT generating Node @%d at code offset 0x%x ", (int)m_compileIndex, m_jit.debugOffset());
#endif
-#if DFG_JIT_BREAK_ON_EVERY_NODE
+#if ENABLE(DFG_JIT_BREAK_ON_EVERY_NODE)
m_jit.breakpoint();
#endif
checkConsistency();
compile(checkIterator, node);
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
if (node.hasResult())
fprintf(stderr, "-> %s\n", dataFormatToString(m_generationInfo[node.virtualRegister()].registerFormat()));
else
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -678,7 +678,7 @@
return JSValue::decode(encodedOp).toBoolean(exec);
}
-#if DFG_VERBOSE_SPECULATION_FAILURE
+#if ENABLE(DFG_VERBOSE_SPECULATION_FAILURE)
void debugOperationPrintSpeculationFailure(ExecState*, void* debugInfoRaw)
{
SpeculationFailureDebugInfo* debugInfo = static_cast<SpeculationFailureDebugInfo*>(debugInfoRaw);
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -115,7 +115,7 @@
int32_t dfgConvertJSValueToInt32(ExecState*, EncodedJSValue);
RegisterSizedBoolean dfgConvertJSValueToBoolean(ExecState*, EncodedJSValue);
-#if DFG_VERBOSE_SPECULATION_FAILURE
+#if ENABLE(DFG_VERBOSE_SPECULATION_FAILURE)
void debugOperationPrintSpeculationFailure(ExecState*, void*);
#endif
Modified: trunk/Source/_javascript_Core/dfg/DFGPropagator.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGPropagator.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGPropagator.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -66,7 +66,7 @@
void fixpoint()
{
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
m_count = 0;
#endif
do {
@@ -120,7 +120,7 @@
NodeType op = node.op;
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf(" %s[%u]: ", Graph::opName(op), m_compileIndex);
#endif
@@ -305,7 +305,7 @@
#endif
}
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf("expect(%s) use(%s) %s\n", predictionToString(m_predictions[m_compileIndex]), predictionToString(m_uses[m_compileIndex]), changed ? "CHANGED" : "");
#endif
@@ -314,7 +314,7 @@
void propagateForward()
{
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf("Propagating forward [%u]\n", ++m_count);
#endif
for (m_compileIndex = 0; m_compileIndex < m_graph.size(); ++m_compileIndex)
@@ -323,7 +323,7 @@
void propagateBackward()
{
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
printf("Propagating backward [%u]\n", ++m_count);
#endif
for (m_compileIndex = m_graph.size(); m_compileIndex-- > 0;)
@@ -342,7 +342,7 @@
PredictionTracker m_variableUses;
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
unsigned m_count;
#endif
@@ -358,7 +358,7 @@
Propagator propagator(graph, *globalData, codeBlock, profiledBlock);
propagator.fixpoint();
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
graph.dump(codeBlock);
#endif
}
Modified: trunk/Source/_javascript_Core/dfg/DFGScoreBoard.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGScoreBoard.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGScoreBoard.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -48,7 +48,7 @@
{
}
-#if DFG_CONSISTENCY_CHECK
+#if ENABLE(DFG_CONSISTENCY_CHECK)
~ScoreBoard()
{
// Every VirtualRegister that was allocated should now be free.
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -1142,7 +1142,7 @@
ASSERT(GPRInfo::regT1 != GPRInfo::returnValueGPR);
ASSERT(GPRInfo::returnValueGPR != GPRInfo::callFrameRegister);
-#if DFG_SUCCESS_STATS
+#if ENABLE(DFG_SUCCESS_STATS)
static SamplingCounter counter("SpeculativeJIT");
m_jit.emitCount(counter);
#endif
@@ -1379,7 +1379,7 @@
ASSERT(m_compileOkay);
ASSERT(m_compileIndex == block.begin);
m_blockHeads[m_block] = m_jit.label();
-#if DFG_JIT_BREAK_ON_EVERY_BLOCK
+#if ENABLE(DFG_JIT_BREAK_ON_EVERY_BLOCK)
m_jit.breakpoint();
#endif
@@ -1388,10 +1388,10 @@
if (!node.shouldGenerate())
continue;
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
fprintf(stderr, "SpeculativeJIT generating Node @%d at JIT offset 0x%x ", (int)m_compileIndex, m_jit.debugOffset());
#endif
-#if DFG_JIT_BREAK_ON_EVERY_NODE
+#if ENABLE(DFG_JIT_BREAK_ON_EVERY_NODE)
m_jit.breakpoint();
#endif
checkConsistency();
@@ -1404,7 +1404,7 @@
#endif
return;
}
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
if (node.hasResult())
fprintf(stderr, "-> %s\n", dataFormatToString(m_generationInfo[node.virtualRegister()].registerFormat()));
else
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h (94941 => 94942)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.h 2011-09-12 03:42:39 UTC (rev 94942)
@@ -217,7 +217,7 @@
// Called when we statically determine that a speculation will fail.
void terminateSpeculativeExecution()
{
-#if DFG_DEBUG_VERBOSE
+#if ENABLE(DFG_DEBUG_VERBOSE)
fprintf(stderr, "SpeculativeJIT was terminated.\n");
#endif
#if ENABLE(DYNAMIC_TERMINATE_SPECULATION)
Modified: trunk/Source/_javascript_Core/jit/JIT.cpp (94941 => 94942)
--- trunk/Source/_javascript_Core/jit/JIT.cpp 2011-09-12 03:34:57 UTC (rev 94941)
+++ trunk/Source/_javascript_Core/jit/JIT.cpp 2011-09-12 03:42:39 UTC (rev 94942)
@@ -521,7 +521,7 @@
Jump registerFileCheck;
if (m_codeBlock->codeType() == FunctionCode) {
-#if DFG_SUCCESS_STATS
+#if ENABLE(DFG_SUCCESS_STATS)
static SamplingCounter counter("orignalJIT");
emitCount(counter);
#endif