node/deps/v8/test/unittests/heap/base/active-system-pages-unittest.cc
Michaël Zasso fd4f80ce54
deps: update V8 to 10.1.124.6
PR-URL: https://github.com/nodejs/node/pull/42657
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
2022-04-12 22:08:39 +02:00

82 lines
2.6 KiB
C++

// Copyright 2022 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/heap/base/active-system-pages.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace heap {
namespace base {
TEST(ActiveSystemPagesTest, Add) {
ActiveSystemPages pages;
const size_t kPageSizeBits = 0;
EXPECT_EQ(pages.Add(0, 1, kPageSizeBits), size_t{1});
EXPECT_EQ(pages.Add(1, 2, kPageSizeBits), size_t{1});
EXPECT_EQ(pages.Add(63, 64, kPageSizeBits), size_t{1});
EXPECT_EQ(pages.Size(kPageSizeBits), size_t{3});
// Try to add page a second time.
EXPECT_EQ(pages.Add(0, 2, kPageSizeBits), size_t{0});
}
TEST(ActiveSystemPagesTest, AddUnalignedRange) {
ActiveSystemPages pages;
const size_t kPageSizeBits = 12;
const size_t kPageSize = size_t{1} << kPageSizeBits;
const size_t kWordSize = 8;
EXPECT_EQ(pages.Add(0, kPageSize + kWordSize, kPageSizeBits), size_t{2});
EXPECT_EQ(pages.Add(3 * kPageSize - kWordSize, 3 * kPageSize, kPageSizeBits),
size_t{1});
EXPECT_EQ(pages.Add(kPageSize + kWordSize, 3 * kPageSize - kWordSize,
kPageSizeBits),
size_t{0});
EXPECT_EQ(pages.Size(kPageSizeBits), size_t{3} * kPageSize);
}
TEST(ActiveSystemPagesTest, AddFullBitset) {
ActiveSystemPages pages;
const size_t kPageSizeBits = 0;
EXPECT_EQ(pages.Add(0, 64, kPageSizeBits), size_t{64});
EXPECT_EQ(pages.Add(0, 64, kPageSizeBits), size_t{0});
EXPECT_EQ(pages.Size(kPageSizeBits), size_t{64});
}
TEST(ActiveSystemPagesTest, Reduce) {
ActiveSystemPages original;
const size_t kPageSizeBits = 0;
EXPECT_EQ(original.Add(0, 3, kPageSizeBits), size_t{3});
ActiveSystemPages updated;
EXPECT_EQ(updated.Add(1, 3, kPageSizeBits), size_t{2});
EXPECT_EQ(original.Reduce(updated), size_t{1});
}
TEST(ActiveSystemPagesTest, ReduceFullBitset) {
ActiveSystemPages original;
const size_t kPageSizeBits = 0;
EXPECT_EQ(original.Add(0, 64, kPageSizeBits), size_t{64});
ActiveSystemPages updated;
EXPECT_EQ(updated.Add(63, 64, kPageSizeBits), size_t{1});
EXPECT_EQ(original.Reduce(updated), size_t{63});
}
TEST(ActiveSystemPagesTest, Clear) {
ActiveSystemPages pages;
const size_t kPageSizeBits = 0;
EXPECT_EQ(pages.Add(0, 64, kPageSizeBits), size_t{64});
EXPECT_EQ(pages.Clear(), size_t{64});
EXPECT_EQ(pages.Size(kPageSizeBits), size_t{0});
EXPECT_EQ(pages.Add(0, 2, kPageSizeBits), size_t{2});
EXPECT_EQ(pages.Clear(), size_t{2});
EXPECT_EQ(pages.Size(kPageSizeBits), size_t{0});
}
} // namespace base
} // namespace heap