summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-05 21:56:45 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-05 21:56:45 -0800
commitdc9ef1be919cee495cfdc48ee10fcee184e93e58 (patch)
treeb7de509b897aa72c2fadcb76da89e12ba83bd7ae /src
parentb26bffbb8bb96fa6ba04779cceb9916d881b2517 (diff)
downloadbinaryen-dc9ef1be919cee495cfdc48ee10fcee184e93e58.tar.gz
binaryen-dc9ef1be919cee495cfdc48ee10fcee184e93e58.tar.bz2
binaryen-dc9ef1be919cee495cfdc48ee10fcee184e93e58.zip
fix shell memory access
Diffstat (limited to 'src')
-rw-r--r--src/wasm-shell.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/wasm-shell.cpp b/src/wasm-shell.cpp
index d16042d24..c37ba79a3 100644
--- a/src/wasm-shell.cpp
+++ b/src/wasm-shell.cpp
@@ -53,25 +53,25 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface {
switch (load->type) {
case i32: {
switch (load->bytes) {
- case 1: return load->signed_ ? (int32_t)((int8_t*)memory)[addr] : (int32_t)((uint8_t*)memory)[addr];
- case 2: return load->signed_ ? (int32_t)((int16_t*)memory)[addr] : (int32_t)((uint16_t*)memory)[addr];
- case 4: return load->signed_ ? (int32_t)((int32_t*)memory)[addr] : (int32_t)((uint32_t*)memory)[addr];
+ case 1: return load->signed_ ? (int32_t)*((int8_t*)(memory+addr)) : (int32_t)*((uint8_t*)(memory+addr));
+ case 2: return load->signed_ ? (int32_t)*((int16_t*)(memory+addr)) : (int32_t)*((uint16_t*)(memory+addr));
+ case 4: return load->signed_ ? (int32_t)*((int32_t*)(memory+addr)) : (int32_t)*((uint32_t*)(memory+addr));
default: abort();
}
break;
}
case i64: {
switch (load->bytes) {
- case 1: return load->signed_ ? (int64_t)((int8_t*)memory)[addr] : (int64_t)((uint8_t*)memory)[addr];
- case 2: return load->signed_ ? (int64_t)((int16_t*)memory)[addr] : (int64_t)((uint16_t*)memory)[addr];
- case 4: return load->signed_ ? (int64_t)((int32_t*)memory)[addr] : (int64_t)((uint32_t*)memory)[addr];
- case 8: return load->signed_ ? (int64_t)((int64_t*)memory)[addr] : (int64_t)((uint64_t*)memory)[addr];
+ case 1: return load->signed_ ? (int64_t)*((int8_t*)(memory+addr)) : (int64_t)*((uint8_t*)(memory+addr));
+ case 2: return load->signed_ ? (int64_t)*((int16_t*)(memory+addr)) : (int64_t)*((uint16_t*)(memory+addr));
+ case 4: return load->signed_ ? (int64_t)*((int32_t*)(memory+addr)) : (int64_t)*((uint32_t*)(memory+addr));
+ case 8: return load->signed_ ? (int64_t)*((int64_t*)(memory+addr)) : (int64_t)*((uint64_t*)(memory+addr));
default: abort();
}
break;
}
- case f32: return ((float*)memory)[addr];
- case f64: return ((double*)memory)[addr];
+ case f32: return *((float*)(memory+addr));
+ case f64: return *((double*)(memory+addr));
default: abort();
}
}
@@ -81,25 +81,25 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface {
switch (store->type) {
case i32: {
switch (store->bytes) {
- case 1: ((int8_t*)memory)[addr] = value.geti32(); break;
- case 2: ((int16_t*)memory)[addr] = value.geti32(); break;
- case 4: ((int32_t*)memory)[addr] = value.geti32(); break;
+ case 1: *((int8_t*)(memory+addr)) = value.geti32(); break;
+ case 2: *((int16_t*)(memory+addr)) = value.geti32(); break;
+ case 4: *((int32_t*)(memory+addr)) = value.geti32(); break;
default: abort();
}
break;
}
case i64: {
switch (store->bytes) {
- case 1: ((int8_t*)memory)[addr] = value.geti64(); break;
- case 2: ((int16_t*)memory)[addr] = value.geti64(); break;
- case 4: ((int32_t*)memory)[addr] = value.geti64(); break;
- case 8: ((int64_t*)memory)[addr] = value.geti64(); break;
+ case 1: *((int8_t*)(memory+addr)) = value.geti64(); break;
+ case 2: *((int16_t*)(memory+addr)) = value.geti64(); break;
+ case 4: *((int32_t*)(memory+addr)) = value.geti64(); break;
+ case 8: *((int64_t*)(memory+addr)) = value.geti64(); break;
default: abort();
}
break;
}
- case f32: ((float*)memory)[addr] = value.getf32(); break;
- case f64: ((double*)memory)[addr] = value.getf64(); break;
+ case f32: *((float*)(memory+addr)) = value.getf32(); break;
+ case f64: *((double*)(memory+addr)) = value.getf64(); break;
default: abort();
}
}