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 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 | 512 |
513 // Support for partial snapshots. After calling this we have a linear | 513 // Support for partial snapshots. After calling this we have a linear |
514 // space to write objects in each space. | 514 // space to write objects in each space. |
515 struct Chunk { | 515 struct Chunk { |
516 uint32_t size; | 516 uint32_t size; |
517 Address start; | 517 Address start; |
518 Address end; | 518 Address end; |
519 }; | 519 }; |
520 typedef List<Chunk> Reservation; | 520 typedef List<Chunk> Reservation; |
521 | 521 |
522 static const intptr_t kMinimumOldGenerationAllocationLimit = | |
523 8 * (Page::kPageSize > MB ? Page::kPageSize : MB); | |
524 | |
525 static const int kInitalOldGenerationLimitFactor = 2; | 522 static const int kInitalOldGenerationLimitFactor = 2; |
526 | 523 |
527 #if V8_OS_ANDROID | 524 #if V8_OS_ANDROID |
528 // Don't apply pointer multiplier on Android since it has no swap space and | 525 // Don't apply pointer multiplier on Android since it has no swap space and |
529 // should instead adapt it's heap size based on available physical memory. | 526 // should instead adapt it's heap size based on available physical memory. |
530 static const int kPointerMultiplier = 1; | 527 static const int kPointerMultiplier = 1; |
531 #else | 528 #else |
532 static const int kPointerMultiplier = i::kPointerSize / 4; | 529 static const int kPointerMultiplier = i::kPointerSize / 4; |
533 #endif | 530 #endif |
534 | 531 |
(...skipping 1261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1796 | 1793 |
1797 // Calculates the allocation limit based on a given growing factor and a | 1794 // Calculates the allocation limit based on a given growing factor and a |
1798 // given old generation size. | 1795 // given old generation size. |
1799 intptr_t CalculateOldGenerationAllocationLimit(double factor, | 1796 intptr_t CalculateOldGenerationAllocationLimit(double factor, |
1800 intptr_t old_gen_size); | 1797 intptr_t old_gen_size); |
1801 | 1798 |
1802 // Sets the allocation limit to trigger the next full garbage collection. | 1799 // Sets the allocation limit to trigger the next full garbage collection. |
1803 void SetOldGenerationAllocationLimit(intptr_t old_gen_size, double gc_speed, | 1800 void SetOldGenerationAllocationLimit(intptr_t old_gen_size, double gc_speed, |
1804 double mutator_speed); | 1801 double mutator_speed); |
1805 | 1802 |
| 1803 intptr_t MinimumAllocationLimitGrowingStep() { |
| 1804 const double kRegularAllocationLimitGrowingStep = 8; |
| 1805 const double kLowMemoryAllocationLimitGrowingStep = 2; |
| 1806 intptr_t limit = (Page::kPageSize > MB ? Page::kPageSize : MB); |
| 1807 return limit * (ShouldOptimizeForMemoryUsage() |
| 1808 ? kLowMemoryAllocationLimitGrowingStep |
| 1809 : kRegularAllocationLimitGrowingStep); |
| 1810 } |
| 1811 |
1806 // =========================================================================== | 1812 // =========================================================================== |
1807 // Idle notification. ======================================================== | 1813 // Idle notification. ======================================================== |
1808 // =========================================================================== | 1814 // =========================================================================== |
1809 | 1815 |
1810 bool RecentIdleNotificationHappened(); | 1816 bool RecentIdleNotificationHappened(); |
1811 void ScheduleIdleScavengeIfNeeded(int bytes_allocated); | 1817 void ScheduleIdleScavengeIfNeeded(int bytes_allocated); |
1812 | 1818 |
1813 // =========================================================================== | 1819 // =========================================================================== |
1814 // HeapIterator helpers. ===================================================== | 1820 // HeapIterator helpers. ===================================================== |
1815 // =========================================================================== | 1821 // =========================================================================== |
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2702 friend class LargeObjectSpace; | 2708 friend class LargeObjectSpace; |
2703 friend class NewSpace; | 2709 friend class NewSpace; |
2704 friend class PagedSpace; | 2710 friend class PagedSpace; |
2705 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); | 2711 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); |
2706 }; | 2712 }; |
2707 | 2713 |
2708 } // namespace internal | 2714 } // namespace internal |
2709 } // namespace v8 | 2715 } // namespace v8 |
2710 | 2716 |
2711 #endif // V8_HEAP_HEAP_H_ | 2717 #endif // V8_HEAP_HEAP_H_ |
OLD | NEW |