Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 870ce28bc85aaa3975f3015430086d014fb31c95
      
https://github.com/WebKit/WebKit/commit/870ce28bc85aaa3975f3015430086d014fb31c95
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp

  Log Message:
  -----------
  [JSC] Adjust CodeBlock::shouldOptimizeNow with retry count
https://bugs.webkit.org/show_bug.cgi?id=259918
rdar://113545008

Reviewed by Keith Miller.

In the wild, there are many functions which can be very generic. For example, 
jQuery's $ function can take various arguments,
and it has many code with `typeof`. When using some frameworks, their functions 
can be generic, but in many cases, only small
part of these functions can be used in one application.

CodeBlock::shouldOptimizeNow is currently using ValueProfile's liveness / 
fullness ratio to estimate the coverage of profiling
infomration to decide tiering up. This works well if the function can be fully 
used. However, as it is said before, if the function
is coming from frameworks, and if only small part of function is used in the 
application, then this coverage is kept low.
As a result, we always defer tiering up until we hit the 
maximumOptimizationDelay (5) retry count.

But repeatedly invoking CodeBlock::shouldOptimizeNow is already a good signal 
of very hot function. So we should leverage this
count in mind too in CodeBlock::shouldOptimizeNow. In this patch, we eventually 
decreases liveness / fullness threshold while increasing
the retry count. Now, the threshold becomes (livenessThreshold / retry-count), 
so, the threshold decreases if we invoke CodeBlock::shouldOptimizeNow
more and more (this means this function is really hot).

* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::shouldOptimizeNow):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to