diff options
author | Wouter van Oortmerssen <aardappel@gmail.com> | 2020-09-18 15:50:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 15:50:25 -0700 |
commit | 3b4cb935f83c7fabacbf61146e56dabc0d65a441 (patch) | |
tree | 9aaac74aad59fe2ff2b00ac6e6a77bb808b01747 /src/wasm-builder.h | |
parent | 1a928bc3ff4b511e81b3f93db8aea872e88abaaf (diff) | |
download | binaryen-3b4cb935f83c7fabacbf61146e56dabc0d65a441.tar.gz binaryen-3b4cb935f83c7fabacbf61146e56dabc0d65a441.tar.bz2 binaryen-3b4cb935f83c7fabacbf61146e56dabc0d65a441.zip |
Initial implementation of "Memory64" proposal (#3130)
Also includes a lot of new spec tests that eventually need to go into the spec repo
Diffstat (limited to 'src/wasm-builder.h')
-rw-r--r-- | src/wasm-builder.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/wasm-builder.h b/src/wasm-builder.h index 762d89dbe..b35fde376 100644 --- a/src/wasm-builder.h +++ b/src/wasm-builder.h @@ -35,10 +35,12 @@ struct NameType { class Builder { MixedArena& allocator; + Module& wasm; public: - Builder(MixedArena& allocator) : allocator(allocator) {} - Builder(Module& wasm) : allocator(wasm.allocator) {} + Builder(MixedArena& allocator, Module& wasm) + : allocator(allocator), wasm(wasm) {} + Builder(Module& wasm) : allocator(wasm.allocator), wasm(wasm) {} // make* functions, other globals @@ -486,6 +488,9 @@ public: ret->finalize(); return ret; } + Const* makeConstPtr(uint64_t val) { + return makeConst(Literal::makeFromUInt64(val, wasm.memory.indexType)); + } Binary* makeBinary(BinaryOp op, Expression* left, Expression* right) { auto* ret = allocator.alloc<Binary>(); ret->op = op; @@ -521,11 +526,17 @@ public: } MemorySize* makeMemorySize() { auto* ret = allocator.alloc<MemorySize>(); + if (wasm.memory.is64()) { + ret->make64(); + } ret->finalize(); return ret; } MemoryGrow* makeMemoryGrow(Expression* delta) { auto* ret = allocator.alloc<MemoryGrow>(); + if (wasm.memory.is64()) { + ret->make64(); + } ret->delta = delta; ret->finalize(); return ret; |