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

Side by Side Diff: src/heap/spaces.h

Issue 1040443002: MarkBit cleanup: They have to be accessed through Marking accessors. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/objects-visiting-inl.h ('k') | src/heap/spaces.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_HEAP_SPACES_H_ 5 #ifndef V8_HEAP_SPACES_H_
6 #define V8_HEAP_SPACES_H_ 6 #define V8_HEAP_SPACES_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/base/atomicops.h" 9 #include "src/base/atomicops.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 class Space; 97 class Space;
98 class FreeList; 98 class FreeList;
99 class MemoryChunk; 99 class MemoryChunk;
100 100
101 class MarkBit { 101 class MarkBit {
102 public: 102 public:
103 typedef uint32_t CellType; 103 typedef uint32_t CellType;
104 104
105 inline MarkBit(CellType* cell, CellType mask) : cell_(cell), mask_(mask) {} 105 inline MarkBit(CellType* cell, CellType mask) : cell_(cell), mask_(mask) {}
106 106
107 inline CellType* cell() { return cell_; }
108 inline CellType mask() { return mask_; }
109
110 #ifdef DEBUG 107 #ifdef DEBUG
111 bool operator==(const MarkBit& other) { 108 bool operator==(const MarkBit& other) {
112 return cell_ == other.cell_ && mask_ == other.mask_; 109 return cell_ == other.cell_ && mask_ == other.mask_;
113 } 110 }
114 #endif 111 #endif
115 112
116 inline void Set() { *cell_ |= mask_; } 113 private:
117 inline bool Get() { return (*cell_ & mask_) != 0; } 114 inline CellType* cell() { return cell_; }
118 inline void Clear() { *cell_ &= ~mask_; } 115 inline CellType mask() { return mask_; }
119
120 116
121 inline MarkBit Next() { 117 inline MarkBit Next() {
122 CellType new_mask = mask_ << 1; 118 CellType new_mask = mask_ << 1;
123 if (new_mask == 0) { 119 if (new_mask == 0) {
124 return MarkBit(cell_ + 1, 1); 120 return MarkBit(cell_ + 1, 1);
125 } else { 121 } else {
126 return MarkBit(cell_, new_mask); 122 return MarkBit(cell_, new_mask);
127 } 123 }
128 } 124 }
129 125
130 private: 126 inline void Set() { *cell_ |= mask_; }
127 inline bool Get() { return (*cell_ & mask_) != 0; }
128 inline void Clear() { *cell_ &= ~mask_; }
129
131 CellType* cell_; 130 CellType* cell_;
132 CellType mask_; 131 CellType mask_;
132
133 friend class Marking;
133 }; 134 };
134 135
135 136
136 // Bitmap is a sequence of cells each containing fixed number of bits. 137 // Bitmap is a sequence of cells each containing fixed number of bits.
137 class Bitmap { 138 class Bitmap {
138 public: 139 public:
139 static const uint32_t kBitsPerCell = 32; 140 static const uint32_t kBitsPerCell = 32;
140 static const uint32_t kBitsPerCellLog2 = 5; 141 static const uint32_t kBitsPerCellLog2 = 5;
141 static const uint32_t kBitIndexMask = kBitsPerCell - 1; 142 static const uint32_t kBitIndexMask = kBitsPerCell - 1;
142 static const uint32_t kBytesPerCell = kBitsPerCell / kBitsPerByte; 143 static const uint32_t kBytesPerCell = kBitsPerCell / kBitsPerByte;
(...skipping 2717 matching lines...) Expand 10 before | Expand all | Expand 10 after
2860 count = 0; 2861 count = 0;
2861 } 2862 }
2862 // Must be small, since an iteration is used for lookup. 2863 // Must be small, since an iteration is used for lookup.
2863 static const int kMaxComments = 64; 2864 static const int kMaxComments = 64;
2864 }; 2865 };
2865 #endif 2866 #endif
2866 } 2867 }
2867 } // namespace v8::internal 2868 } // namespace v8::internal
2868 2869
2869 #endif // V8_HEAP_SPACES_H_ 2870 #endif // V8_HEAP_SPACES_H_
OLDNEW
« no previous file with comments | « src/heap/objects-visiting-inl.h ('k') | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698