OLD | NEW |
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/atomic-utils.h" | 9 #include "src/atomic-utils.h" |
10 #include "src/base/atomicops.h" | 10 #include "src/base/atomicops.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 class MemoryChunk { | 293 class MemoryChunk { |
294 public: | 294 public: |
295 enum MemoryChunkFlags { | 295 enum MemoryChunkFlags { |
296 IS_EXECUTABLE, | 296 IS_EXECUTABLE, |
297 POINTERS_TO_HERE_ARE_INTERESTING, | 297 POINTERS_TO_HERE_ARE_INTERESTING, |
298 POINTERS_FROM_HERE_ARE_INTERESTING, | 298 POINTERS_FROM_HERE_ARE_INTERESTING, |
299 IN_FROM_SPACE, // Mutually exclusive with IN_TO_SPACE. | 299 IN_FROM_SPACE, // Mutually exclusive with IN_TO_SPACE. |
300 IN_TO_SPACE, // All pages in new space has one of these two set. | 300 IN_TO_SPACE, // All pages in new space has one of these two set. |
301 NEW_SPACE_BELOW_AGE_MARK, | 301 NEW_SPACE_BELOW_AGE_MARK, |
302 EVACUATION_CANDIDATE, | 302 EVACUATION_CANDIDATE, |
303 RESCAN_ON_EVACUATION, | |
304 NEVER_EVACUATE, // May contain immortal immutables. | 303 NEVER_EVACUATE, // May contain immortal immutables. |
305 | 304 |
306 // Large objects can have a progress bar in their page header. These object | 305 // Large objects can have a progress bar in their page header. These object |
307 // are scanned in increments and will be kept black while being scanned. | 306 // are scanned in increments and will be kept black while being scanned. |
308 // Even if the mutator writes to them they will be kept black and a white | 307 // Even if the mutator writes to them they will be kept black and a white |
309 // to grey transition is performed in the value. | 308 // to grey transition is performed in the value. |
310 HAS_PROGRESS_BAR, | 309 HAS_PROGRESS_BAR, |
311 | 310 |
312 // This flag is intended to be used for testing. Works only when both | 311 // This flag is intended to be used for testing. Works only when both |
313 // FLAG_stress_compaction and FLAG_manual_evacuation_candidates_selection | 312 // FLAG_stress_compaction and FLAG_manual_evacuation_candidates_selection |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 347 |
349 static const int kPointersToHereAreInterestingMask = | 348 static const int kPointersToHereAreInterestingMask = |
350 1 << POINTERS_TO_HERE_ARE_INTERESTING; | 349 1 << POINTERS_TO_HERE_ARE_INTERESTING; |
351 | 350 |
352 static const int kPointersFromHereAreInterestingMask = | 351 static const int kPointersFromHereAreInterestingMask = |
353 1 << POINTERS_FROM_HERE_ARE_INTERESTING; | 352 1 << POINTERS_FROM_HERE_ARE_INTERESTING; |
354 | 353 |
355 static const int kEvacuationCandidateMask = 1 << EVACUATION_CANDIDATE; | 354 static const int kEvacuationCandidateMask = 1 << EVACUATION_CANDIDATE; |
356 | 355 |
357 static const int kSkipEvacuationSlotsRecordingMask = | 356 static const int kSkipEvacuationSlotsRecordingMask = |
358 (1 << EVACUATION_CANDIDATE) | (1 << RESCAN_ON_EVACUATION) | | 357 (1 << EVACUATION_CANDIDATE) | (1 << IN_FROM_SPACE) | (1 << IN_TO_SPACE); |
359 (1 << IN_FROM_SPACE) | (1 << IN_TO_SPACE); | |
360 | 358 |
361 static const intptr_t kAlignment = | 359 static const intptr_t kAlignment = |
362 (static_cast<uintptr_t>(1) << kPageSizeBits); | 360 (static_cast<uintptr_t>(1) << kPageSizeBits); |
363 | 361 |
364 static const intptr_t kAlignmentMask = kAlignment - 1; | 362 static const intptr_t kAlignmentMask = kAlignment - 1; |
365 | 363 |
366 static const intptr_t kSizeOffset = 0; | 364 static const intptr_t kSizeOffset = 0; |
367 | 365 |
368 static const intptr_t kLiveBytesOffset = | 366 static const intptr_t kLiveBytesOffset = |
369 kSizeOffset + kPointerSize // size_t size | 367 kSizeOffset + kPointerSize // size_t size |
(...skipping 2649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3019 count = 0; | 3017 count = 0; |
3020 } | 3018 } |
3021 // Must be small, since an iteration is used for lookup. | 3019 // Must be small, since an iteration is used for lookup. |
3022 static const int kMaxComments = 64; | 3020 static const int kMaxComments = 64; |
3023 }; | 3021 }; |
3024 #endif | 3022 #endif |
3025 } // namespace internal | 3023 } // namespace internal |
3026 } // namespace v8 | 3024 } // namespace v8 |
3027 | 3025 |
3028 #endif // V8_HEAP_SPACES_H_ | 3026 #endif // V8_HEAP_SPACES_H_ |
OLD | NEW |