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

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

Issue 2504193002: [heap] Simplify adjusting of live bytes. (Closed)
Patch Set: fix test Created 4 years, 1 month 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/elements.cc ('k') | src/heap/heap.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_HEAP_H_ 5 #ifndef V8_HEAP_HEAP_H_
6 #define V8_HEAP_HEAP_H_ 6 #define V8_HEAP_HEAP_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 #include <map> 9 #include <map>
10 10
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 #undef ROOT_INDEX_DECLARATION 549 #undef ROOT_INDEX_DECLARATION
550 kRootListLength, 550 kRootListLength,
551 kStrongRootListLength = kStringTableRootIndex, 551 kStrongRootListLength = kStringTableRootIndex,
552 kSmiRootsStart = kStringTableRootIndex + 1 552 kSmiRootsStart = kStringTableRootIndex + 1
553 }; 553 };
554 554
555 enum FindMementoMode { kForRuntime, kForGC }; 555 enum FindMementoMode { kForRuntime, kForGC };
556 556
557 enum HeapState { NOT_IN_GC, SCAVENGE, MARK_COMPACT }; 557 enum HeapState { NOT_IN_GC, SCAVENGE, MARK_COMPACT };
558 558
559 // Indicates whether live bytes adjustment is triggered
560 // - from within the GC code before sweeping started (SEQUENTIAL_TO_SWEEPER),
561 // - or from within GC (CONCURRENT_TO_SWEEPER),
562 // - or mutator code (CONCURRENT_TO_SWEEPER).
563 enum InvocationMode { SEQUENTIAL_TO_SWEEPER, CONCURRENT_TO_SWEEPER };
564
565 enum UpdateAllocationSiteMode { kGlobal, kCached }; 559 enum UpdateAllocationSiteMode { kGlobal, kCached };
566 560
567 // Taking this lock prevents the GC from entering a phase that relocates 561 // Taking this lock prevents the GC from entering a phase that relocates
568 // object references. 562 // object references.
569 class RelocationLock { 563 class RelocationLock {
570 public: 564 public:
571 explicit RelocationLock(Heap* heap) : heap_(heap) { 565 explicit RelocationLock(Heap* heap) : heap_(heap) {
572 heap_->relocation_mutex_.Lock(); 566 heap_->relocation_mutex_.Lock();
573 } 567 }
574 568
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 // pass ClearRecordedSlots::kNo. If the filler was created in a black area 738 // pass ClearRecordedSlots::kNo. If the filler was created in a black area
745 // we may want to clear the corresponding mark bits with ClearBlackArea::kYes, 739 // we may want to clear the corresponding mark bits with ClearBlackArea::kYes,
746 // which is the default. ClearBlackArea::kNo does not clear the mark bits. 740 // which is the default. ClearBlackArea::kNo does not clear the mark bits.
747 void CreateFillerObjectAt( 741 void CreateFillerObjectAt(
748 Address addr, int size, ClearRecordedSlots mode, 742 Address addr, int size, ClearRecordedSlots mode,
749 ClearBlackArea black_area_mode = ClearBlackArea::kYes); 743 ClearBlackArea black_area_mode = ClearBlackArea::kYes);
750 744
751 bool CanMoveObjectStart(HeapObject* object); 745 bool CanMoveObjectStart(HeapObject* object);
752 746
753 // Maintain consistency of live bytes during incremental marking. 747 // Maintain consistency of live bytes during incremental marking.
754 void AdjustLiveBytes(HeapObject* object, int by, InvocationMode mode); 748 void AdjustLiveBytes(HeapObject* object, int by);
755 749
756 // Trim the given array from the left. Note that this relocates the object 750 // Trim the given array from the left. Note that this relocates the object
757 // start and hence is only valid if there is only a single reference to it. 751 // start and hence is only valid if there is only a single reference to it.
758 FixedArrayBase* LeftTrimFixedArray(FixedArrayBase* obj, int elements_to_trim); 752 FixedArrayBase* LeftTrimFixedArray(FixedArrayBase* obj, int elements_to_trim);
759 753
760 // Trim the given array from the right. 754 // Trim the given array from the right.
761 template<Heap::InvocationMode mode>
762 void RightTrimFixedArray(FixedArrayBase* obj, int elements_to_trim); 755 void RightTrimFixedArray(FixedArrayBase* obj, int elements_to_trim);
763 756
764 // Converts the given boolean condition to JavaScript boolean value. 757 // Converts the given boolean condition to JavaScript boolean value.
765 inline Oddball* ToBoolean(bool condition); 758 inline Oddball* ToBoolean(bool condition);
766 759
767 // Check whether the heap is currently iterable. 760 // Check whether the heap is currently iterable.
768 bool IsHeapIterable(); 761 bool IsHeapIterable();
769 762
770 // Notify the heap that a context has been disposed. 763 // Notify the heap that a context has been disposed.
771 int NotifyContextDisposed(bool dependant_context); 764 int NotifyContextDisposed(bool dependant_context);
(...skipping 1867 matching lines...) Expand 10 before | Expand all | Expand 10 after
2639 friend class LargeObjectSpace; 2632 friend class LargeObjectSpace;
2640 friend class NewSpace; 2633 friend class NewSpace;
2641 friend class PagedSpace; 2634 friend class PagedSpace;
2642 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); 2635 DISALLOW_COPY_AND_ASSIGN(AllocationObserver);
2643 }; 2636 };
2644 2637
2645 } // namespace internal 2638 } // namespace internal
2646 } // namespace v8 2639 } // namespace v8
2647 2640
2648 #endif // V8_HEAP_HEAP_H_ 2641 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/elements.cc ('k') | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698