Wasm-bindgen: доступ к буферу памяти экземпляра wasm (из JS) - PullRequest
2 голосов
/ 13 февраля 2020

Согласно этому комментарию github , я могу воссоздать Uint8ClampedArray или Uint8Array, возвращаемый из Rust / wasm, напрямую обращаясь к памяти экземпляра wasm:

const textureRaw = new Uint8ClampedArray(memory.buffer, texture.offset(), texture.size());

Вещи файлы js, сгенерированные wasm-bindgen, уже создают экземпляр wasm, и я хотел бы получить доступ к памяти этого конкретного экземпляра, но он не экспортируется:

// XXXXX_bg.js

const path = require('path').join(__dirname, 'ed25519_sigs_bg.wasm');
const bytes = require('fs').readFileSync(path);
let imports = {};
imports['./ed25519_sigs.js'] = require('./ed25519_sigs.js');

const wasmModule = new WebAssembly.Module(bytes);
const wasmInstance = new WebAssembly.Instance(wasmModule, imports);
module.exports = wasmInstance.exports;

Как мне получить доступ к буферу памяти текущего экземпляра wasm?

Я пытался сделать:

import { memory } from "XXXXXX_bg";

// say o is returned as an object with the right offset() and size() accessors. It represents an Uint8Array in memory
let outU8A: Uint8Array = new Uint8Array(
  memory.buffer,
  o.offset(),
  o.size()
);

Вывод - это ожидаемый размер, но каждое значение равно нулю. Что заставляет меня думать, что я могу пытаться загрузить второй экземпляр wasm.memory?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...