summaryrefslogtreecommitdiff
path: root/src/wasm-binary.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-12 21:36:10 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-12 21:36:10 -0800
commit6395ca27a90fdb50f1b74ca0b17e25d39f80342e (patch)
treec603fee03901942c7bad83dc7c820cd2ab941cad /src/wasm-binary.h
parentadadace7899133b4a25dab47044a373879647ddb (diff)
parentf061ca831b4ec6d9d3fab0043a42fce0a0b52cf7 (diff)
downloadbinaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.tar.gz
binaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.tar.bz2
binaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.zip
Merge pull request #196 from WebAssembly/spec-start
Fully support start in wasm modules
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r--src/wasm-binary.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 2c884a4f5..b1db70a97 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -155,7 +155,8 @@ enum Section {
Functions = 2,
DataSegments = 4,
FunctionTable = 5,
- End = 6
+ End = 6,
+ Start = 7
};
enum FunctionEntry {
@@ -380,6 +381,7 @@ public:
}
void write() {
+ writeStart();
writeMemory();
writeSignatures();
writeFunctions();
@@ -389,6 +391,13 @@ public:
finishUp();
}
+ void writeStart() {
+ if (!wasm->start.is()) return;
+ if (debug) std::cerr << "== writeStart" << std::endl;
+ o << int8_t(BinaryConsts::Start);
+ emitString(wasm->start.str);
+ }
+
void writeMemory() {
if (wasm->memory.max == 0) return;
if (debug) std::cerr << "== writeMemory" << std::endl;
@@ -980,6 +989,7 @@ public:
}
switch (section) {
+ case BinaryConsts::Start: readStart(); break;
case BinaryConsts::Memory: readMemory(); break;
case BinaryConsts::Signatures: readSignatures(); break;
case BinaryConsts::Functions: readFunctions(); break;
@@ -1082,6 +1092,11 @@ public:
assert(x == y);
}
+ void readStart() {
+ if (debug) std::cerr << "== readStart" << std::endl;
+ wasm.start = getString();
+ }
+
void readMemory() {
if (debug) std::cerr << "== readMemory" << std::endl;
size_t initial = getInt8();