func sysReserve(v unsafe.Pointer, n uintptr) unsafe.Pointer {
// TODO(neelance): maybe unify with mem_plan9.go, depending on how https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#finer-grained-control-over-memory turns out
+ if v != nil {
+ // The address space of WebAssembly's linear memory is contiguous,
+ // so requesting specific addresses is not supported. We could use
+ // a different address, but then mheap.sysAlloc discards the result
+ // right away and we don't reuse chunks passed to sysFree.
+ return nil
+ }
+
if reserveEnd < lastmoduledatap.end {
reserveEnd = lastmoduledatap.end
}
- if uintptr(v) < reserveEnd {
- v = unsafe.Pointer(reserveEnd)
- }
- reserveEnd = uintptr(v) + n
+ v = unsafe.Pointer(reserveEnd)
+ reserveEnd += n
current := currentMemory()
needed := int32(reserveEnd/sys.DefaultPhysPageSize + 1)