[webkit-changes] [WebKit/WebKit] fb3a27: Implement full Wasm calling convention in IPInt

Daniel Liu noreply at github.com
Tue Sep 24 15:46:27 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fb3a2765f7892b78721a609c4d653bcf54d0d2a8
      https://github.com/WebKit/WebKit/commit/fb3a2765f7892b78721a609c4d653bcf54d0d2a8
  Author: Daniel Liu <danlliu at umich.edu>
  Date:   2024-09-24 (Tue, 24 Sep 2024)

  Changed paths:
    A JSTests/wasm/ipint-tests/ipint-test-call-many-f32.js
    A JSTests/wasm/ipint-tests/ipint-test-multiret32.js
    M Source/JavaScriptCore/llint/InPlaceInterpreter.asm
    M Source/JavaScriptCore/llint/InPlaceInterpreter.h
    M Source/JavaScriptCore/llint/InPlaceInterpreter32_64.asm
    M Source/JavaScriptCore/llint/InPlaceInterpreter64.asm
    M Source/JavaScriptCore/wasm/WasmCallee.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.h
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmIPIntSlowPaths.cpp

  Log Message:
  -----------
  Implement full Wasm calling convention in IPInt
https://bugs.webkit.org/show_bug.cgi?id=280230
rdar://problem/136536169

Reviewed by Yusuke Suzuki.

Previously, IPInt did not support a significant range of return signatures, due to
no stack returns being supported. This patch updates IPInt to support returning on
the stack. Additionally, the argument and return value bytecodes are generated
from `wasmCallingConvention()`, ensuring that it is consistent with the rest of
JSC's Wasm implementations.

* JSTests/wasm/ipint-tests/ipint-test-call-many-f32.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.f32.f32.f32.f32.f32.f32.f32.f32.f32.result.f32.local.8.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-multiret32.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.result.i32.i32.const.1.i32.const.2.i32.const.3.i32.const.4.i32.const.5.i32.const.6.i32.const.7.i32.const.8.i32.const.9.i32.const.10.i32.const.11.i32.const.12.i32.const.13.i32.const.14.i32.const.15.i32.const.16.return.func.export.string_appeared_here.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.result.f32.f32.const.1.f32.const.2.f32.const.3.f32.const.4.f32.const.5.f32.const.6.f32.const.7.f32.const.8.f32.const.9.f32.const.10.f32.const.11.f32.const.12.f32.const.13.f32.const.14.f32.const.15.f32.const.16.return.async test):
* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
* Source/JavaScriptCore/llint/InPlaceInterpreter.h:
* Source/JavaScriptCore/llint/InPlaceInterpreter64.asm:
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::IPIntCallee::IPIntCallee):
* Source/JavaScriptCore/wasm/WasmCallee.h:
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp:
(JSC::Wasm::FunctionIPIntMetadataGenerator::addReturnData):
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addArguments):
(JSC::Wasm::IPIntGenerator::addEndToUnreachable):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list