| 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 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "accessors.h" | 7 #include "accessors.h" |
| 8 #include "api.h" | 8 #include "api.h" |
| 9 #include "bootstrapper.h" | 9 #include "bootstrapper.h" |
| 10 #include "codegen.h" | 10 #include "codegen.h" |
| (...skipping 5003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5014 | 5014 |
| 5015 if (Snapshot::IsEnabled()) { | 5015 if (Snapshot::IsEnabled()) { |
| 5016 // If we are using a snapshot we always reserve the default amount | 5016 // If we are using a snapshot we always reserve the default amount |
| 5017 // of memory for each semispace because code in the snapshot has | 5017 // of memory for each semispace because code in the snapshot has |
| 5018 // write-barrier code that relies on the size and alignment of new | 5018 // write-barrier code that relies on the size and alignment of new |
| 5019 // space. We therefore cannot use a larger max semispace size | 5019 // space. We therefore cannot use a larger max semispace size |
| 5020 // than the default reserved semispace size. | 5020 // than the default reserved semispace size. |
| 5021 if (max_semi_space_size_ > reserved_semispace_size_) { | 5021 if (max_semi_space_size_ > reserved_semispace_size_) { |
| 5022 max_semi_space_size_ = reserved_semispace_size_; | 5022 max_semi_space_size_ = reserved_semispace_size_; |
| 5023 if (FLAG_trace_gc) { | 5023 if (FLAG_trace_gc) { |
| 5024 PrintPID("Max semispace size cannot be more than %dkbytes\n", | 5024 PrintPID("Max semi-space size cannot be more than %d kbytes\n", |
| 5025 reserved_semispace_size_ >> 10); | 5025 reserved_semispace_size_ >> 10); |
| 5026 } | 5026 } |
| 5027 } | 5027 } |
| 5028 } else { | 5028 } else { |
| 5029 // If we are not using snapshots we reserve space for the actual | 5029 // If we are not using snapshots we reserve space for the actual |
| 5030 // max semispace size. | 5030 // max semispace size. |
| 5031 reserved_semispace_size_ = max_semi_space_size_; | 5031 reserved_semispace_size_ = max_semi_space_size_; |
| 5032 } | 5032 } |
| 5033 | 5033 |
| 5034 // The max executable size must be less than or equal to the max old | 5034 // The max executable size must be less than or equal to the max old |
| 5035 // generation size. | 5035 // generation size. |
| 5036 if (max_executable_size_ > max_old_generation_size_) { | 5036 if (max_executable_size_ > max_old_generation_size_) { |
| 5037 max_executable_size_ = max_old_generation_size_; | 5037 max_executable_size_ = max_old_generation_size_; |
| 5038 } | 5038 } |
| 5039 | 5039 |
| 5040 // The new space size must be a power of two to support single-bit testing | 5040 // The new space size must be a power of two to support single-bit testing |
| 5041 // for containment. | 5041 // for containment. |
| 5042 max_semi_space_size_ = RoundUpToPowerOf2(max_semi_space_size_); | 5042 max_semi_space_size_ = RoundUpToPowerOf2(max_semi_space_size_); |
| 5043 reserved_semispace_size_ = RoundUpToPowerOf2(reserved_semispace_size_); | 5043 reserved_semispace_size_ = RoundUpToPowerOf2(reserved_semispace_size_); |
| 5044 |
| 5045 if (FLAG_min_semi_space_size > 0) { |
| 5046 int initial_semispace_size = FLAG_min_semi_space_size * MB; |
| 5047 if (initial_semispace_size > max_semi_space_size_) { |
| 5048 initial_semispace_size_ = max_semi_space_size_; |
| 5049 if (FLAG_trace_gc) { |
| 5050 PrintPID("Min semi-space size cannot be more than the maximum" |
| 5051 "semi-space size of %d MB\n", max_semi_space_size_); |
| 5052 } |
| 5053 } else { |
| 5054 initial_semispace_size_ = initial_semispace_size; |
| 5055 } |
| 5056 } |
| 5057 |
| 5044 initial_semispace_size_ = Min(initial_semispace_size_, max_semi_space_size_); | 5058 initial_semispace_size_ = Min(initial_semispace_size_, max_semi_space_size_); |
| 5045 | 5059 |
| 5046 // The external allocation limit should be below 256 MB on all architectures | 5060 // The external allocation limit should be below 256 MB on all architectures |
| 5047 // to avoid unnecessary low memory notifications, as that is the threshold | 5061 // to avoid unnecessary low memory notifications, as that is the threshold |
| 5048 // for some embedders. | 5062 // for some embedders. |
| 5049 external_allocation_limit_ = 12 * max_semi_space_size_; | 5063 external_allocation_limit_ = 12 * max_semi_space_size_; |
| 5050 ASSERT(external_allocation_limit_ <= 256 * MB); | 5064 ASSERT(external_allocation_limit_ <= 256 * MB); |
| 5051 | 5065 |
| 5052 // The old generation is paged and needs at least one page for each space. | 5066 // The old generation is paged and needs at least one page for each space. |
| 5053 int paged_space_count = LAST_PAGED_SPACE - FIRST_PAGED_SPACE + 1; | 5067 int paged_space_count = LAST_PAGED_SPACE - FIRST_PAGED_SPACE + 1; |
| (...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6469 static_cast<int>(object_sizes_last_time_[index])); | 6483 static_cast<int>(object_sizes_last_time_[index])); |
| 6470 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6484 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
| 6471 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6485 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
| 6472 | 6486 |
| 6473 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6487 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
| 6474 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6488 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
| 6475 ClearObjectStats(); | 6489 ClearObjectStats(); |
| 6476 } | 6490 } |
| 6477 | 6491 |
| 6478 } } // namespace v8::internal | 6492 } } // namespace v8::internal |
| OLD | NEW |