OLD | NEW |
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 <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1168 int flags, GarbageCollectionReason gc_reason, | 1168 int flags, GarbageCollectionReason gc_reason, |
1169 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); | 1169 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); |
1170 | 1170 |
1171 // Last hope GC, should try to squeeze as much as possible. | 1171 // Last hope GC, should try to squeeze as much as possible. |
1172 void CollectAllAvailableGarbage(GarbageCollectionReason gc_reason); | 1172 void CollectAllAvailableGarbage(GarbageCollectionReason gc_reason); |
1173 | 1173 |
1174 // Reports and external memory pressure event, either performs a major GC or | 1174 // Reports and external memory pressure event, either performs a major GC or |
1175 // completes incremental marking in order to free external resources. | 1175 // completes incremental marking in order to free external resources. |
1176 void ReportExternalMemoryPressure(); | 1176 void ReportExternalMemoryPressure(); |
1177 | 1177 |
| 1178 typedef v8::Isolate::GetExternallyAllocatedMemoryInBytesCallback |
| 1179 GetExternallyAllocatedMemoryInBytesCallback; |
| 1180 |
| 1181 void SetGetExternallyAllocatedMemoryInBytesCallback( |
| 1182 GetExternallyAllocatedMemoryInBytesCallback callback) { |
| 1183 external_memory_callback_ = callback; |
| 1184 } |
| 1185 |
1178 // Invoked when GC was requested via the stack guard. | 1186 // Invoked when GC was requested via the stack guard. |
1179 void HandleGCRequest(); | 1187 void HandleGCRequest(); |
1180 | 1188 |
1181 // =========================================================================== | 1189 // =========================================================================== |
1182 // Iterators. ================================================================ | 1190 // Iterators. ================================================================ |
1183 // =========================================================================== | 1191 // =========================================================================== |
1184 | 1192 |
1185 // Iterates over all roots in the heap. | 1193 // Iterates over all roots in the heap. |
1186 void IterateRoots(RootVisitor* v, VisitMode mode); | 1194 void IterateRoots(RootVisitor* v, VisitMode mode); |
1187 // Iterates over all strong roots in the heap. | 1195 // Iterates over all strong roots in the heap. |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1657 Heap(); | 1665 Heap(); |
1658 | 1666 |
1659 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( | 1667 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( |
1660 Heap* heap, Object** pointer); | 1668 Heap* heap, Object** pointer); |
1661 | 1669 |
1662 // Selects the proper allocation space based on the pretenuring decision. | 1670 // Selects the proper allocation space based on the pretenuring decision. |
1663 static AllocationSpace SelectSpace(PretenureFlag pretenure) { | 1671 static AllocationSpace SelectSpace(PretenureFlag pretenure) { |
1664 return (pretenure == TENURED) ? OLD_SPACE : NEW_SPACE; | 1672 return (pretenure == TENURED) ? OLD_SPACE : NEW_SPACE; |
1665 } | 1673 } |
1666 | 1674 |
| 1675 static size_t DefaultGetExternallyAllocatedMemoryInBytesCallback() { |
| 1676 return 0; |
| 1677 } |
| 1678 |
1667 #define ROOT_ACCESSOR(type, name, camel_name) \ | 1679 #define ROOT_ACCESSOR(type, name, camel_name) \ |
1668 inline void set_##name(type* value); | 1680 inline void set_##name(type* value); |
1669 ROOT_LIST(ROOT_ACCESSOR) | 1681 ROOT_LIST(ROOT_ACCESSOR) |
1670 #undef ROOT_ACCESSOR | 1682 #undef ROOT_ACCESSOR |
1671 | 1683 |
1672 StoreBuffer* store_buffer() { return store_buffer_; } | 1684 StoreBuffer* store_buffer() { return store_buffer_; } |
1673 | 1685 |
1674 void set_current_gc_flags(int flags) { | 1686 void set_current_gc_flags(int flags) { |
1675 current_gc_flags_ = flags; | 1687 current_gc_flags_ = flags; |
1676 DCHECK(!ShouldFinalizeIncrementalMarking() || | 1688 DCHECK(!ShouldFinalizeIncrementalMarking() || |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2275 // contains Smi(0) while marking is not active. | 2287 // contains Smi(0) while marking is not active. |
2276 Object* encountered_weak_collections_; | 2288 Object* encountered_weak_collections_; |
2277 | 2289 |
2278 Object* encountered_weak_cells_; | 2290 Object* encountered_weak_cells_; |
2279 | 2291 |
2280 Object* encountered_transition_arrays_; | 2292 Object* encountered_transition_arrays_; |
2281 | 2293 |
2282 List<GCCallbackPair> gc_epilogue_callbacks_; | 2294 List<GCCallbackPair> gc_epilogue_callbacks_; |
2283 List<GCCallbackPair> gc_prologue_callbacks_; | 2295 List<GCCallbackPair> gc_prologue_callbacks_; |
2284 | 2296 |
| 2297 GetExternallyAllocatedMemoryInBytesCallback external_memory_callback_; |
| 2298 |
2285 int deferred_counters_[v8::Isolate::kUseCounterFeatureCount]; | 2299 int deferred_counters_[v8::Isolate::kUseCounterFeatureCount]; |
2286 | 2300 |
2287 GCTracer* tracer_; | 2301 GCTracer* tracer_; |
2288 | 2302 |
2289 size_t promoted_objects_size_; | 2303 size_t promoted_objects_size_; |
2290 double promotion_ratio_; | 2304 double promotion_ratio_; |
2291 double promotion_rate_; | 2305 double promotion_rate_; |
2292 size_t semi_space_copied_object_size_; | 2306 size_t semi_space_copied_object_size_; |
2293 size_t previous_semi_space_copied_object_size_; | 2307 size_t previous_semi_space_copied_object_size_; |
2294 double semi_space_copied_rate_; | 2308 double semi_space_copied_rate_; |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2660 friend class PagedSpace; | 2674 friend class PagedSpace; |
2661 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); | 2675 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); |
2662 }; | 2676 }; |
2663 | 2677 |
2664 V8_EXPORT_PRIVATE const char* AllocationSpaceName(AllocationSpace space); | 2678 V8_EXPORT_PRIVATE const char* AllocationSpaceName(AllocationSpace space); |
2665 | 2679 |
2666 } // namespace internal | 2680 } // namespace internal |
2667 } // namespace v8 | 2681 } // namespace v8 |
2668 | 2682 |
2669 #endif // V8_HEAP_HEAP_H_ | 2683 #endif // V8_HEAP_HEAP_H_ |
OLD | NEW |