diff options
Diffstat (limited to 'src/shell-interface.h')
-rw-r--r-- | src/shell-interface.h | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/src/shell-interface.h b/src/shell-interface.h index 6c6961541..4cb5f5349 100644 --- a/src/shell-interface.h +++ b/src/shell-interface.h @@ -95,30 +95,7 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface { void init(Module& wasm, ModuleInstance& instance) override { memory.resize(wasm.memory.initial * wasm::Memory::kPageSize); - // apply memory segments - for (auto& segment : wasm.memory.segments) { - if (segment.isPassive) { - continue; - } - Address offset = (uint32_t)ConstantExpressionRunner<TrivialGlobalManager>(instance.globals).visit(segment.offset).value.geti32(); - if (offset + segment.data.size() > wasm.memory.initial * wasm::Memory::kPageSize) { - trap("invalid offset when initializing memory"); - } - for (size_t i = 0; i != segment.data.size(); ++i) { - memory.set(offset + i, segment.data[i]); - } - } - table.resize(wasm.table.initial); - for (auto& segment : wasm.table.segments) { - Address offset = (uint32_t)ConstantExpressionRunner<TrivialGlobalManager>(instance.globals).visit(segment.offset).value.geti32(); - if (offset + segment.data.size() > wasm.table.initial) { - trap("invalid offset when initializing table"); - } - for (size_t i = 0; i != segment.data.size(); ++i) { - table[offset + i] = segment.data[i]; - } - } } void importGlobals(std::map<Name, Literal>& globals, Module& wasm) override { @@ -198,6 +175,10 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface { memory.set<std::array<uint8_t, 16>>(addr, value); } + void tableStore(Address addr, Name entry) override { + table[addr] = entry; + } + void growMemory(Address /*oldSize*/, Address newSize) override { memory.resize(newSize); } |