Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: test/unittests/heap/bitmap-unittest.cc

Issue 1393293002: [heap] Fix mark bits for partially compacted pages. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix compilation Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/spaces.h ('k') | test/unittests/unittests.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "src/heap/spaces.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 namespace {
9
10 using v8::internal::Bitmap;
11
12 class BitmapTest : public ::testing::Test {
13 public:
14 static const uint32_t kBlackCell;
15 static const uint32_t kWhiteCell;
16 static const uint32_t kBlackByte;
17 static const uint32_t kWhiteByte;
18
19 BitmapTest() : memory_(new uint8_t[Bitmap::kSize]) {
20 memset(memory_, 0, Bitmap::kSize);
21 }
22
23 virtual ~BitmapTest() { delete[] memory_; }
24
25 Bitmap* bitmap() { return reinterpret_cast<Bitmap*>(memory_); }
26 uint8_t* raw_bitmap() { return memory_; }
27
28 private:
29 uint8_t* memory_;
30 };
31
32
33 const uint32_t BitmapTest::kBlackCell = 0xAAAAAAAA;
34 const uint32_t BitmapTest::kWhiteCell = 0x00000000;
35 const uint32_t BitmapTest::kBlackByte = 0xAA;
36 const uint32_t BitmapTest::kWhiteByte = 0x00;
37
38
39 TEST_F(BitmapTest, IsZeroInitialized) {
40 // We require all tests to start from a zero-initialized bitmap. Manually
41 // verify this invariant here.
42 for (size_t i = 0; i < Bitmap::kSize; i++) {
43 EXPECT_EQ(raw_bitmap()[i], kWhiteByte);
44 }
45 }
46
47
48 TEST_F(BitmapTest, Cells) {
49 Bitmap* bm = bitmap();
50 bm->cells()[1] = kBlackCell;
51 uint8_t* raw = raw_bitmap();
52 int second_cell_base = Bitmap::kBytesPerCell;
53 for (size_t i = 0; i < Bitmap::kBytesPerCell; i++) {
54 EXPECT_EQ(raw[second_cell_base + i], kBlackByte);
55 }
56 }
57
58
59 TEST_F(BitmapTest, CellsCount) {
60 int last_cell_index = bitmap()->CellsCount() - 1;
61 bitmap()->cells()[last_cell_index] = kBlackCell;
62 // Manually verify on raw memory.
63 uint8_t* raw = raw_bitmap();
64 for (size_t i = 0; i < Bitmap::kSize; i++) {
65 // Last cell should be set.
66 if (i >= (Bitmap::kSize - Bitmap::kBytesPerCell)) {
67 EXPECT_EQ(raw[i], kBlackByte);
68 } else {
69 EXPECT_EQ(raw[i], kWhiteByte);
70 }
71 }
72 }
73
74
75 TEST_F(BitmapTest, IsClean) {
76 Bitmap* bm = bitmap();
77 EXPECT_TRUE(bm->IsClean());
78 bm->cells()[0] = kBlackCell;
79 EXPECT_FALSE(bm->IsClean());
80 }
81
82
83 TEST_F(BitmapTest, ClearRange1) {
84 Bitmap* bm = bitmap();
85 bm->cells()[0] = kBlackCell;
86 bm->cells()[1] = kBlackCell;
87 bm->cells()[2] = kBlackCell;
88 bm->ClearRange(0, Bitmap::kBitsPerCell + Bitmap::kBitsPerCell / 2);
89 EXPECT_EQ(bm->cells()[0], kWhiteCell);
90 EXPECT_EQ(bm->cells()[1], 0xAAAA0000);
91 EXPECT_EQ(bm->cells()[2], kBlackCell);
92 }
93
94
95 TEST_F(BitmapTest, ClearRange2) {
96 Bitmap* bm = bitmap();
97 bm->cells()[0] = kBlackCell;
98 bm->cells()[1] = kBlackCell;
99 bm->cells()[2] = kBlackCell;
100 bm->ClearRange(Bitmap::kBitsPerCell,
101 Bitmap::kBitsPerCell + Bitmap::kBitsPerCell / 2);
102 EXPECT_EQ(bm->cells()[0], kBlackCell);
103 EXPECT_EQ(bm->cells()[1], 0xAAAA0000);
104 EXPECT_EQ(bm->cells()[2], kBlackCell);
105 }
106
107 } // namespace
OLDNEW
« no previous file with comments | « src/heap/spaces.h ('k') | test/unittests/unittests.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698