diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-21 14:53:57 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-21 14:53:57 -0800 |
commit | f0dbc606f7217e1151edd14c9ecfa80290b3009b (patch) | |
tree | 48bd2caf87a9e445ff675f9429d7c82998f15b2e /src | |
parent | 97f639e459643de5e6659080335174cb795dff4d (diff) | |
download | binaryen-f0dbc606f7217e1151edd14c9ecfa80290b3009b.tar.gz binaryen-f0dbc606f7217e1151edd14c9ecfa80290b3009b.tar.bz2 binaryen-f0dbc606f7217e1151edd14c9ecfa80290b3009b.zip |
support load/store offsets in wasm2asm
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm2asm.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index 6edc8fd82..dc7f5c93e 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -755,6 +755,9 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { // normal load assert(curr->bytes == curr->align); // TODO: unaligned Ref ptr = visit(curr->ptr, EXPRESSION_RESULT); + if (curr->offset) { + ptr = makeAsmCoercion(ValueBuilder::makeBinary(ptr, PLUS, ValueBuilder::makeNum(curr->offset)), ASM_INT); + } Ref ret; switch (curr->type) { case i32: { @@ -791,6 +794,9 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { // normal store assert(curr->bytes == curr->align); // TODO: unaligned Ref ptr = visit(curr->ptr, EXPRESSION_RESULT); + if (curr->offset) { + ptr = makeAsmCoercion(ValueBuilder::makeBinary(ptr, PLUS, ValueBuilder::makeNum(curr->offset)), ASM_INT); + } Ref value = visit(curr->value, EXPRESSION_RESULT); Ref ret; switch (curr->type) { |