Ignore:
Timestamp:
Jan 7, 2013, 5:23:38 PM (13 years ago)
Author:
[email protected]
Message:

Rationalize closure call heuristics and profiling
https://bugs.webkit.org/show_bug.cgi?id=106270

Source/JavaScriptCore:

Reviewed by Oliver Hunt.

Did a number of things:

  • CallLinkInfo now remembers if it was ever a closure call, and CallLinkStatus uses this. Reduces the likelihood that we will inline a closure call as if it was a normal call.


  • Made InlineCallFrame print inferred function names, and refactored CodeBlock::inferredName() to better use FunctionExecutable's API.


  • Made bytecode dumping print frequent exit sites that led to recompilation.


  • Made bytecode dumping for op_call and op_construct print what the CallLinkStatus saw.


  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::CallLinkInfo):
(CallLinkInfo):

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFor):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::inferredName):
(JSC::CodeBlock::dumpBytecodeCommentAndNewLine):
(JSC::CodeBlock::printCallOp):

  • bytecode/CodeOrigin.cpp:

(JSC::CodeOrigin::dump):
(JSC::InlineCallFrame::inferredName):
(JSC):
(JSC::InlineCallFrame::dumpBriefFunctionInformation):
(JSC::InlineCallFrame::dump):

  • bytecode/CodeOrigin.h:

(InlineCallFrame):

  • bytecode/DFGExitProfile.cpp:

(JSC::DFG::ExitProfile::exitSitesFor):
(DFG):

  • bytecode/DFGExitProfile.h:

(ExitProfile):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

Source/WTF:

Reviewed by Oliver Hunt.

Add a macro to add a method to a class that returns a dumper. Allows you to have
secondary dump() methods for dumping either more or less information.

  • wtf/PrintStream.h:

(WTF):

Tools:

Reviewed by Oliver Hunt.

Add ability to use display-profiler-output via a pipe, and add the ability to dump
all generated code ('display *' or 'd *').

  • Scripts/display-profiler-output:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeOrigin.h

    r138669 r139021  
    111111    bool isClosureCall() const { return !callee; }
    112112   
     113    String inferredName() const;
    113114    CodeBlockHash hash() const;
    114115   
    115116    CodeBlock* baselineCodeBlock() const;
    116117   
     118    void dumpBriefFunctionInformation(PrintStream&) const;
    117119    void dump(PrintStream&) const;
     120
     121    MAKE_PRINT_METHOD(InlineCallFrame, dumpBriefFunctionInformation, briefFunctionInformation);
    118122};
    119123
Note: See TracChangeset for help on using the changeset viewer.