summaryrefslogtreecommitdiff
path: root/src/wasm-builder.h
diff options
context:
space:
mode:
authorWouter van Oortmerssen <aardappel@gmail.com>2020-09-18 15:50:25 -0700
committerGitHub <noreply@github.com>2020-09-18 15:50:25 -0700
commit3b4cb935f83c7fabacbf61146e56dabc0d65a441 (patch)
tree9aaac74aad59fe2ff2b00ac6e6a77bb808b01747 /src/wasm-builder.h
parent1a928bc3ff4b511e81b3f93db8aea872e88abaaf (diff)
downloadbinaryen-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.h15
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;