diff --git a/source/wasm/spirv-tools.cpp b/source/wasm/spirv-tools.cpp index 33f2f05fb0..c3c74ae831 100644 --- a/source/wasm/spirv-tools.cpp +++ b/source/wasm/spirv-tools.cpp @@ -39,21 +39,21 @@ std::string dis(std::string const& buffer, uint32_t env, uint32_t options) { return disassembly; } -emscripten::val as(std::string const& source, uint32_t env, uint32_t options) { +std::string as(std::string const& source, uint32_t env, uint32_t options) { spvtools::SpirvTools core(static_cast(env)); core.SetMessageConsumer(print_msg_to_stderr); std::vector spirv; if (!core.Assemble(source, &spirv, options)) spirv.clear(); - const uint8_t* ptr = reinterpret_cast(spirv.data()); - return emscripten::val(emscripten::typed_memory_view(spirv.size() * 4, - ptr)); + // Copy the data out. + const auto* ptr = reinterpret_cast(spirv.data()); + return std::string(ptr,spirv.size()*4); } EMSCRIPTEN_BINDINGS(my_module) { function("dis", &dis); function("as", &as); - + constant("SPV_ENV_UNIVERSAL_1_0", static_cast(SPV_ENV_UNIVERSAL_1_0)); constant("SPV_ENV_VULKAN_1_0", static_cast(SPV_ENV_VULKAN_1_0)); constant("SPV_ENV_UNIVERSAL_1_1", static_cast(SPV_ENV_UNIVERSAL_1_1));