| 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(); |
| 621 if (FLAG_deopt_every_n_garbage_collections > 0) { | 622 if (FLAG_deopt_every_n_garbage_collections > 0) { |
| 622 // TODO(jkummerow/ulan/jarin): This is not safe! We can't assume that | 623 // TODO(jkummerow/ulan/jarin): This is not safe! We can't assume that |
| 623 // the topmost optimized frame can be deoptimized safely, because it | 624 // the topmost optimized frame can be deoptimized safely, because it |
| 624 // might not have a lazy bailout point right after its current PC. | 625 // might not have a lazy bailout point right after its current PC. |
| 625 if (++gcs_since_last_deopt_ == FLAG_deopt_every_n_garbage_collections) { | 626 if (++gcs_since_last_deopt_ == FLAG_deopt_every_n_garbage_collections) { |
| 626 Deoptimizer::DeoptimizeAll(isolate()); | 627 Deoptimizer::DeoptimizeAll(isolate()); |
| 627 gcs_since_last_deopt_ = 0; | 628 gcs_since_last_deopt_ = 0; |
| 628 } | 629 } |
| 629 } | 630 } |
| 630 | 631 |
| (...skipping 5014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5645 | 5646 |
| 5646 | 5647 |
| 5647 void Heap::PrintHandles() { | 5648 void Heap::PrintHandles() { |
| 5648 PrintF("Handles:\n"); | 5649 PrintF("Handles:\n"); |
| 5649 PrintHandleVisitor v; | 5650 PrintHandleVisitor v; |
| 5650 isolate_->handle_scope_implementer()->Iterate(&v); | 5651 isolate_->handle_scope_implementer()->Iterate(&v); |
| 5651 } | 5652 } |
| 5652 | 5653 |
| 5653 #endif | 5654 #endif |
| 5654 | 5655 |
| 5656 class CheckHandleCountVisitor : public ObjectVisitor { |
| 5657 public: |
| 5658 CheckHandleCountVisitor() : handle_count_(0) {} |
| 5659 ~CheckHandleCountVisitor() { CHECK(handle_count_ < 2000); } |
| 5660 void VisitPointers(Object** start, Object** end) { |
| 5661 handle_count_ += end - start; |
| 5662 } |
| 5663 |
| 5664 private: |
| 5665 ptrdiff_t handle_count_; |
| 5666 }; |
| 5667 |
| 5668 |
| 5669 void Heap::CheckHandleCount() { |
| 5670 CheckHandleCountVisitor v; |
| 5671 isolate_->handle_scope_implementer()->Iterate(&v); |
| 5672 } |
| 5673 |
| 5655 | 5674 |
| 5656 Space* AllSpaces::next() { | 5675 Space* AllSpaces::next() { |
| 5657 switch (counter_++) { | 5676 switch (counter_++) { |
| 5658 case NEW_SPACE: | 5677 case NEW_SPACE: |
| 5659 return heap_->new_space(); | 5678 return heap_->new_space(); |
| 5660 case OLD_POINTER_SPACE: | 5679 case OLD_POINTER_SPACE: |
| 5661 return heap_->old_pointer_space(); | 5680 return heap_->old_pointer_space(); |
| 5662 case OLD_DATA_SPACE: | 5681 case OLD_DATA_SPACE: |
| 5663 return heap_->old_data_space(); | 5682 return heap_->old_data_space(); |
| 5664 case CODE_SPACE: | 5683 case CODE_SPACE: |
| (...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6397 static_cast<int>(object_sizes_last_time_[index])); | 6416 static_cast<int>(object_sizes_last_time_[index])); |
| 6398 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6417 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
| 6399 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6418 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
| 6400 | 6419 |
| 6401 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6420 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
| 6402 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6421 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
| 6403 ClearObjectStats(); | 6422 ClearObjectStats(); |
| 6404 } | 6423 } |
| 6405 } | 6424 } |
| 6406 } // namespace v8::internal | 6425 } // namespace v8::internal |
| OLD | NEW |