v8/test/mjsunit/wasm/many-memories.js
Clemens Backes d5720c747b [wasm] Reduce memory reservation without trap handlers
If trap handlers are disabled, we don't need guard regions around wasm
memories. Hence use the dynamic {trap_handler::IsTrapHandlerEnabled()}
check, instead of always reserving guard regions on all 64-bit
platforms.
This will allow to reserve pretty much arbitrarily many wasm memories if
trap handlers are disabled.

Two tests are added to test the number of memories that can be
allocated: With trap handlers, at least 50 memories should always be
possible. Without trap handlers, 10000 small memories should not be a
problem (each one is taking 64kB, so it's 640MB overall).

Drive-by: Improve tracing.

R=ahaas@chromium.org

Bug: v8:11017
Change-Id: Ic4c620f63dfbef571e64df0b3372b83a1db566ab
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491034
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70732}
2020-10-23 12:45:30 +00:00

25 lines
934 B
JavaScript

// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// No reason to stress-opt this; save some time.
// Flags: --no-stress-opt
load('test/mjsunit/wasm/wasm-module-builder.js');
// Test that we can generate at least 50 memories of small size.
// More memories are currently not possible if the trap handler is enabled,
// because we reserve 10GB then, and we have a virtual memory space limit of
// 512GB on MIPS64 and 1TB+4GB on other 64-bit systems.
// The number of memories should be increased in this test once we raise that
// limit or fix the allocation strategy to allow for more memories generally.
const num_memories = 50;
const memories = [];
while (memories.length < num_memories) {
print('Allocating memory #' + memories.length);
memories.push(new WebAssembly.Memory({initial: 1, maximum: 1}));
}