@@ -97,28 +97,9 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface {
9797 virtual ~ShellExternalInterface () = default ;
9898
9999 void init (Module& wasm, ModuleInstance& instance) override {
100+ (void )instance;
100101 memory.resize (wasm.memory .initial * wasm::Memory::kPageSize );
101- // apply memory segments
102- for (auto & segment : wasm.memory .segments ) {
103- Address offset = static_cast <uint32_t >(ConstantExpressionRunner<TrivialGlobalManager>(instance.globals ).visit (segment.offset ).value .geti32 ());
104- if (offset + segment.data .size () > wasm.memory .initial * wasm::Memory::kPageSize ) {
105- trap (" invalid offset when initializing memory" );
106- }
107- for (size_t i = 0 ; i != segment.data .size (); ++i) {
108- memory.set (offset + i, segment.data [i]);
109- }
110- }
111-
112102 table.resize (wasm.table .initial );
113- for (auto & segment : wasm.table .segments ) {
114- Address offset = static_cast <uint32_t >(ConstantExpressionRunner<TrivialGlobalManager>(instance.globals ).visit (segment.offset ).value .geti32 ());
115- if (offset + segment.data .size () > wasm.table .initial ) {
116- trap (" invalid offset when initializing table" );
117- }
118- for (size_t i = 0 ; i != segment.data .size (); ++i) {
119- table[offset + i] = segment.data [i];
120- }
121- }
122103 }
123104
124105 void importGlobals (std::map<Name, Literal>& globals, Module& wasm) override {
@@ -174,6 +155,8 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface {
174155 memory.set <std::array<uint8_t , 16 >>(addr, value);
175156 }
176157
158+ void tableStore (Address addr, Name entry) override { table[addr] = entry; }
159+
177160 void growMemory (Address /* oldSize*/ , Address newSize) override {
178161 memory.resize (newSize);
179162 }
0 commit comments