8581adaee6
When this is enabled, v8 reserves a large region of virtual address space during initialization, at the start of which it will place its 4GB pointer compression cage. The remainder of the cage is used to store ArrayBuffer backing stores and WASM memory buffers. This will later allow referencing these buffers from inside V8 through offsets from the cage base rather than through raw pointers. Bug: chromium:1218005 Change-Id: I300094b07f64985217104b14c320cc019f8438af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3010195 Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Samuel Groß <saelo@google.com> Cr-Commit-Position: refs/heads/master@{#76234}
37 lines
775 B
C++
37 lines
775 B
C++
// Copyright 2021 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.
|
|
|
|
#include "src/init/vm-cage.h"
|
|
#include "test/cctest/cctest.h"
|
|
|
|
#ifdef V8_VIRTUAL_MEMORY_CAGE
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
UNINITIALIZED_TEST(VirtualMemoryCageCreation) {
|
|
base::PageAllocator page_allocator;
|
|
|
|
V8VirtualMemoryCage cage;
|
|
|
|
CHECK(!cage.is_initialized());
|
|
CHECK(!cage.is_disabled());
|
|
CHECK_EQ(cage.size(), 0);
|
|
|
|
CHECK(cage.Initialize(&page_allocator));
|
|
|
|
CHECK(cage.is_initialized());
|
|
CHECK_GT(cage.base(), 0);
|
|
CHECK_GT(cage.size(), 0);
|
|
|
|
cage.TearDown();
|
|
|
|
CHECK(!cage.is_initialized());
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace v8
|
|
|
|
#endif // V8_VIRTUAL_MEMORY_CAGE
|