首页 > 解决方案 > JS 中的 function.name 用于 WASM 模块

问题描述

我在nodejs 中使用 WASM并注意到function.name对于 WASM 模块0,即使我的 WAT 文件导出了函数名称。

为什么 WASM 模块不设置导出名称?WASMfunction.name在 JS 中设置导出名称是否存在性能问题?这个 nodejs 在 WebAssembly 规范中是特定的还是缺失的?

我希望我的问题很清楚。我想知道为什么function.name0WASM 模块。

我正在使用wabt@1.0.13 编译一个简单的 WAT 文件。

(module
  (func $add (param i32 i32) (result i32)
    (i32.add
      (local.get 0)
      (local.get 1))
  )
  (export "add" (func $add)))

wasm2wat以及来自已编译 WASM 文件的相同代码:

(module
  (type $t0 (func (param i32 i32) (result i32)))
  (func $add (type $t0) (param $p0 i32) (param $p1 i32) (result i32)
    local.get $p0
    local.get $p1
    i32.add)
  (export "add" (func $add)))

添加.wasm

asm`add
         j

标签: node.jswebassembly

解决方案


导出的 Wasm 函数的名称被定义为索引。

您已经有了实际导出的名称,因为您必须add按其名称导入。

另请参阅https://developer.mozilla.org/en-US/docs/WebAssembly/Exported_functions他们在哪里调用testFunc.toString()并且结果函数具有 name 0


推荐阅读