summaryrefslogtreecommitdiff
path: root/src/wasm-binary.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-27 14:54:30 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-27 17:00:35 -0700
commitf22e2796f5ac72c64c36cb562d1462093741f8d7 (patch)
tree9f33653987be8cb74be6783221e98340f95b27cc /src/wasm-binary.h
parent90bdf763537815a523d0dbe75a67e7f0b14b0d9e (diff)
downloadbinaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.tar.gz
binaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.tar.bz2
binaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.zip
just use a simple vector in data segments
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r--src/wasm-binary.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 9d4f567b0..91fe91b49 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -666,14 +666,14 @@ public:
if (wasm->memory.segments.size() == 0) return;
uint32_t num = 0;
for (auto& segment : wasm->memory.segments) {
- if (segment.size > 0) num++;
+ if (segment.data.size() > 0) num++;
}
auto start = startSection(BinaryConsts::Section::DataSegments);
o << U32LEB(num);
for (auto& segment : wasm->memory.segments) {
- if (segment.size == 0) continue;
+ if (segment.data.size() == 0) continue;
o << U32LEB(segment.offset);
- writeInlineBuffer(segment.data, segment.size);
+ writeInlineBuffer(&segment.data[0], segment.data.size());
}
finishSection(start);
}
@@ -1548,15 +1548,13 @@ public:
auto num = getU32LEB();
for (size_t i = 0; i < num; i++) {
Memory::Segment curr;
- curr.offset = getU32LEB();
+ auto offset = getU32LEB();
auto size = getU32LEB();
- auto buffer = (char*)malloc(size);
+ char buffer[size];
for (size_t j = 0; j < size; j++) {
buffer[j] = char(getInt8());
}
- curr.data = (const char*)buffer;
- curr.size = size;
- wasm.memory.segments.push_back(curr);
+ wasm.memory.segments.emplace_back(offset, (const char*)buffer, size);
}
}