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

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

Issue 2287343002: [heap] Integrate embedder heap tracer into incremental marking (Closed)
Patch Set: Addressed comments Created 4 years, 3 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 | « no previous file | 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 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 inline bool IsInGCPostProcessing() { return gc_post_processing_depth_ > 0; } 756 inline bool IsInGCPostProcessing() { return gc_post_processing_depth_ > 0; }
757 757
758 // If an object has an AllocationMemento trailing it, return it, otherwise 758 // If an object has an AllocationMemento trailing it, return it, otherwise
759 // return NULL; 759 // return NULL;
760 template <FindMementoMode mode> 760 template <FindMementoMode mode>
761 inline AllocationMemento* FindAllocationMemento(HeapObject* object); 761 inline AllocationMemento* FindAllocationMemento(HeapObject* object);
762 762
763 // Returns false if not able to reserve. 763 // Returns false if not able to reserve.
764 bool ReserveSpace(Reservation* reservations, List<Address>* maps); 764 bool ReserveSpace(Reservation* reservations, List<Address>* maps);
765 765
766 void SetEmbedderHeapTracer(EmbedderHeapTracer* tracer);
767
768 bool UsingEmbedderHeapTracer();
769
770 void TracePossibleWrapper(JSObject* js_object);
771
772 void RegisterExternallyReferencedObject(Object** object);
773
774 // 766 //
775 // Support for the API. 767 // Support for the API.
776 // 768 //
777 769
778 void CreateApiObjects(); 770 void CreateApiObjects();
779 771
780 // Implements the corresponding V8 API function. 772 // Implements the corresponding V8 API function.
781 bool IdleNotification(double deadline_in_seconds); 773 bool IdleNotification(double deadline_in_seconds);
782 bool IdleNotification(int idle_time_in_ms); 774 bool IdleNotification(int idle_time_in_ms);
783 775
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1167 1159
1168 void FinalizeIncrementalMarkingIfComplete(const char* comment); 1160 void FinalizeIncrementalMarkingIfComplete(const char* comment);
1169 1161
1170 bool TryFinalizeIdleIncrementalMarking(double idle_time_in_ms); 1162 bool TryFinalizeIdleIncrementalMarking(double idle_time_in_ms);
1171 1163
1172 void RegisterReservationsForBlackAllocation(Reservation* reservations); 1164 void RegisterReservationsForBlackAllocation(Reservation* reservations);
1173 1165
1174 IncrementalMarking* incremental_marking() { return incremental_marking_; } 1166 IncrementalMarking* incremental_marking() { return incremental_marking_; }
1175 1167
1176 // =========================================================================== 1168 // ===========================================================================
1169 // Embedder heap tracer support. =============================================
1170 // ===========================================================================
1171
1172 void SetEmbedderHeapTracer(EmbedderHeapTracer* tracer);
1173
1174 bool UsingEmbedderHeapTracer();
1175
1176 void TracePossibleWrapper(JSObject* js_object);
1177
1178 void RegisterExternallyReferencedObject(Object** object);
1179
1180 // ===========================================================================
1177 // External string table API. ================================================ 1181 // External string table API. ================================================
1178 // =========================================================================== 1182 // ===========================================================================
1179 1183
1180 // Registers an external string. 1184 // Registers an external string.
1181 inline void RegisterExternalString(String* string); 1185 inline void RegisterExternalString(String* string);
1182 1186
1183 // Finalizes an external string by deleting the associated external 1187 // Finalizes an external string by deleting the associated external
1184 // data and clearing the resource pointer. 1188 // data and clearing the resource pointer.
1185 inline void FinalizeExternalString(String* string); 1189 inline void FinalizeExternalString(String* string);
1186 1190
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 } 1585 }
1582 1586
1583 inline bool ShouldAbortIncrementalMarking() const { 1587 inline bool ShouldAbortIncrementalMarking() const {
1584 return current_gc_flags_ & kAbortIncrementalMarkingMask; 1588 return current_gc_flags_ & kAbortIncrementalMarkingMask;
1585 } 1589 }
1586 1590
1587 inline bool ShouldFinalizeIncrementalMarking() const { 1591 inline bool ShouldFinalizeIncrementalMarking() const {
1588 return current_gc_flags_ & kFinalizeIncrementalMarkingMask; 1592 return current_gc_flags_ & kFinalizeIncrementalMarkingMask;
1589 } 1593 }
1590 1594
1595 // Checks whether both, the internal marking deque, and the embedder provided
1596 // one are empty. Avoid in fast path as it potentially calls through the API.
1597 bool MarkingDequesAreEmpty();
1598
1591 void PreprocessStackTraces(); 1599 void PreprocessStackTraces();
1592 1600
1593 // Checks whether a global GC is necessary 1601 // Checks whether a global GC is necessary
1594 GarbageCollector SelectGarbageCollector(AllocationSpace space, 1602 GarbageCollector SelectGarbageCollector(AllocationSpace space,
1595 const char** reason); 1603 const char** reason);
1596 1604
1597 // Make sure there is a filler value behind the top of the new space 1605 // Make sure there is a filler value behind the top of the new space
1598 // so that the GC does not confuse some unintialized/stale memory 1606 // so that the GC does not confuse some unintialized/stale memory
1599 // with the allocation memento of the object at the top 1607 // with the allocation memento of the object at the top
1600 void EnsureFillerObjectAtTop(); 1608 void EnsureFillerObjectAtTop();
(...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after
2717 friend class LargeObjectSpace; 2725 friend class LargeObjectSpace;
2718 friend class NewSpace; 2726 friend class NewSpace;
2719 friend class PagedSpace; 2727 friend class PagedSpace;
2720 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); 2728 DISALLOW_COPY_AND_ASSIGN(AllocationObserver);
2721 }; 2729 };
2722 2730
2723 } // namespace internal 2731 } // namespace internal
2724 } // namespace v8 2732 } // namespace v8
2725 2733
2726 #endif // V8_HEAP_HEAP_H_ 2734 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « no previous file | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698