[webkit-changes] [WebKit/WebKit] d5dfaf: Implement in-place interpreter call and arithmetic...

Daniel Liu noreply at github.com
Fri Jul 21 12:01:16 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d5dfafee77d61cb05dde5f4663cfef89c39233d4
      https://github.com/WebKit/WebKit/commit/d5dfafee77d61cb05dde5f4663cfef89c39233d4
  Author: Daniel Liu <danlliu at umich.edu>
  Date:   2023-07-21 (Fri, 21 Jul 2023)

  Changed paths:
    A JSTests/wasm/ipint-tests/ipint-setup-stress-lol.js
    A JSTests/wasm/ipint-tests/ipint-stress-lol.js
    A JSTests/wasm/ipint-tests/ipint-stress-lol.wasm
    M JSTests/wasm/ipint-tests/ipint-test-call-arg.js
    A JSTests/wasm/ipint-tests/ipint-test-call-fparg.js
    A JSTests/wasm/ipint-tests/ipint-test-f32-comparisons.js
    M JSTests/wasm/ipint-tests/ipint-test-f32-ops.js
    A JSTests/wasm/ipint-tests/ipint-test-f64-comparisons.js
    A JSTests/wasm/ipint-tests/ipint-test-i64-comparisons.js
    A JSTests/wasm/ipint-tests/ipint-test-recursion.js
    M JSTests/wasm/ipint-tests/perf.py
    M Source/JavaScriptCore/llint/InPlaceInterpreter.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/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmSlowPaths.h

  Log Message:
  -----------
  Implement in-place interpreter call and arithmetic/comparisons
https://bugs.webkit.org/show_bug.cgi?id=259378
rdar://112627148

Reviewed by Yusuke Suzuki.

Add functionality for call and remaining numeric comparison and arithmetic opcodes.

* JSTests/wasm/ipint-tests/ipint-setup-stress-lol.js: Added.
* JSTests/wasm/ipint-tests/ipint-stress-lol.js: Added.
(import.as.assert.from.string_appeared_here.async test):
* JSTests/wasm/ipint-tests/ipint-stress-lol.wasm: Added.
* JSTests/wasm/ipint-tests/ipint-test-call-arg.js:
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.inc.export.string_appeared_here.param.i32.result.i32.local.0.i32.const.1.i32.add.return.func.export.string_appeared_here.param.i32.result.i32.i32.const.1094795585.local.0.call.inc.call.inc.return.async test):
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.inc.export.string_appeared_here.param.i32.result.i32.local.0.i32.const.1.i32.add.return.func.export.string_appeared_here.param.i32.result.i32.local.0.call.inc.call.inc.return.async test): Deleted.
* JSTests/wasm/ipint-tests/ipint-test-call-fparg.js: Copied from JSTests/wasm/ipint-tests/ipint-test-call-arg.js.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.inc.export.string_appeared_here.param.f32.result.f32.local.0.f32.const.1.f32.add.return.func.export.string_appeared_here.param.f32.result.f32.local.0.call.inc.call.inc.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-f32-comparisons.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.eq.return.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.ne.return.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.lt.return.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.gt.return.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.le.return.func.export.string_appeared_here.param.f32.f32.result.i32.local.0.local.1.f32.ge.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-f32-ops.js:
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.abs.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.neg.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.ceil.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.floor.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.trunc.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.nearest.return.func.export.string_appeared_here.param.f32.result.f32.local.0.f32.sqrt.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.add.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.sub.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.mul.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.div.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.min.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.max.return.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.copysign.return.close):
(y.async test):
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.add.return.async test): Deleted.
* JSTests/wasm/ipint-tests/ipint-test-f64-comparisons.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.eq.return.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.ne.return.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.lt.return.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.gt.return.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.le.return.func.export.string_appeared_here.param.f64.f64.result.i32.local.0.local.1.f64.ge.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-i64-comparisons.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i64.result.i32.local.0.i64.eqz.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.eq.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.ne.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.lt_s.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.lt_u.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.gt_s.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.gt_u.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.le_s.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.le_u.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.ge_s.return.func.export.string_appeared_here.param.i64.i64.result.i32.local.0.local.1.i64.ge_u.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-recursion.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.recur.export.string_appeared_here.param.i32.result.i32.local.0.i32.eqz.result.i32.then.local.0.else.local.0.i32.const.1.i32.sub.call.recur.local.0.i32.add.return.async test):
* JSTests/wasm/ipint-tests/perf.py:
(progressBar):
* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::IPIntCallee::IPIntCallee):
* Source/JavaScriptCore/wasm/WasmCallee.h:
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp:
(JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantInt32AndLength):
(JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantInt32): Deleted.
(JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantInt32AndLengthOfOtherInt32): Deleted.
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::getLocal):
(JSC::Wasm::IPIntGenerator::setLocal):
(JSC::Wasm::IPIntGenerator::addCall):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::doWasmIPIntCall):

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




More information about the webkit-changes mailing list