• fpizlo@apple.com's avatar
    It should be possible to send all JSC debug logging to a file · d095b247
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=78418
    
    Reviewed by Sam Weinig.
            
    Introduced wtf/DataLog, which defines WTF::dataFile, WTF::dataLog,
    and WTF::dataLogV. Changed all debugging- and profiling-related printfs
    to use WTF::dataLog() or one of its friends. By default, debug logging
    goes to stderr, unless you change the setting in wtf/DataLog.cpp.
    
    Source/JavaScriptCore: 
    
    * GNUmakefile.list.am:
    * JavaScriptCore.gypi:
    * JavaScriptCore.vcproj/WTF/WTF.vcproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * assembler/LinkBuffer.h:
    (JSC::LinkBuffer::dumpLinkStatistics):
    (JSC::LinkBuffer::dumpCode):
    * assembler/SH4Assembler.h:
    (JSC::SH4Assembler::vprintfStdoutInstr):
    * bytecode/CodeBlock.cpp:
    (JSC::CodeBlock::printUnaryOp):
    (JSC::CodeBlock::printBinaryOp):
    (JSC::CodeBlock::printConditionalJump):
    (JSC::CodeBlock::printGetByIdOp):
    (JSC::CodeBlock::printCallOp):
    (JSC::CodeBlock::printPutByIdOp):
    (JSC::printGlobalResolveInfo):
    (JSC::printStructureStubInfo):
    (JSC::CodeBlock::printStructure):
    (JSC::CodeBlock::printStructures):
    (JSC::CodeBlock::dump):
    (JSC::CodeBlock::dumpStatistics):
    (JSC::CodeBlock::finalizeUnconditionally):
    (JSC::CodeBlock::shouldOptimizeNow):
    (JSC::CodeBlock::tallyFrequentExitSites):
    (JSC::CodeBlock::dumpValueProfiles):
    * bytecode/Opcode.cpp:
    (JSC::OpcodeStats::~OpcodeStats):
    * bytecode/SamplingTool.cpp:
    (JSC::SamplingFlags::stop):
    (JSC::SamplingRegion::dumpInternal):
    (JSC::SamplingTool::dump):
    * dfg/DFGAbstractState.cpp:
    (JSC::DFG::AbstractState::endBasicBlock):
    (JSC::DFG::AbstractState::mergeStateAtTail):
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
    (JSC::DFG::ByteCodeParser::makeSafe):
    (JSC::DFG::ByteCodeParser::makeDivSafe):
    (JSC::DFG::ByteCodeParser::handleCall):
    (JSC::DFG::ByteCodeParser::handleInlining):
    (JSC::DFG::ByteCodeParser::parseBlock):
    (JSC::DFG::ByteCodeParser::processPhiStack):
    (JSC::DFG::ByteCodeParser::linkBlock):
    (JSC::DFG::ByteCodeParser::parseCodeBlock):
    (JSC::DFG::ByteCodeParser::parse):
    * dfg/DFGCommon.h:
    * dfg/DFGDriver.cpp:
    (JSC::DFG::compile):
    * dfg/DFGGraph.cpp:
    (JSC::DFG::printWhiteSpace):
    (JSC::DFG::Graph::dumpCodeOrigin):
    (JSC::DFG::Graph::dump):
    (JSC::DFG::Graph::predictArgumentTypes):
    * dfg/DFGJITCompiler.cpp:
    (JSC::DFG::JITCompiler::link):
    * dfg/DFGOSREntry.cpp:
    (JSC::DFG::prepareOSREntry):
    * dfg/DFGOSRExitCompiler.cpp:
    * dfg/DFGOSRExitCompiler32_64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOSRExitCompiler64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOperations.cpp:
    * dfg/DFGPropagator.cpp:
    (JSC::DFG::Propagator::fixpoint):
    (JSC::DFG::Propagator::propagateArithNodeFlags):
    (JSC::DFG::Propagator::propagateArithNodeFlagsForward):
    (JSC::DFG::Propagator::propagateArithNodeFlagsBackward):
    (JSC::DFG::Propagator::propagateNodePredictions):
    (JSC::DFG::Propagator::propagatePredictionsForward):
    (JSC::DFG::Propagator::propagatePredictionsBackward):
    (JSC::DFG::Propagator::doRoundOfDoubleVoting):
    (JSC::DFG::Propagator::fixupNode):
    (JSC::DFG::Propagator::fixup):
    (JSC::DFG::Propagator::startIndexForChildren):
    (JSC::DFG::Propagator::endIndexForPureCSE):
    (JSC::DFG::Propagator::setReplacement):
    (JSC::DFG::Propagator::eliminate):
    (JSC::DFG::Propagator::performNodeCSE):
    (JSC::DFG::Propagator::localCSE):
    (JSC::DFG::Propagator::allocateVirtualRegisters):
    (JSC::DFG::Propagator::performBlockCFA):
    (JSC::DFG::Propagator::performForwardCFA):
    * dfg/DFGRegisterBank.h:
    (JSC::DFG::RegisterBank::dump):
    * dfg/DFGScoreBoard.h:
    (JSC::DFG::ScoreBoard::dump):
    * dfg/DFGSpeculativeJIT.cpp:
    (JSC::DFG::SpeculativeJIT::dump):
    (JSC::DFG::SpeculativeJIT::checkConsistency):
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
    (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
    (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
    (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
    (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
    (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
    (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
    * heap/Heap.cpp:
    (JSC::Heap::destroy):
    * heap/MarkedBlock.h:
    * interpreter/CallFrame.cpp:
    (JSC::CallFrame::dumpCaller):
    * interpreter/Interpreter.cpp:
    (JSC::Interpreter::dumpRegisters):
    * jit/JIT.cpp:
    (JSC::JIT::privateCompileMainPass):
    (JSC::JIT::privateCompileSlowCases):
    (JSC::JIT::privateCompile):
    * jit/JITStubs.cpp:
    (JSC::DEFINE_STUB_FUNCTION):
    * profiler/Profile.cpp:
    (JSC::Profile::debugPrintData):
    (JSC::Profile::debugPrintDataSampleStyle):
    * profiler/ProfileNode.cpp:
    (JSC::ProfileNode::debugPrintData):
    (JSC::ProfileNode::debugPrintDataSampleStyle):
    * runtime/JSGlobalData.cpp:
    (JSC::JSGlobalData::dumpRegExpTrace):
    * runtime/RegExp.cpp:
    (JSC::RegExp::matchCompareWithInterpreter):
    * runtime/SamplingCounter.cpp:
    (JSC::AbstractSamplingCounter::dump):
    * runtime/SamplingCounter.h:
    (JSC::DeletableSamplingCounter::~DeletableSamplingCounter):
    * runtime/ScopeChain.cpp:
    (JSC::ScopeChainNode::print):
    * runtime/Structure.cpp:
    (JSC::Structure::dumpStatistics):
    (JSC::PropertyMapStatisticsExitLogger::~PropertyMapStatisticsExitLogger):
    * tools/CodeProfile.cpp:
    (JSC::CodeProfile::report):
    * tools/ProfileTreeNode.h:
    (JSC::ProfileTreeNode::dumpInternal):
    * wtf/CMakeLists.txt:
    * wtf/DataLog.cpp: Added.
    (WTF):
    (WTF::initializeLogFileOnce):
    (WTF::initializeLogFile):
    (WTF::dataFile):
    (WTF::dataLogV):
    (WTF::dataLog):
    * wtf/DataLog.h: Added.
    (WTF):
    * wtf/HashTable.cpp:
    (WTF::HashTableStats::~HashTableStats):
    * wtf/MetaAllocator.cpp:
    (WTF::MetaAllocator::dumpProfile):
    * wtf/text/WTFString.cpp:
    (String::show):
    * yarr/YarrInterpreter.cpp:
    (JSC::Yarr::ByteCompiler::dumpDisjunction):
    
    Source/WebCore: 
    
    No new tests because behavior is unchanged.
    
    * ForwardingHeaders/wtf/DataLog.h: Added.
    
    Source/WTF: 
    
    * WTF.pro:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107499 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d095b247