function.name 在 JS 中用于 WASM 模块

function.name in JS for WASM module

我是 playing around with WASM in nodejs and noticed that function.name,因为 WASM 模块是 0,即使我的 WAT 文件导出函数名称。

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

我希望我的问题很清楚。我想知道为什么 function.name 对于 WASM 模块来说是 0

我正在使用 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)))

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

(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)))

add.wasm

asm`add
         j

导出的Wasm函数名称为defined to be the index.

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

另见 https://developer.mozilla.org/en-US/docs/WebAssembly/Exported_functions 他们调用 testFunc.toString() 的地方,结果函数的名称为 0.