[webkit-changes] [WebKit/WebKit] c323bd: [JSC] Make profiling check-pointing longer for meg...

Yusuke Suzuki noreply at github.com
Fri Aug 11 10:40:53 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c323bd22eabf78d8dcf13b84666c8bb83855444d
      https://github.com/WebKit/WebKit/commit/c323bd22eabf78d8dcf13b84666c8bb83855444d
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-08-11 (Fri, 11 Aug 2023)

  Changed paths:
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecode/CodeBlock.h
    M Source/JavaScriptCore/bytecode/ExecutionCounter.cpp
    M Source/JavaScriptCore/bytecode/ExecutionCounter.h
    M Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp
    M Source/JavaScriptCore/runtime/OptionsList.h

  Log Message:
  -----------
  [JSC] Make profiling check-pointing longer for mega functions
https://bugs.webkit.org/show_bug.cgi?id=260010
rdar://113668308

Reviewed by Justin Michaud.

While we designed our profiling collection with "they are cheap" assumption, this is not true for some mega-sized functions.
There are some mega-sized functions, which can be generated by toolings etc., has massive amount of ValueProfiles, and causing
very long stop for profile update.

In this patch, we attempt to avoid this pathological case. When function size exceeds the threshold, we categorize it as mega-sized,
and we relax maximumExecutionCountsBetweenCheckpoints more larger. Because we do profiling update on each checkpoint, making it longer
means less frequent profiling update.

* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::optimizationThresholdScalingFactor const):
(JSC::CodeBlock::optimizationThresholdScalingFactor): Deleted.
* Source/JavaScriptCore/bytecode/CodeBlock.h:
* Source/JavaScriptCore/bytecode/ExecutionCounter.cpp:
(JSC::maximumExecutionCountsBetweenCheckpoints):
(JSC::ExecutionCounter<countingVariant>::hasCrossedThreshold const):
(JSC::ExecutionCounter<countingVariant>::setThreshold):
* Source/JavaScriptCore/bytecode/ExecutionCounter.h:
(JSC::ExecutionCounter::clippedThreshold):
(JSC::ExecutionCounter::maximumExecutionCountsBetweenCheckpoints): Deleted.
* Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::handleExitCounts):
* Source/JavaScriptCore/runtime/OptionsList.h:

Canonical link: https://commits.webkit.org/266819@main




More information about the webkit-changes mailing list