| 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 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 | 798 |
| 799 if (collector == MARK_COMPACTOR) { | 799 if (collector == MARK_COMPACTOR) { |
| 800 // Perform mark-sweep with optional compaction. | 800 // Perform mark-sweep with optional compaction. |
| 801 MarkCompact(tracer); | 801 MarkCompact(tracer); |
| 802 sweep_generation_++; | 802 sweep_generation_++; |
| 803 bool high_survival_rate_during_scavenges = IsHighSurvivalRate() && | 803 bool high_survival_rate_during_scavenges = IsHighSurvivalRate() && |
| 804 IsStableOrIncreasingSurvivalTrend(); | 804 IsStableOrIncreasingSurvivalTrend(); |
| 805 | 805 |
| 806 UpdateSurvivalRateTrend(start_new_space_size); | 806 UpdateSurvivalRateTrend(start_new_space_size); |
| 807 | 807 |
| 808 size_of_old_gen_at_last_old_space_gc_ = PromotedSpaceSize(); | 808 size_of_old_gen_at_last_old_space_gc_ = PromotedSpaceSizeOfObjects(); |
| 809 | 809 |
| 810 if (high_survival_rate_during_scavenges && | 810 if (high_survival_rate_during_scavenges && |
| 811 IsStableOrIncreasingSurvivalTrend()) { | 811 IsStableOrIncreasingSurvivalTrend()) { |
| 812 // Stable high survival rates of young objects both during partial and | 812 // Stable high survival rates of young objects both during partial and |
| 813 // full collection indicate that mutator is either building or modifying | 813 // full collection indicate that mutator is either building or modifying |
| 814 // a structure with a long lifetime. | 814 // a structure with a long lifetime. |
| 815 // In this case we aggressively raise old generation memory limits to | 815 // In this case we aggressively raise old generation memory limits to |
| 816 // postpone subsequent mark-sweep collection and thus trade memory | 816 // postpone subsequent mark-sweep collection and thus trade memory |
| 817 // space for the mutation speed. | 817 // space for the mutation speed. |
| 818 old_gen_limit_factor_ = 2; | 818 old_gen_limit_factor_ = 2; |
| (...skipping 4984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5803 obj = iterator.next()) { | 5803 obj = iterator.next()) { |
| 5804 InstanceType type = obj->map()->instance_type(); | 5804 InstanceType type = obj->map()->instance_type(); |
| 5805 ASSERT(0 <= type && type <= LAST_TYPE); | 5805 ASSERT(0 <= type && type <= LAST_TYPE); |
| 5806 stats->objects_per_type[type]++; | 5806 stats->objects_per_type[type]++; |
| 5807 stats->size_per_type[type] += obj->Size(); | 5807 stats->size_per_type[type] += obj->Size(); |
| 5808 } | 5808 } |
| 5809 } | 5809 } |
| 5810 } | 5810 } |
| 5811 | 5811 |
| 5812 | 5812 |
| 5813 intptr_t Heap::PromotedSpaceSize() { | |
| 5814 return old_pointer_space_->Size() | |
| 5815 + old_data_space_->Size() | |
| 5816 + code_space_->Size() | |
| 5817 + map_space_->Size() | |
| 5818 + cell_space_->Size() | |
| 5819 + lo_space_->Size(); | |
| 5820 } | |
| 5821 | |
| 5822 | |
| 5823 intptr_t Heap::PromotedSpaceSizeOfObjects() { | 5813 intptr_t Heap::PromotedSpaceSizeOfObjects() { |
| 5824 return old_pointer_space_->SizeOfObjects() | 5814 return old_pointer_space_->SizeOfObjects() |
| 5825 + old_data_space_->SizeOfObjects() | 5815 + old_data_space_->SizeOfObjects() |
| 5826 + code_space_->SizeOfObjects() | 5816 + code_space_->SizeOfObjects() |
| 5827 + map_space_->SizeOfObjects() | 5817 + map_space_->SizeOfObjects() |
| 5828 + cell_space_->SizeOfObjects() | 5818 + cell_space_->SizeOfObjects() |
| 5829 + lo_space_->SizeOfObjects(); | 5819 + lo_space_->SizeOfObjects(); |
| 5830 } | 5820 } |
| 5831 | 5821 |
| 5832 | 5822 |
| (...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7139 } else { | 7129 } else { |
| 7140 p ^= 0x1d1ed & (Page::kPageSize - 1); // I died. | 7130 p ^= 0x1d1ed & (Page::kPageSize - 1); // I died. |
| 7141 } | 7131 } |
| 7142 remembered_unmapped_pages_[remembered_unmapped_pages_index_] = | 7132 remembered_unmapped_pages_[remembered_unmapped_pages_index_] = |
| 7143 reinterpret_cast<Address>(p); | 7133 reinterpret_cast<Address>(p); |
| 7144 remembered_unmapped_pages_index_++; | 7134 remembered_unmapped_pages_index_++; |
| 7145 remembered_unmapped_pages_index_ %= kRememberedUnmappedPages; | 7135 remembered_unmapped_pages_index_ %= kRememberedUnmappedPages; |
| 7146 } | 7136 } |
| 7147 | 7137 |
| 7148 } } // namespace v8::internal | 7138 } } // namespace v8::internal |
| OLD | NEW |