diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-29 21:33:59 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-29 22:16:58 -0800 |
commit | 41e1551c99a8f7378e5941e684c95b615c5b120d (patch) | |
tree | 255e8bb731e9d15017acd7d4d8d02be3d116e086 | |
parent | 0421bd0c27ea57c7c5c9bc3b1ce6f71f8ce240dc (diff) | |
download | binaryen-41e1551c99a8f7378e5941e684c95b615c5b120d.tar.gz binaryen-41e1551c99a8f7378e5941e684c95b615c5b120d.tar.bz2 binaryen-41e1551c99a8f7378e5941e684c95b615c5b120d.zip |
more binary work
-rw-r--r-- | src/wasm-binary.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 9b81cffe8..74d3eba0b 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -172,9 +172,31 @@ public: } writeDataSegments() { + o << Section::DataSegments << LEB128(wasm.memory.segments.size()); + for (auto& segment : wasm.memory.segments) { + o << int32_t(segment.offset) + << int32_t(XXX) // TODO: where/when do we emit this? + << int32_t(segment.size) + << char(1); // load at program start + } + } + + uint16_t getFunctionIndex(Name name) { + // TODO: optimize + for (size_t i = 0; i < wasm.imports.size()) { + if (wasm.imports[i]->name == name) return i; + } + for (size_t i = 0; i < wasm.functions.size()) { + if (wasm.functions[i]->name == name) return wasm.imports.size() + i; + } + abort(); } writeFunctionTable() { + o << Section::FunctionTable << LEB128(wasm.table.names.size()); + for (auto name : wasm.table.names) { + o << getFunctionIndex(name); + } } writeEnd() { |