| 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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 class GCIdleTimeAction; | 424 class GCIdleTimeAction; |
| 425 class GCIdleTimeHandler; | 425 class GCIdleTimeHandler; |
| 426 class GCIdleTimeHeapState; | 426 class GCIdleTimeHeapState; |
| 427 class GCTracer; | 427 class GCTracer; |
| 428 class HeapObjectsFilter; | 428 class HeapObjectsFilter; |
| 429 class HeapStats; | 429 class HeapStats; |
| 430 class Isolate; | 430 class Isolate; |
| 431 class MemoryReducer; | 431 class MemoryReducer; |
| 432 class ObjectStats; | 432 class ObjectStats; |
| 433 class Scavenger; | 433 class Scavenger; |
| 434 class ScavengeJob; |
| 434 class WeakObjectRetainer; | 435 class WeakObjectRetainer; |
| 435 | 436 |
| 436 | 437 |
| 437 // A queue of objects promoted during scavenge. Each object is accompanied | 438 // A queue of objects promoted during scavenge. Each object is accompanied |
| 438 // by it's size to avoid dereferencing a map pointer for scanning. | 439 // by it's size to avoid dereferencing a map pointer for scanning. |
| 439 // The last page in to-space is used for the promotion queue. On conflict | 440 // The last page in to-space is used for the promotion queue. On conflict |
| 440 // during scavenge, the promotion queue is allocated externally and all | 441 // during scavenge, the promotion queue is allocated externally and all |
| 441 // entries are copied to the external queue. | 442 // entries are copied to the external queue. |
| 442 class PromotionQueue { | 443 class PromotionQueue { |
| 443 public: | 444 public: |
| (...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1877 // Calculates the allocation limit based on a given growing factor and a | 1878 // Calculates the allocation limit based on a given growing factor and a |
| 1878 // given old generation size. | 1879 // given old generation size. |
| 1879 intptr_t CalculateOldGenerationAllocationLimit(double factor, | 1880 intptr_t CalculateOldGenerationAllocationLimit(double factor, |
| 1880 intptr_t old_gen_size); | 1881 intptr_t old_gen_size); |
| 1881 | 1882 |
| 1882 // Sets the allocation limit to trigger the next full garbage collection. | 1883 // Sets the allocation limit to trigger the next full garbage collection. |
| 1883 void SetOldGenerationAllocationLimit(intptr_t old_gen_size, double gc_speed, | 1884 void SetOldGenerationAllocationLimit(intptr_t old_gen_size, double gc_speed, |
| 1884 double mutator_speed); | 1885 double mutator_speed); |
| 1885 | 1886 |
| 1886 // =========================================================================== | 1887 // =========================================================================== |
| 1888 // Inline allocation. ======================================================== |
| 1889 // =========================================================================== |
| 1890 |
| 1891 void LowerInlineAllocationLimit(intptr_t step); |
| 1892 void ResetInlineAllocationLimit(); |
| 1893 |
| 1894 // =========================================================================== |
| 1887 // Idle notification. ======================================================== | 1895 // Idle notification. ======================================================== |
| 1888 // =========================================================================== | 1896 // =========================================================================== |
| 1889 | 1897 |
| 1890 bool RecentIdleNotificationHappened(); | 1898 bool RecentIdleNotificationHappened(); |
| 1899 void ScheduleIdleScavengeIfNeeded(int bytes_allocated); |
| 1891 | 1900 |
| 1892 // =========================================================================== | 1901 // =========================================================================== |
| 1893 // Allocation methods. ======================================================= | 1902 // Allocation methods. ======================================================= |
| 1894 // =========================================================================== | 1903 // =========================================================================== |
| 1895 | 1904 |
| 1896 // Returns a deep copy of the JavaScript object. | 1905 // Returns a deep copy of the JavaScript object. |
| 1897 // Properties and elements are copied too. | 1906 // Properties and elements are copied too. |
| 1898 // Optionally takes an AllocationSite to be appended in an AllocationMemento. | 1907 // Optionally takes an AllocationSite to be appended in an AllocationMemento. |
| 1899 MUST_USE_RESULT AllocationResult CopyJSObject(JSObject* source, | 1908 MUST_USE_RESULT AllocationResult CopyJSObject(JSObject* source, |
| 1900 AllocationSite* site = NULL); | 1909 AllocationSite* site = NULL); |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2260 StoreBuffer store_buffer_; | 2269 StoreBuffer store_buffer_; |
| 2261 | 2270 |
| 2262 IncrementalMarking incremental_marking_; | 2271 IncrementalMarking incremental_marking_; |
| 2263 | 2272 |
| 2264 GCIdleTimeHandler* gc_idle_time_handler_; | 2273 GCIdleTimeHandler* gc_idle_time_handler_; |
| 2265 | 2274 |
| 2266 MemoryReducer* memory_reducer_; | 2275 MemoryReducer* memory_reducer_; |
| 2267 | 2276 |
| 2268 ObjectStats* object_stats_; | 2277 ObjectStats* object_stats_; |
| 2269 | 2278 |
| 2279 ScavengeJob* scavenge_job_; |
| 2280 |
| 2270 // These two counters are monotomically increasing and never reset. | 2281 // These two counters are monotomically increasing and never reset. |
| 2271 size_t full_codegen_bytes_generated_; | 2282 size_t full_codegen_bytes_generated_; |
| 2272 size_t crankshaft_codegen_bytes_generated_; | 2283 size_t crankshaft_codegen_bytes_generated_; |
| 2273 | 2284 |
| 2274 // This counter is increased before each GC and never reset. | 2285 // This counter is increased before each GC and never reset. |
| 2275 // To account for the bytes allocated since the last GC, use the | 2286 // To account for the bytes allocated since the last GC, use the |
| 2276 // NewSpaceAllocationCounter() function. | 2287 // NewSpaceAllocationCounter() function. |
| 2277 size_t new_space_allocation_counter_; | 2288 size_t new_space_allocation_counter_; |
| 2278 | 2289 |
| 2279 // This counter is increased before each GC and never reset. To | 2290 // This counter is increased before each GC and never reset. To |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2333 ArrayBufferTracker* array_buffer_tracker_; | 2344 ArrayBufferTracker* array_buffer_tracker_; |
| 2334 | 2345 |
| 2335 // Classes in "heap" can be friends. | 2346 // Classes in "heap" can be friends. |
| 2336 friend class AlwaysAllocateScope; | 2347 friend class AlwaysAllocateScope; |
| 2337 friend class GCCallbacksScope; | 2348 friend class GCCallbacksScope; |
| 2338 friend class GCTracer; | 2349 friend class GCTracer; |
| 2339 friend class HeapIterator; | 2350 friend class HeapIterator; |
| 2340 friend class IncrementalMarking; | 2351 friend class IncrementalMarking; |
| 2341 friend class MarkCompactCollector; | 2352 friend class MarkCompactCollector; |
| 2342 friend class MarkCompactMarkingVisitor; | 2353 friend class MarkCompactMarkingVisitor; |
| 2354 friend class NewSpace; |
| 2343 friend class ObjectStatsVisitor; | 2355 friend class ObjectStatsVisitor; |
| 2344 friend class Page; | 2356 friend class Page; |
| 2345 friend class Scavenger; | 2357 friend class Scavenger; |
| 2346 friend class StoreBuffer; | 2358 friend class StoreBuffer; |
| 2347 | 2359 |
| 2348 // The allocator interface. | 2360 // The allocator interface. |
| 2349 friend class Factory; | 2361 friend class Factory; |
| 2350 | 2362 |
| 2351 // The Isolate constructs us. | 2363 // The Isolate constructs us. |
| 2352 friend class Isolate; | 2364 friend class Isolate; |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2701 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2713 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
| 2702 | 2714 |
| 2703 private: | 2715 private: |
| 2704 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2716 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
| 2705 }; | 2717 }; |
| 2706 #endif // DEBUG | 2718 #endif // DEBUG |
| 2707 } | 2719 } |
| 2708 } // namespace v8::internal | 2720 } // namespace v8::internal |
| 2709 | 2721 |
| 2710 #endif // V8_HEAP_HEAP_H_ | 2722 #endif // V8_HEAP_HEAP_H_ |
| OLD | NEW |