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 "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/base/once.h" | 9 #include "src/base/once.h" |
10 #include "src/base/utils/random-number-generator.h" | 10 #include "src/base/utils/random-number-generator.h" |
(...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1290 // Verify that there are no pointers to new space in spaces where we | 1290 // Verify that there are no pointers to new space in spaces where we |
1291 // do not expect them. | 1291 // do not expect them. |
1292 VerifyNonPointerSpacePointersVisitor v(heap); | 1292 VerifyNonPointerSpacePointersVisitor v(heap); |
1293 HeapObjectIterator code_it(heap->code_space()); | 1293 HeapObjectIterator code_it(heap->code_space()); |
1294 for (HeapObject* object = code_it.Next(); | 1294 for (HeapObject* object = code_it.Next(); |
1295 object != NULL; object = code_it.Next()) | 1295 object != NULL; object = code_it.Next()) |
1296 object->Iterate(&v); | 1296 object->Iterate(&v); |
1297 | 1297 |
1298 // The old data space was normally swept conservatively so that the iterator | 1298 // The old data space was normally swept conservatively so that the iterator |
1299 // doesn't work, so we normally skip the next bit. | 1299 // doesn't work, so we normally skip the next bit. |
1300 if (!heap->old_data_space()->was_swept_conservatively()) { | 1300 if (heap->old_data_space()->is_iterable()) { |
1301 HeapObjectIterator data_it(heap->old_data_space()); | 1301 HeapObjectIterator data_it(heap->old_data_space()); |
1302 for (HeapObject* object = data_it.Next(); | 1302 for (HeapObject* object = data_it.Next(); |
1303 object != NULL; object = data_it.Next()) | 1303 object != NULL; object = data_it.Next()) |
1304 object->Iterate(&v); | 1304 object->Iterate(&v); |
1305 } | 1305 } |
1306 } | 1306 } |
1307 #endif // VERIFY_HEAP | 1307 #endif // VERIFY_HEAP |
1308 | 1308 |
1309 | 1309 |
1310 void Heap::CheckNewSpaceExpansionCriteria() { | 1310 void Heap::CheckNewSpaceExpansionCriteria() { |
(...skipping 2928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4239 Struct* result; | 4239 Struct* result; |
4240 { AllocationResult allocation = Allocate(map, space); | 4240 { AllocationResult allocation = Allocate(map, space); |
4241 if (!allocation.To(&result)) return allocation; | 4241 if (!allocation.To(&result)) return allocation; |
4242 } | 4242 } |
4243 result->InitializeBody(size); | 4243 result->InitializeBody(size); |
4244 return result; | 4244 return result; |
4245 } | 4245 } |
4246 | 4246 |
4247 | 4247 |
4248 bool Heap::IsHeapIterable() { | 4248 bool Heap::IsHeapIterable() { |
4249 return (!old_pointer_space()->was_swept_conservatively() && | 4249 return (old_pointer_space()->is_iterable() && |
4250 !old_data_space()->was_swept_conservatively() && | 4250 old_data_space()->is_iterable() && |
4251 new_space_top_after_last_gc_ == new_space()->top()); | 4251 new_space_top_after_last_gc_ == new_space()->top()); |
4252 } | 4252 } |
4253 | 4253 |
4254 | 4254 |
4255 void Heap::MakeHeapIterable() { | 4255 void Heap::MakeHeapIterable() { |
4256 ASSERT(AllowHeapAllocation::IsAllowed()); | 4256 ASSERT(AllowHeapAllocation::IsAllowed()); |
4257 if (!IsHeapIterable()) { | 4257 if (!IsHeapIterable()) { |
4258 CollectAllGarbage(kMakeHeapIterableMask, "Heap::MakeHeapIterable"); | 4258 CollectAllGarbage(kMakeHeapIterableMask, "Heap::MakeHeapIterable"); |
4259 } | 4259 } |
4260 ASSERT(IsHeapIterable()); | 4260 ASSERT(IsHeapIterable()); |
(...skipping 2182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6443 static_cast<int>(object_sizes_last_time_[index])); | 6443 static_cast<int>(object_sizes_last_time_[index])); |
6444 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6444 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
6445 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6445 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
6446 | 6446 |
6447 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6447 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
6448 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6448 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
6449 ClearObjectStats(); | 6449 ClearObjectStats(); |
6450 } | 6450 } |
6451 | 6451 |
6452 } } // namespace v8::internal | 6452 } } // namespace v8::internal |
OLD | NEW |