d5720c747b
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}
25 lines
934 B
JavaScript
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}));
|
|
}
|