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 <map> | 9 #include <map> |
10 | 10 |
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 // An object should be promoted if the object has survived a | 771 // An object should be promoted if the object has survived a |
772 // scavenge operation. | 772 // scavenge operation. |
773 inline bool ShouldBePromoted(Address old_address, int object_size); | 773 inline bool ShouldBePromoted(Address old_address, int object_size); |
774 | 774 |
775 void ClearNormalizedMapCaches(); | 775 void ClearNormalizedMapCaches(); |
776 | 776 |
777 void IncrementDeferredCount(v8::Isolate::UseCounterFeature feature); | 777 void IncrementDeferredCount(v8::Isolate::UseCounterFeature feature); |
778 | 778 |
779 inline bool OldGenerationAllocationLimitReached(); | 779 inline bool OldGenerationAllocationLimitReached(); |
780 | 780 |
| 781 void QueueMemoryChunkForFree(MemoryChunk* chunk); |
| 782 void FreeQueuedChunks(MemoryChunk* list_head); |
| 783 void FreeQueuedChunks(); |
| 784 void WaitUntilUnmappingOfFreeChunksCompleted(); |
| 785 |
781 // Completely clear the Instanceof cache (to stop it keeping objects alive | 786 // Completely clear the Instanceof cache (to stop it keeping objects alive |
782 // around a GC). | 787 // around a GC). |
783 inline void CompletelyClearInstanceofCache(); | 788 inline void CompletelyClearInstanceofCache(); |
784 | 789 |
785 inline uint32_t HashSeed(); | 790 inline uint32_t HashSeed(); |
786 | 791 |
787 inline int NextScriptId(); | 792 inline int NextScriptId(); |
788 | 793 |
789 inline void SetArgumentsAdaptorDeoptPCOffset(int pc_offset); | 794 inline void SetArgumentsAdaptorDeoptPCOffset(int pc_offset); |
790 inline void SetConstructStubDeoptPCOffset(int pc_offset); | 795 inline void SetConstructStubDeoptPCOffset(int pc_offset); |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1378 // Report heap statistics. | 1383 // Report heap statistics. |
1379 void ReportHeapStatistics(const char* title); | 1384 void ReportHeapStatistics(const char* title); |
1380 void ReportCodeStatistics(const char* title); | 1385 void ReportCodeStatistics(const char* title); |
1381 #endif | 1386 #endif |
1382 #ifdef ENABLE_SLOW_DCHECKS | 1387 #ifdef ENABLE_SLOW_DCHECKS |
1383 int CountHandlesForObject(Object* object); | 1388 int CountHandlesForObject(Object* object); |
1384 #endif | 1389 #endif |
1385 | 1390 |
1386 private: | 1391 private: |
1387 class PretenuringScope; | 1392 class PretenuringScope; |
| 1393 class UnmapFreeMemoryTask; |
1388 | 1394 |
1389 // External strings table is a place where all external strings are | 1395 // External strings table is a place where all external strings are |
1390 // registered. We need to keep track of such strings to properly | 1396 // registered. We need to keep track of such strings to properly |
1391 // finalize them. | 1397 // finalize them. |
1392 class ExternalStringTable { | 1398 class ExternalStringTable { |
1393 public: | 1399 public: |
1394 // Registers an external string. | 1400 // Registers an external string. |
1395 inline void AddString(String* string); | 1401 inline void AddString(String* string); |
1396 | 1402 |
1397 inline void Iterate(ObjectVisitor* v); | 1403 inline void Iterate(ObjectVisitor* v); |
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2195 | 2201 |
2196 // Currently set GC flags that are respected by all GC components. | 2202 // Currently set GC flags that are respected by all GC components. |
2197 int current_gc_flags_; | 2203 int current_gc_flags_; |
2198 | 2204 |
2199 // Currently set GC callback flags that are used to pass information between | 2205 // Currently set GC callback flags that are used to pass information between |
2200 // the embedder and V8's GC. | 2206 // the embedder and V8's GC. |
2201 GCCallbackFlags current_gc_callback_flags_; | 2207 GCCallbackFlags current_gc_callback_flags_; |
2202 | 2208 |
2203 ExternalStringTable external_string_table_; | 2209 ExternalStringTable external_string_table_; |
2204 | 2210 |
| 2211 MemoryChunk* chunks_queued_for_free_; |
| 2212 |
| 2213 size_t concurrent_unmapping_tasks_active_; |
| 2214 |
| 2215 base::Semaphore pending_unmapping_tasks_semaphore_; |
| 2216 |
2205 base::Mutex relocation_mutex_; | 2217 base::Mutex relocation_mutex_; |
2206 | 2218 |
2207 int gc_callbacks_depth_; | 2219 int gc_callbacks_depth_; |
2208 | 2220 |
2209 bool deserialization_complete_; | 2221 bool deserialization_complete_; |
2210 | 2222 |
2211 StrongRootsList* strong_roots_list_; | 2223 StrongRootsList* strong_roots_list_; |
2212 | 2224 |
2213 ArrayBufferTracker* array_buffer_tracker_; | 2225 ArrayBufferTracker* array_buffer_tracker_; |
2214 | 2226 |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2637 friend class LargeObjectSpace; | 2649 friend class LargeObjectSpace; |
2638 friend class NewSpace; | 2650 friend class NewSpace; |
2639 friend class PagedSpace; | 2651 friend class PagedSpace; |
2640 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); | 2652 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); |
2641 }; | 2653 }; |
2642 | 2654 |
2643 } // namespace internal | 2655 } // namespace internal |
2644 } // namespace v8 | 2656 } // namespace v8 |
2645 | 2657 |
2646 #endif // V8_HEAP_HEAP_H_ | 2658 #endif // V8_HEAP_HEAP_H_ |
OLD | NEW |