OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/base/platform/platform.h" | 8 #include "src/base/platform/platform.h" |
9 #include "src/full-codegen.h" | 9 #include "src/full-codegen.h" |
10 #include "src/heap/mark-compact.h" | 10 #include "src/heap/mark-compact.h" |
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 if ((cur <= addr) && (addr < next)) return obj; | 1014 if ((cur <= addr) && (addr < next)) return obj; |
1015 } | 1015 } |
1016 | 1016 |
1017 UNREACHABLE(); | 1017 UNREACHABLE(); |
1018 return Smi::FromInt(0); | 1018 return Smi::FromInt(0); |
1019 } | 1019 } |
1020 | 1020 |
1021 | 1021 |
1022 bool PagedSpace::CanExpand() { | 1022 bool PagedSpace::CanExpand() { |
1023 DCHECK(max_capacity_ % AreaSize() == 0); | 1023 DCHECK(max_capacity_ % AreaSize() == 0); |
1024 | 1024 DCHECK(Capacity() <= heap()->MaxOldGenerationSize()); |
1025 if (Capacity() == max_capacity_) return false; | 1025 DCHECK(heap()->CommittedOldGenerationMemory() <= |
1026 | 1026 heap()->MaxOldGenerationSize()); |
1027 DCHECK(Capacity() < max_capacity_); | |
1028 | 1027 |
1029 // Are we going to exceed capacity for this space? | 1028 // Are we going to exceed capacity for this space? |
1030 if ((Capacity() + Page::kPageSize) > max_capacity_) return false; | 1029 if (!heap()->CanExpandOldGeneration(Page::kPageSize)) return false; |
1031 | 1030 |
1032 return true; | 1031 return true; |
1033 } | 1032 } |
1034 | 1033 |
1035 | 1034 |
1036 bool PagedSpace::Expand() { | 1035 bool PagedSpace::Expand() { |
1037 if (!CanExpand()) return false; | 1036 if (!CanExpand()) return false; |
1038 | 1037 |
1039 intptr_t size = AreaSize(); | 1038 intptr_t size = AreaSize(); |
1040 | 1039 |
1041 if (anchor_.next_page() == &anchor_) { | 1040 if (anchor_.next_page() == &anchor_) { |
1042 size = Snapshot::SizeOfFirstPage(heap()->isolate(), identity()); | 1041 size = Snapshot::SizeOfFirstPage(heap()->isolate(), identity()); |
1043 } | 1042 } |
1044 | 1043 |
1045 Page* p = heap()->isolate()->memory_allocator()->AllocatePage(size, this, | 1044 Page* p = heap()->isolate()->memory_allocator()->AllocatePage(size, this, |
1046 executable()); | 1045 executable()); |
1047 if (p == NULL) return false; | 1046 if (p == NULL) return false; |
1048 | 1047 |
1049 // Pages created during bootstrapping may contain immortal immovable objects. | 1048 // Pages created during bootstrapping may contain immortal immovable objects. |
1050 if (!heap()->deserialization_complete()) p->MarkNeverEvacuate(); | 1049 if (!heap()->deserialization_complete()) p->MarkNeverEvacuate(); |
1051 | 1050 |
1052 DCHECK(Capacity() <= max_capacity_); | 1051 DCHECK(Capacity() <= heap()->MaxOldGenerationSize()); |
| 1052 DCHECK(heap()->CommittedOldGenerationMemory() <= |
| 1053 heap()->MaxOldGenerationSize()); |
1053 | 1054 |
1054 p->InsertAfter(anchor_.prev_page()); | 1055 p->InsertAfter(anchor_.prev_page()); |
1055 | 1056 |
1056 return true; | 1057 return true; |
1057 } | 1058 } |
1058 | 1059 |
1059 | 1060 |
1060 int PagedSpace::CountTotalPages() { | 1061 int PagedSpace::CountTotalPages() { |
1061 PageIterator it(this); | 1062 PageIterator it(this); |
1062 int count = 0; | 1063 int count = 0; |
(...skipping 2076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3139 object->ShortPrint(); | 3140 object->ShortPrint(); |
3140 PrintF("\n"); | 3141 PrintF("\n"); |
3141 } | 3142 } |
3142 printf(" --------------------------------------\n"); | 3143 printf(" --------------------------------------\n"); |
3143 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); | 3144 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); |
3144 } | 3145 } |
3145 | 3146 |
3146 #endif // DEBUG | 3147 #endif // DEBUG |
3147 } | 3148 } |
3148 } // namespace v8::internal | 3149 } // namespace v8::internal |
OLD | NEW |