[webkit-changes] [WebKit/WebKit] 7bdb70: [JSC] Add WasmBBQDisassembler

Yusuke Suzuki noreply at github.com
Sat Mar 18 23:41:30 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7bdb70dd637f3e6c3b6c7739d302f2b9ea5b2cc0
      https://github.com/WebKit/WebKit/commit/7bdb70dd637f3e6c3b6c7739d302f2b9ea5b2cc0
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-03-18 (Sat, 18 Mar 2023)

  Changed paths:
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.h
    A Source/JavaScriptCore/wasm/WasmBBQDisassembler.cpp
    A Source/JavaScriptCore/wasm/WasmBBQDisassembler.h
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
    M Source/JavaScriptCore/wasm/WasmBBQPlan.cpp

  Log Message:
  -----------
  [JSC] Add WasmBBQDisassembler
https://bugs.webkit.org/show_bug.cgi?id=254128
rdar://106906971

Reviewed by Mark Lam.

This patch adds better disassembler support to new WasmBBQJIT (since previous old BBQ had good disassembler. So now it was missing).
It dumps code with Wasm Opcode information as follows.

    ...
               <128> 0x10d000080:    b.pl     0x10d00044c -> <1100>
    [     0x3] Block
    [     0x5] Block
    [     0x7] GetLocal
               <132> 0x10d000084:    ldur     w0, [fp, #-12]
    [     0x9] I32Const
    [     0xb] I32Add
               <136> 0x10d000088:    add      w0, w0, #16
    [     0xc] TeeLocal
               <140> 0x10d00008c:    stur     w0, [fp, #-20]
               <144> 0x10d000090:    ldur     w0, [fp, #-20]
    [     0xe] I32Load
               <148> 0x10d000094:    ldr      w0, [x22, w0, uxtw]
    [    0x11] TeeLocal
               <152> 0x10d000098:    stur     w0, [fp, #-16]
               <156> 0x10d00009c:    ldur     w0, [fp, #-16]
    [    0x13] BrIf
               <160> 0x10d0000a0:    mov      x8, x0
               <164> 0x10d0000a4:    cbz      w8, 0x10d0000ac -> <172>
               <168> 0x10d0000a8:    b        0x10d0000e4 -> <228>
    ...

* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.h:
* Source/JavaScriptCore/wasm/WasmBBQDisassembler.cpp: Added.
(JSC::Wasm::BBQDisassembler::dump):
(JSC::Wasm::BBQDisassembler::dumpHeader):
(JSC::Wasm::BBQDisassembler::dumpVectorForInstructions):
(JSC::Wasm::BBQDisassembler::dumpForInstructions):
(JSC::Wasm::BBQDisassembler::dumpDisassembly):
* Source/JavaScriptCore/wasm/WasmBBQDisassembler.h: Added.
(JSC::Wasm::BBQDisassembler::setStartOfCode):
(JSC::Wasm::BBQDisassembler::setOpcode):
(JSC::Wasm::BBQDisassembler::setEndOfOpcode):
(JSC::Wasm::BBQDisassembler::setEndOfCode):
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::BBQJIT):
(JSC::Wasm::BBQJIT::endTopLevel):
(JSC::Wasm::BBQJIT::willParseOpcode):
(JSC::Wasm::BBQJIT::finalize):
(JSC::Wasm::BBQJIT::takeDisassembler):
(JSC::Wasm::parseAndCompileBBQ):
* Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::dumpDisassembly):

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




More information about the webkit-changes mailing list