Changeset 107499 in webkit for trunk/Source/JavaScriptCore/heap


Ignore:
Timestamp:
Feb 11, 2012, 7:21:32 PM (13 years ago)
Author:
[email protected]
Message:

It should be possible to send all JSC debug logging to a file
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:

(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:
Location:
trunk/Source/JavaScriptCore/heap
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r106676 r107499  
    7878    ~GCTimer()
    7979    {
    80         printf("%s: %.2lfms (avg. %.2lf, min. %.2lf, max. %.2lf)\n", m_name, m_time * 1000, m_time * 1000 / m_count, m_min*1000, m_max*1000);
     80        dataLog("%s: %.2lfms (avg. %.2lf, min. %.2lf, max. %.2lf)\n", m_name, m_time * 1000, m_time * 1000 / m_count, m_min*1000, m_max*1000);
    8181    }
    8282    double m_time;
     
    128128    ~GCCounter()
    129129    {
    130         printf("%s: %zu values (avg. %zu, min. %zu, max. %zu)\n", m_name, m_total, m_total / m_count, m_min, m_max);
     130        dataLog("%s: %zu values (avg. %zu, min. %zu, max. %zu)\n", m_name, m_total, m_total / m_count, m_min, m_max);
    131131    }
    132132    const char* m_name;
     
    382382   
    383383#if ENABLE(SIMPLE_HEAP_PROFILING)
    384     m_slotVisitor.m_visitedTypeCounts.dump(stderr, "Visited Type Counts");
    385     m_destroyedTypeCounts.dump(stderr, "Destroyed Type Counts");
     384    m_slotVisitor.m_visitedTypeCounts.dump(WTF::dataFile(), "Visited Type Counts");
     385    m_destroyedTypeCounts.dump(WTF::dataFile(), "Destroyed Type Counts");
    386386#endif
    387387   
  • trunk/Source/JavaScriptCore/heap/MarkedBlock.h

    r107445 r107499  
    2727
    2828#include <wtf/Bitmap.h>
     29#include <wtf/DataLog.h>
    2930#include <wtf/DoublyLinkedList.h>
    3031#include <wtf/HashFunctions.h>
     
    3738
    3839#if HEAP_LOG_BLOCK_STATE_TRANSITIONS
    39 #define HEAP_LOG_BLOCK_STATE_TRANSITION(block) do {                                  \
    40         printf("%s:%d %s: block %s = %p, %d\n",                                      \
    41                __FILE__, __LINE__, __FUNCTION__, #block, (block), (block)->m_state); \
     40#define HEAP_LOG_BLOCK_STATE_TRANSITION(block) do {                     \
     41        dataLog(                                                    \
     42            "%s:%d %s: block %s = %p, %d\n",                            \
     43            __FILE__, __LINE__, __FUNCTION__,                           \
     44            #block, (block), (block)->m_state);                         \
    4245    } while (false)
    4346#else
Note: See TracChangeset for help on using the changeset viewer.