OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 static const intptr_t kMinimumPromotionLimit = 5 * Page::kPageSize; | 1578 static const intptr_t kMinimumPromotionLimit = 5 * Page::kPageSize; |
1579 static const intptr_t kMinimumAllocationLimit = | 1579 static const intptr_t kMinimumAllocationLimit = |
1580 8 * (Page::kPageSize > MB ? Page::kPageSize : MB); | 1580 8 * (Page::kPageSize > MB ? Page::kPageSize : MB); |
1581 | 1581 |
1582 intptr_t OldGenPromotionLimit(intptr_t old_gen_size) { | 1582 intptr_t OldGenPromotionLimit(intptr_t old_gen_size) { |
1583 const int divisor = FLAG_stress_compaction ? 10 : | 1583 const int divisor = FLAG_stress_compaction ? 10 : |
1584 new_space_high_promotion_mode_active_ ? 1 : 3; | 1584 new_space_high_promotion_mode_active_ ? 1 : 3; |
1585 intptr_t limit = | 1585 intptr_t limit = |
1586 Max(old_gen_size + old_gen_size / divisor, kMinimumPromotionLimit); | 1586 Max(old_gen_size + old_gen_size / divisor, kMinimumPromotionLimit); |
1587 limit += new_space_.Capacity(); | 1587 limit += new_space_.Capacity(); |
| 1588 // TODO(hpayer): Can be removed when when pretenuring is supported for all |
| 1589 // allocation sites. |
| 1590 if (IsHighSurvivalRate() && IsStableOrIncreasingSurvivalTrend()) { |
| 1591 limit *= 2; |
| 1592 } |
1588 intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; | 1593 intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |
1589 return Min(limit, halfway_to_the_max); | 1594 return Min(limit, halfway_to_the_max); |
1590 } | 1595 } |
1591 | 1596 |
1592 intptr_t OldGenAllocationLimit(intptr_t old_gen_size) { | 1597 intptr_t OldGenAllocationLimit(intptr_t old_gen_size) { |
1593 const int divisor = FLAG_stress_compaction ? 8 : | 1598 const int divisor = FLAG_stress_compaction ? 8 : |
1594 new_space_high_promotion_mode_active_ ? 1 : 2; | 1599 new_space_high_promotion_mode_active_ ? 1 : 2; |
1595 intptr_t limit = | 1600 intptr_t limit = |
1596 Max(old_gen_size + old_gen_size / divisor, kMinimumAllocationLimit); | 1601 Max(old_gen_size + old_gen_size / divisor, kMinimumAllocationLimit); |
1597 limit += new_space_.Capacity(); | 1602 limit += new_space_.Capacity(); |
| 1603 // TODO(hpayer): Can be removed when when pretenuring is supported for all |
| 1604 // allocation sites. |
| 1605 if (IsHighSurvivalRate() && IsStableOrIncreasingSurvivalTrend()) { |
| 1606 limit *= 2; |
| 1607 } |
1598 intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; | 1608 intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |
1599 return Min(limit, halfway_to_the_max); | 1609 return Min(limit, halfway_to_the_max); |
1600 } | 1610 } |
1601 | 1611 |
1602 // Implements the corresponding V8 API function. | 1612 // Implements the corresponding V8 API function. |
1603 bool IdleNotification(int hint); | 1613 bool IdleNotification(int hint); |
1604 | 1614 |
1605 // Declare all the root indices. | 1615 // Declare all the root indices. |
1606 enum RootListIndex { | 1616 enum RootListIndex { |
1607 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, | 1617 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, |
(...skipping 1489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3097 AssertNoAllocation no_alloc; // i.e. no gc allowed. | 3107 AssertNoAllocation no_alloc; // i.e. no gc allowed. |
3098 | 3108 |
3099 private: | 3109 private: |
3100 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 3110 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
3101 }; | 3111 }; |
3102 #endif // DEBUG | 3112 #endif // DEBUG |
3103 | 3113 |
3104 } } // namespace v8::internal | 3114 } } // namespace v8::internal |
3105 | 3115 |
3106 #endif // V8_HEAP_H_ | 3116 #endif // V8_HEAP_H_ |
OLD | NEW |