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}
23 lines
706 B
JavaScript
23 lines
706 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.
|
|
|
|
// Flags: --no-wasm-trap-handler
|
|
|
|
// No reason to stress-opt this; save some time.
|
|
// Flags: --no-stress-opt
|
|
|
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
|
|
|
// Without trap handlers, we are able to allocate basically arbitrarily many
|
|
// memories, because we don't need to reserve a huge amount of virtual address
|
|
// space.
|
|
|
|
const num_memories = 10000;
|
|
|
|
const memories = [];
|
|
while (memories.length < num_memories) {
|
|
print('Allocating memory #' + memories.length);
|
|
memories.push(new WebAssembly.Memory({initial: 1, maximum: 1}));
|
|
}
|