wasm: align heap to 16 bytes

This commit fixes two things:

  * It changes the alignment to 16 bytes (from 4), to match max_align_t
    in C.
  * It manually aligns heapStart on WebAssembly, to work around a bug in
    wasm-ld with --stack-first (see https://reviews.llvm.org/D106499).
This commit is contained in:
Ayke van Laethem
2021-07-25 14:30:16 +02:00
committed by Ron Evans
parent e834d78871
commit 65c1978965
2 changed files with 12 additions and 2 deletions
+4 -2
View File
@@ -32,9 +32,11 @@ var (
const wasmPageSize = 64 * 1024
// Align on word boundary.
func align(ptr uintptr) uintptr {
return (ptr + 3) &^ 3
// Align to 16, which is the alignment of max_align_t:
// https://godbolt.org/z/dYqTsWrGq
const heapAlign = 16
return (ptr + heapAlign - 1) &^ (heapAlign - 1)
}
func getCurrentStackPointer() uintptr