| ;; RUN: wasm2js %s | filecheck %s |
| |
| (module |
| (import "env" "log" (func $log (result i32))) |
| (memory 1 1) |
| (func (export "test") (result i32) |
| ;; Preserves side-effects in delta when max <= initial |
| (memory.grow (call $log)) |
| ) |
| ) |
| |
| ;; CHECK: function $0() { |
| ;; CHECK-NEXT: return __wasm_memory_grow(log() | 0 | 0) | 0; |
| ;; CHECK-NEXT: } |
| |
| ;; CHECK: function __wasm_memory_grow(pagesToAdd) { |
| ;; CHECK-NEXT: pagesToAdd = pagesToAdd | 0; |
| ;; CHECK-NEXT: var oldPages = __wasm_memory_size() | 0; |
| ;; CHECK-NEXT: var newPages = oldPages + pagesToAdd | 0; |
| ;; CHECK-NEXT: if ((oldPages <= newPages) && (newPages < 65536) && (newPages <= 1)) { |
| ;; CHECK-NEXT: if (oldPages < newPages) { |
| ;; CHECK-NEXT: var newBuffer = new ArrayBuffer(newPages << 16); |
| ;; CHECK-NEXT: var newHEAP8 = new Int8Array(newBuffer); |
| ;; CHECK-NEXT: newHEAP8.set(HEAP8); |
| ;; CHECK-NEXT: HEAP8 = new Int8Array(newBuffer); |
| ;; CHECK-NEXT: HEAP16 = new Int16Array(newBuffer); |
| ;; CHECK-NEXT: HEAP32 = new Int32Array(newBuffer); |
| ;; CHECK-NEXT: HEAPU8 = new Uint8Array(newBuffer); |
| ;; CHECK-NEXT: HEAPU16 = new Uint16Array(newBuffer); |
| ;; CHECK-NEXT: HEAPU32 = new Uint32Array(newBuffer); |
| ;; CHECK-NEXT: HEAPF32 = new Float32Array(newBuffer); |
| ;; CHECK-NEXT: HEAPF64 = new Float64Array(newBuffer); |
| ;; CHECK-NEXT: buffer = newBuffer; |
| ;; CHECK-NEXT: } |
| ;; CHECK-NEXT: return oldPages; |
| ;; CHECK-NEXT: } |
| ;; CHECK-NEXT: return -1; |
| ;; CHECK-NEXT: } |