| 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/base/atomicops.h" | 9 #include "src/base/atomicops.h" | 
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" | 
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 366     ABOUT_TO_BE_FREED, | 366     ABOUT_TO_BE_FREED, | 
| 367     POINTERS_TO_HERE_ARE_INTERESTING, | 367     POINTERS_TO_HERE_ARE_INTERESTING, | 
| 368     POINTERS_FROM_HERE_ARE_INTERESTING, | 368     POINTERS_FROM_HERE_ARE_INTERESTING, | 
| 369     SCAN_ON_SCAVENGE, | 369     SCAN_ON_SCAVENGE, | 
| 370     IN_FROM_SPACE,  // Mutually exclusive with IN_TO_SPACE. | 370     IN_FROM_SPACE,  // Mutually exclusive with IN_TO_SPACE. | 
| 371     IN_TO_SPACE,    // All pages in new space has one of these two set. | 371     IN_TO_SPACE,    // All pages in new space has one of these two set. | 
| 372     NEW_SPACE_BELOW_AGE_MARK, | 372     NEW_SPACE_BELOW_AGE_MARK, | 
| 373     CONTAINS_ONLY_DATA, | 373     CONTAINS_ONLY_DATA, | 
| 374     EVACUATION_CANDIDATE, | 374     EVACUATION_CANDIDATE, | 
| 375     RESCAN_ON_EVACUATION, | 375     RESCAN_ON_EVACUATION, | 
|  | 376     NEVER_EVACUATE,  // May contain immortal immutables. | 
| 376 | 377 | 
| 377     // WAS_SWEPT indicates that marking bits have been cleared by the sweeper, | 378     // WAS_SWEPT indicates that marking bits have been cleared by the sweeper, | 
| 378     // otherwise marking bits are still intact. | 379     // otherwise marking bits are still intact. | 
| 379     WAS_SWEPT, | 380     WAS_SWEPT, | 
| 380 | 381 | 
| 381     // Large objects can have a progress bar in their page header. These object | 382     // Large objects can have a progress bar in their page header. These object | 
| 382     // are scanned in increments and will be kept black while being scanned. | 383     // are scanned in increments and will be kept black while being scanned. | 
| 383     // Even if the mutator writes to them they will be kept black and a white | 384     // Even if the mutator writes to them they will be kept black and a white | 
| 384     // to grey transition is performed in the value. | 385     // to grey transition is performed in the value. | 
| 385     HAS_PROGRESS_BAR, | 386     HAS_PROGRESS_BAR, | 
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 597     return this->address() + (index << kPointerSizeLog2); | 598     return this->address() + (index << kPointerSizeLog2); | 
| 598   } | 599   } | 
| 599 | 600 | 
| 600   void InsertAfter(MemoryChunk* other); | 601   void InsertAfter(MemoryChunk* other); | 
| 601   void Unlink(); | 602   void Unlink(); | 
| 602 | 603 | 
| 603   inline Heap* heap() const { return heap_; } | 604   inline Heap* heap() const { return heap_; } | 
| 604 | 605 | 
| 605   static const int kFlagsOffset = kPointerSize; | 606   static const int kFlagsOffset = kPointerSize; | 
| 606 | 607 | 
| 607   bool IsEvacuationCandidate() { return IsFlagSet(EVACUATION_CANDIDATE); } | 608   bool NeverEvacuate() { return IsFlagSet(NEVER_EVACUATE); } | 
|  | 609 | 
|  | 610   void MarkNeverEvacuate() { SetFlag(NEVER_EVACUATE); } | 
|  | 611 | 
|  | 612   bool IsEvacuationCandidate() { | 
|  | 613     DCHECK(!(IsFlagSet(NEVER_EVACUATE) && IsFlagSet(EVACUATION_CANDIDATE))); | 
|  | 614     return IsFlagSet(EVACUATION_CANDIDATE); | 
|  | 615   } | 
| 608 | 616 | 
| 609   bool ShouldSkipEvacuationSlotRecording() { | 617   bool ShouldSkipEvacuationSlotRecording() { | 
| 610     return (flags_ & kSkipEvacuationSlotsRecordingMask) != 0; | 618     return (flags_ & kSkipEvacuationSlotsRecordingMask) != 0; | 
| 611   } | 619   } | 
| 612 | 620 | 
| 613   inline SkipList* skip_list() { return skip_list_; } | 621   inline SkipList* skip_list() { return skip_list_; } | 
| 614 | 622 | 
| 615   inline void set_skip_list(SkipList* skip_list) { skip_list_ = skip_list; } | 623   inline void set_skip_list(SkipList* skip_list) { skip_list_ = skip_list; } | 
| 616 | 624 | 
| 617   inline SlotsBuffer* slots_buffer() { return slots_buffer_; } | 625   inline SlotsBuffer* slots_buffer() { return slots_buffer_; } | 
| 618 | 626 | 
| 619   inline SlotsBuffer** slots_buffer_address() { return &slots_buffer_; } | 627   inline SlotsBuffer** slots_buffer_address() { return &slots_buffer_; } | 
| 620 | 628 | 
| 621   void MarkEvacuationCandidate() { | 629   void MarkEvacuationCandidate() { | 
|  | 630     DCHECK(!IsFlagSet(NEVER_EVACUATE)); | 
| 622     DCHECK(slots_buffer_ == NULL); | 631     DCHECK(slots_buffer_ == NULL); | 
| 623     SetFlag(EVACUATION_CANDIDATE); | 632     SetFlag(EVACUATION_CANDIDATE); | 
| 624   } | 633   } | 
| 625 | 634 | 
| 626   void ClearEvacuationCandidate() { | 635   void ClearEvacuationCandidate() { | 
| 627     DCHECK(slots_buffer_ == NULL); | 636     DCHECK(slots_buffer_ == NULL); | 
| 628     ClearFlag(EVACUATION_CANDIDATE); | 637     ClearFlag(EVACUATION_CANDIDATE); | 
| 629   } | 638   } | 
| 630 | 639 | 
| 631   Address area_start() { return area_start_; } | 640   Address area_start() { return area_start_; } | 
| (...skipping 2244 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2876     count = 0; | 2885     count = 0; | 
| 2877   } | 2886   } | 
| 2878   // Must be small, since an iteration is used for lookup. | 2887   // Must be small, since an iteration is used for lookup. | 
| 2879   static const int kMaxComments = 64; | 2888   static const int kMaxComments = 64; | 
| 2880 }; | 2889 }; | 
| 2881 #endif | 2890 #endif | 
| 2882 } | 2891 } | 
| 2883 }  // namespace v8::internal | 2892 }  // namespace v8::internal | 
| 2884 | 2893 | 
| 2885 #endif  // V8_HEAP_SPACES_H_ | 2894 #endif  // V8_HEAP_SPACES_H_ | 
| OLD | NEW | 
|---|