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

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

Issue 2194793005: [heap] No leakage of store-buffer.h outside of heap. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 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
11 // Clients of this interface shouldn't depend on lots of heap internals. 11 // Clients of this interface shouldn't depend on lots of heap internals.
12 // Do not include anything from src/heap here! 12 // Do not include anything from src/heap here!
13 #include "include/v8.h" 13 #include "include/v8.h"
14 #include "src/allocation.h" 14 #include "src/allocation.h"
15 #include "src/assert-scope.h" 15 #include "src/assert-scope.h"
16 #include "src/base/atomic-utils.h" 16 #include "src/base/atomic-utils.h"
17 #include "src/globals.h" 17 #include "src/globals.h"
18 #include "src/heap-symbols.h" 18 #include "src/heap-symbols.h"
19 // TODO(mstarzinger): Two more includes to kill! 19 // TODO(mstarzinger): One more include to kill!
20 #include "src/heap/spaces.h" 20 #include "src/heap/spaces.h"
21 #include "src/heap/store-buffer.h"
22 #include "src/list.h" 21 #include "src/list.h"
23 22
24 namespace v8 { 23 namespace v8 {
25 namespace internal { 24 namespace internal {
26 25
27 using v8::MemoryPressureLevel; 26 using v8::MemoryPressureLevel;
28 27
29 // Defines all the roots in Heap. 28 // Defines all the roots in Heap.
30 #define STRONG_ROOT_LIST(V) \ 29 #define STRONG_ROOT_LIST(V) \
31 /* Cluster the most popular ones in a few cache lines here at the top. */ \ 30 /* Cluster the most popular ones in a few cache lines here at the top. */ \
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 class GCIdleTimeHeapState; 318 class GCIdleTimeHeapState;
320 class GCTracer; 319 class GCTracer;
321 class HeapObjectsFilter; 320 class HeapObjectsFilter;
322 class HeapStats; 321 class HeapStats;
323 class HistogramTimer; 322 class HistogramTimer;
324 class Isolate; 323 class Isolate;
325 class MemoryReducer; 324 class MemoryReducer;
326 class ObjectStats; 325 class ObjectStats;
327 class Scavenger; 326 class Scavenger;
328 class ScavengeJob; 327 class ScavengeJob;
328 class StoreBuffer;
329 class WeakObjectRetainer; 329 class WeakObjectRetainer;
330 330
331 enum PromotionMode { PROMOTE_MARKED, DEFAULT_PROMOTION }; 331 enum PromotionMode { PROMOTE_MARKED, DEFAULT_PROMOTION };
332 332
333 typedef void (*ObjectSlotCallback)(HeapObject** from, HeapObject* to); 333 typedef void (*ObjectSlotCallback)(HeapObject** from, HeapObject* to);
334 334
335 // A queue of objects promoted during scavenge. Each object is accompanied 335 // A queue of objects promoted during scavenge. Each object is accompanied
336 // by it's size to avoid dereferencing a map pointer for scanning. 336 // by it's size to avoid dereferencing a map pointer for scanning.
337 // The last page in to-space is used for the promotion queue. On conflict 337 // The last page in to-space is used for the promotion queue. On conflict
338 // during scavenge, the promotion queue is allocated externally and all 338 // during scavenge, the promotion queue is allocated externally and all
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 // Store buffer API. ========================================================= 1121 // Store buffer API. =========================================================
1122 // =========================================================================== 1122 // ===========================================================================
1123 1123
1124 // Write barrier support for object[offset] = o; 1124 // Write barrier support for object[offset] = o;
1125 inline void RecordWrite(Object* object, int offset, Object* o); 1125 inline void RecordWrite(Object* object, int offset, Object* o);
1126 inline void RecordWriteIntoCode(Code* host, RelocInfo* rinfo, Object* target); 1126 inline void RecordWriteIntoCode(Code* host, RelocInfo* rinfo, Object* target);
1127 void RecordWriteIntoCodeSlow(Code* host, RelocInfo* rinfo, Object* target); 1127 void RecordWriteIntoCodeSlow(Code* host, RelocInfo* rinfo, Object* target);
1128 inline void RecordFixedArrayElements(FixedArray* array, int offset, 1128 inline void RecordFixedArrayElements(FixedArray* array, int offset,
1129 int length); 1129 int length);
1130 1130
1131 Address* store_buffer_top_address() { return store_buffer()->top_address(); } 1131 inline Address* store_buffer_top_address();
1132 1132
1133 void ClearRecordedSlot(HeapObject* object, Object** slot); 1133 void ClearRecordedSlot(HeapObject* object, Object** slot);
1134 void ClearRecordedSlotRange(Address start, Address end); 1134 void ClearRecordedSlotRange(Address start, Address end);
1135 1135
1136 // =========================================================================== 1136 // ===========================================================================
1137 // Incremental marking API. ================================================== 1137 // Incremental marking API. ==================================================
1138 // =========================================================================== 1138 // ===========================================================================
1139 1139
1140 // Start incremental marking and ensure that idle time handler can perform 1140 // Start incremental marking and ensure that idle time handler can perform
1141 // incremental steps. 1141 // incremental steps.
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
1544 // Selects the proper allocation space based on the pretenuring decision. 1544 // Selects the proper allocation space based on the pretenuring decision.
1545 static AllocationSpace SelectSpace(PretenureFlag pretenure) { 1545 static AllocationSpace SelectSpace(PretenureFlag pretenure) {
1546 return (pretenure == TENURED) ? OLD_SPACE : NEW_SPACE; 1546 return (pretenure == TENURED) ? OLD_SPACE : NEW_SPACE;
1547 } 1547 }
1548 1548
1549 #define ROOT_ACCESSOR(type, name, camel_name) \ 1549 #define ROOT_ACCESSOR(type, name, camel_name) \
1550 inline void set_##name(type* value); 1550 inline void set_##name(type* value);
1551 ROOT_LIST(ROOT_ACCESSOR) 1551 ROOT_LIST(ROOT_ACCESSOR)
1552 #undef ROOT_ACCESSOR 1552 #undef ROOT_ACCESSOR
1553 1553
1554 StoreBuffer* store_buffer() { return &store_buffer_; } 1554 StoreBuffer* store_buffer() { return store_buffer_; }
1555 1555
1556 void set_current_gc_flags(int flags) { 1556 void set_current_gc_flags(int flags) {
1557 current_gc_flags_ = flags; 1557 current_gc_flags_ = flags;
1558 DCHECK(!ShouldFinalizeIncrementalMarking() || 1558 DCHECK(!ShouldFinalizeIncrementalMarking() ||
1559 !ShouldAbortIncrementalMarking()); 1559 !ShouldAbortIncrementalMarking());
1560 } 1560 }
1561 1561
1562 inline bool ShouldReduceMemory() const { 1562 inline bool ShouldReduceMemory() const {
1563 return current_gc_flags_ & kReduceMemoryFootprintMask; 1563 return current_gc_flags_ & kReduceMemoryFootprintMask;
1564 } 1564 }
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
2186 2186
2187 // Last time a garbage collection happened. 2187 // Last time a garbage collection happened.
2188 double last_gc_time_; 2188 double last_gc_time_;
2189 2189
2190 Scavenger* scavenge_collector_; 2190 Scavenger* scavenge_collector_;
2191 2191
2192 MarkCompactCollector* mark_compact_collector_; 2192 MarkCompactCollector* mark_compact_collector_;
2193 2193
2194 MemoryAllocator* memory_allocator_; 2194 MemoryAllocator* memory_allocator_;
2195 2195
2196 StoreBuffer store_buffer_; 2196 StoreBuffer* store_buffer_;
2197 2197
2198 IncrementalMarking* incremental_marking_; 2198 IncrementalMarking* incremental_marking_;
2199 2199
2200 GCIdleTimeHandler* gc_idle_time_handler_; 2200 GCIdleTimeHandler* gc_idle_time_handler_;
2201 2201
2202 MemoryReducer* memory_reducer_; 2202 MemoryReducer* memory_reducer_;
2203 2203
2204 ObjectStats* live_object_stats_; 2204 ObjectStats* live_object_stats_;
2205 ObjectStats* dead_object_stats_; 2205 ObjectStats* dead_object_stats_;
2206 2206
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 friend class LargeObjectSpace; 2693 friend class LargeObjectSpace;
2694 friend class NewSpace; 2694 friend class NewSpace;
2695 friend class PagedSpace; 2695 friend class PagedSpace;
2696 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); 2696 DISALLOW_COPY_AND_ASSIGN(AllocationObserver);
2697 }; 2697 };
2698 2698
2699 } // namespace internal 2699 } // namespace internal
2700 } // namespace v8 2700 } // namespace v8
2701 2701
2702 #endif // V8_HEAP_HEAP_H_ 2702 #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