node.js - JS 中的 function.name 用于 WASM 模块
问题描述
我在nodejs 中使用 WASM并注意到function.name
对于 WASM 模块0
,即使我的 WAT 文件导出了函数名称。
为什么 WASM 模块不设置导出名称?WASMfunction.name
在 JS 中设置导出名称是否存在性能问题?这个 nodejs 在 WebAssembly 规范中是特定的还是缺失的?
我希望我的问题很清楚。我想知道为什么function.name
是0
WASM 模块。
我正在使用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
解决方案
导出的 Wasm 函数的名称被定义为索引。
您已经有了实际导出的名称,因为您必须add
按其名称导入。
另请参阅https://developer.mozilla.org/en-US/docs/WebAssembly/Exported_functions他们在哪里调用testFunc.toString()
并且结果函数具有 name 0
。
推荐阅读
- verilog - 将输入 A 的部分数组设置为模块的输入
- x509 - Julia 的哪个包可以解析 x.509 数字证书?
- eclipse - Epsilon 模型迁移 (Flock) - 完整副本
- python - Woocommerce API- 从无引发 JSONDecodeError("Expecting value", s, err.value)
- python - 使用 Python 使用列表 DB 打印字典值
- reactjs - 使用 cmd 通过 create-react-app 创建新应用程序以进行反应时发生错误
- angular - Angular 11、:enter 和 :leave 动画不适用于 *ngIf
- java - Spring Boot - 每个 pod 运行一个特定的后台作业
- c# - 当我输入实数时它可以工作,但是赢了我输入十进制数这个错误,我现在不知道为什么
- python - 如何在程序重新运行/Python期间停止重写日志数据