[webkit-changes] [WebKit/WebKit] 32be87: [JSC] Generate PCToCodeOriginMap for WasmBBQJIT wh...

Yusuke Suzuki noreply at github.com
Tue Mar 14 10:53:18 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 32be87b75f2b616ed994fcdb7792347d8ba599b8
      https://github.com/WebKit/WebKit/commit/32be87b75f2b616ed994fcdb7792347d8ba599b8
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-03-14 (Tue, 14 Mar 2023)

  Changed paths:
    M Source/JavaScriptCore/jit/PCToCodeOriginMap.cpp
    M Source/JavaScriptCore/jit/PCToCodeOriginMap.h
    M Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.h
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp

  Log Message:
  -----------
  [JSC] Generate PCToCodeOriginMap for WasmBBQJIT when sampling profiler is enabled
https://bugs.webkit.org/show_bug.cgi?id=253867
rdar://problem/106677398

Reviewed by Tadeu Zagallo.

This patch makes WasmBBQJIT generate PCToCodeOriginMap when useSamplingProfiler is true so that we can
get per-wasm-offset sampling profiler data. This patch extends WasmFunctionParser and add willParseOpcode / didParseOpcode
hooks. They are empty in most of generators, but in WasmBBQJIT, we use it to notify to PCToCodeOriginMapBuilder.
PCToCodeOriginMapBuilder does nothing when useSamplingProfiler is false. And it generates necessary metadata when
useSamplingProfiler is true. And we wire generated map to the existing wasm PCToCodeOriginMap registry so that we can get
sampling profiler data like this.

    Hottest bytecodes as <numSamples   'functionName#hash:JITType:bytecodeIndex'>
       242    '<?>.wasm-function[301]:LLInt:nil'
        93    '<?>.wasm-function[141]:BBQ:0x1fa'
        29    '<?>.wasm-function[141]:BBQ:0x44f'
        28    '<?>.wasm-function[400]:BBQ:0x0'
        22    '_platform_memmove#<nil>:None:<nil>'
        20    'expandFileStorage#<nil>:FTL:bc#383'
        19    '<?>.wasm-function[400]:BBQ:0x199'

* Source/JavaScriptCore/jit/PCToCodeOriginMap.cpp:
(JSC::PCToCodeOriginMapBuilder::appendItemSlow):
(JSC::PCToCodeOriginMapBuilder::appendItem): Deleted.
* Source/JavaScriptCore/jit/PCToCodeOriginMap.h:
(JSC::PCToCodeOriginMapBuilder::PCToCodeOriginMapBuilder):
(JSC::PCToCodeOriginMapBuilder::appendItem):
* Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h:
(JSC::Wasm::AirIRGeneratorBase::willParseOpcode):
(JSC::Wasm::AirIRGeneratorBase::didParseOpcode):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::willParseOpcode):
(JSC::Wasm::B3IRGenerator::didParseOpcode):
(JSC::Wasm::computePCToCodeOriginMap):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.h:
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::BBQJIT):
(JSC::Wasm::BBQJIT::addTopLevel):
(JSC::Wasm::BBQJIT::willParseOpcode):
(JSC::Wasm::BBQJIT::didParseOpcode):
(JSC::Wasm::BBQJIT::takePCToCodeOriginMapBuilder):
(JSC::Wasm::parseAndCompileBBQ):
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseBody):
* Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::willParseOpcode):
(JSC::Wasm::LLIntGenerator::didParseOpcode):

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




More information about the webkit-changes mailing list