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/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/once.h" | 10 #include "src/base/once.h" |
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 #endif | 611 #endif |
612 | 612 |
613 AllowHeapAllocation for_the_rest_of_the_epilogue; | 613 AllowHeapAllocation for_the_rest_of_the_epilogue; |
614 | 614 |
615 #ifdef DEBUG | 615 #ifdef DEBUG |
616 if (FLAG_print_global_handles) isolate_->global_handles()->Print(); | 616 if (FLAG_print_global_handles) isolate_->global_handles()->Print(); |
617 if (FLAG_print_handles) PrintHandles(); | 617 if (FLAG_print_handles) PrintHandles(); |
618 if (FLAG_gc_verbose) Print(); | 618 if (FLAG_gc_verbose) Print(); |
619 if (FLAG_code_stats) ReportCodeStatistics("After GC"); | 619 if (FLAG_code_stats) ReportCodeStatistics("After GC"); |
620 #endif | 620 #endif |
621 if (FLAG_check_handle_count) CheckHandleCount(); | |
622 if (FLAG_deopt_every_n_garbage_collections > 0) { | 621 if (FLAG_deopt_every_n_garbage_collections > 0) { |
623 // TODO(jkummerow/ulan/jarin): This is not safe! We can't assume that | 622 // TODO(jkummerow/ulan/jarin): This is not safe! We can't assume that |
624 // the topmost optimized frame can be deoptimized safely, because it | 623 // the topmost optimized frame can be deoptimized safely, because it |
625 // might not have a lazy bailout point right after its current PC. | 624 // might not have a lazy bailout point right after its current PC. |
626 if (++gcs_since_last_deopt_ == FLAG_deopt_every_n_garbage_collections) { | 625 if (++gcs_since_last_deopt_ == FLAG_deopt_every_n_garbage_collections) { |
627 Deoptimizer::DeoptimizeAll(isolate()); | 626 Deoptimizer::DeoptimizeAll(isolate()); |
628 gcs_since_last_deopt_ = 0; | 627 gcs_since_last_deopt_ = 0; |
629 } | 628 } |
630 } | 629 } |
631 | 630 |
(...skipping 5011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5643 | 5642 |
5644 | 5643 |
5645 void Heap::PrintHandles() { | 5644 void Heap::PrintHandles() { |
5646 PrintF("Handles:\n"); | 5645 PrintF("Handles:\n"); |
5647 PrintHandleVisitor v; | 5646 PrintHandleVisitor v; |
5648 isolate_->handle_scope_implementer()->Iterate(&v); | 5647 isolate_->handle_scope_implementer()->Iterate(&v); |
5649 } | 5648 } |
5650 | 5649 |
5651 #endif | 5650 #endif |
5652 | 5651 |
5653 class CheckHandleCountVisitor : public ObjectVisitor { | |
5654 public: | |
5655 CheckHandleCountVisitor() : handle_count_(0) {} | |
5656 ~CheckHandleCountVisitor() { CHECK(handle_count_ < 1000); } | |
5657 void VisitPointers(Object** start, Object** end) { | |
5658 handle_count_ += end - start; | |
5659 } | |
5660 | |
5661 private: | |
5662 ptrdiff_t handle_count_; | |
5663 }; | |
5664 | |
5665 | |
5666 void Heap::CheckHandleCount() { | |
5667 CheckHandleCountVisitor v; | |
5668 isolate_->handle_scope_implementer()->Iterate(&v); | |
5669 } | |
5670 | |
5671 | 5652 |
5672 Space* AllSpaces::next() { | 5653 Space* AllSpaces::next() { |
5673 switch (counter_++) { | 5654 switch (counter_++) { |
5674 case NEW_SPACE: | 5655 case NEW_SPACE: |
5675 return heap_->new_space(); | 5656 return heap_->new_space(); |
5676 case OLD_POINTER_SPACE: | 5657 case OLD_POINTER_SPACE: |
5677 return heap_->old_pointer_space(); | 5658 return heap_->old_pointer_space(); |
5678 case OLD_DATA_SPACE: | 5659 case OLD_DATA_SPACE: |
5679 return heap_->old_data_space(); | 5660 return heap_->old_data_space(); |
5680 case CODE_SPACE: | 5661 case CODE_SPACE: |
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6413 static_cast<int>(object_sizes_last_time_[index])); | 6394 static_cast<int>(object_sizes_last_time_[index])); |
6414 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6395 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
6415 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6396 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
6416 | 6397 |
6417 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6398 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
6418 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6399 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
6419 ClearObjectStats(); | 6400 ClearObjectStats(); |
6420 } | 6401 } |
6421 } | 6402 } |
6422 } // namespace v8::internal | 6403 } // namespace v8::internal |
OLD | NEW |