| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 945 #endif | 945 #endif |
| 946 | 946 |
| 947 | 947 |
| 948 void NewSpace::Flip() { | 948 void NewSpace::Flip() { |
| 949 SemiSpace tmp = from_space_; | 949 SemiSpace tmp = from_space_; |
| 950 from_space_ = to_space_; | 950 from_space_ = to_space_; |
| 951 to_space_ = tmp; | 951 to_space_ = tmp; |
| 952 } | 952 } |
| 953 | 953 |
| 954 | 954 |
| 955 bool NewSpace::Grow() { | 955 bool NewSpace::Double() { |
| 956 ASSERT(capacity_ < maximum_capacity_); | 956 ASSERT(capacity_ <= maximum_capacity_ / 2); |
| 957 // TODO(1240712): Failure to double the from space can result in | 957 // TODO(1240712): Failure to double the from space can result in |
| 958 // semispaces of different sizes. In the event of that failure, the | 958 // semispaces of different sizes. In the event of that failure, the |
| 959 // to space doubling should be rolled back before returning false. | 959 // to space doubling should be rolled back before returning false. |
| 960 if (!to_space_.Grow() || !from_space_.Grow()) return false; | 960 if (!to_space_.Double() || !from_space_.Double()) return false; |
| 961 capacity_ = to_space_.Capacity() + from_space_.Capacity(); | 961 capacity_ *= 2; |
| 962 allocation_info_.limit = to_space_.high(); | 962 allocation_info_.limit = to_space_.high(); |
| 963 ASSERT_SEMISPACE_ALLOCATION_INFO(allocation_info_, to_space_); | 963 ASSERT_SEMISPACE_ALLOCATION_INFO(allocation_info_, to_space_); |
| 964 return true; | 964 return true; |
| 965 } | 965 } |
| 966 | 966 |
| 967 | 967 |
| 968 void NewSpace::ResetAllocationInfo() { | 968 void NewSpace::ResetAllocationInfo() { |
| 969 allocation_info_.top = to_space_.low(); | 969 allocation_info_.top = to_space_.low(); |
| 970 allocation_info_.limit = to_space_.high(); | 970 allocation_info_.limit = to_space_.high(); |
| 971 ASSERT_SEMISPACE_ALLOCATION_INFO(allocation_info_, to_space_); | 971 ASSERT_SEMISPACE_ALLOCATION_INFO(allocation_info_, to_space_); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1073 return Commit(); | 1073 return Commit(); |
| 1074 } | 1074 } |
| 1075 | 1075 |
| 1076 | 1076 |
| 1077 void SemiSpace::TearDown() { | 1077 void SemiSpace::TearDown() { |
| 1078 start_ = NULL; | 1078 start_ = NULL; |
| 1079 capacity_ = 0; | 1079 capacity_ = 0; |
| 1080 } | 1080 } |
| 1081 | 1081 |
| 1082 | 1082 |
| 1083 bool SemiSpace::Grow() { | 1083 bool SemiSpace::Double() { |
| 1084 // Commit 50% extra space but only up to maximum capacity. | 1084 if (!MemoryAllocator::CommitBlock(high(), capacity_, executable())) { |
| 1085 int extra = RoundUp(capacity_ / 2, OS::AllocateAlignment()); | |
| 1086 if (capacity_ + extra > maximum_capacity_) { | |
| 1087 extra = maximum_capacity_ - capacity_; | |
| 1088 } | |
| 1089 if (!MemoryAllocator::CommitBlock(high(), extra, executable())) { | |
| 1090 return false; | 1085 return false; |
| 1091 } | 1086 } |
| 1092 capacity_ += extra; | 1087 capacity_ *= 2; |
| 1093 return true; | 1088 return true; |
| 1094 } | 1089 } |
| 1095 | 1090 |
| 1096 | 1091 |
| 1097 #ifdef DEBUG | 1092 #ifdef DEBUG |
| 1098 void SemiSpace::Print() { } | 1093 void SemiSpace::Print() { } |
| 1099 | 1094 |
| 1100 | 1095 |
| 1101 void SemiSpace::Verify() { } | 1096 void SemiSpace::Verify() { } |
| 1102 #endif | 1097 #endif |
| (...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2604 reinterpret_cast<Object**>(object->address() | 2599 reinterpret_cast<Object**>(object->address() |
| 2605 + Page::kObjectAreaSize), | 2600 + Page::kObjectAreaSize), |
| 2606 allocation_top); | 2601 allocation_top); |
| 2607 PrintF("\n"); | 2602 PrintF("\n"); |
| 2608 } | 2603 } |
| 2609 } | 2604 } |
| 2610 } | 2605 } |
| 2611 #endif // DEBUG | 2606 #endif // DEBUG |
| 2612 | 2607 |
| 2613 } } // namespace v8::internal | 2608 } } // namespace v8::internal |
| OLD | NEW |