OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 6495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6506 space != NULL; | 6506 space != NULL; |
6507 space = spaces.next()) { | 6507 space = spaces.next()) { |
6508 holes_size += space->Waste() + space->Available(); | 6508 holes_size += space->Waste() + space->Available(); |
6509 } | 6509 } |
6510 return holes_size; | 6510 return holes_size; |
6511 } | 6511 } |
6512 | 6512 |
6513 | 6513 |
6514 GCTracer::GCTracer(Heap* heap) | 6514 GCTracer::GCTracer(Heap* heap) |
6515 : start_time_(0.0), | 6515 : start_time_(0.0), |
6516 start_size_(0), | 6516 start_object_size_(0), |
| 6517 start_memory_size_(0), |
6517 gc_count_(0), | 6518 gc_count_(0), |
6518 full_gc_count_(0), | 6519 full_gc_count_(0), |
6519 allocated_since_last_gc_(0), | 6520 allocated_since_last_gc_(0), |
6520 spent_in_mutator_(0), | 6521 spent_in_mutator_(0), |
6521 promoted_objects_size_(0), | 6522 promoted_objects_size_(0), |
6522 heap_(heap) { | 6523 heap_(heap) { |
6523 if (!FLAG_trace_gc && !FLAG_print_cumulative_gc_stat) return; | 6524 if (!FLAG_trace_gc && !FLAG_print_cumulative_gc_stat) return; |
6524 start_time_ = OS::TimeCurrentMillis(); | 6525 start_time_ = OS::TimeCurrentMillis(); |
6525 start_size_ = heap_->SizeOfObjects(); | 6526 start_object_size_ = heap_->SizeOfObjects(); |
| 6527 start_memory_size_ = heap_->isolate()->memory_allocator()->Size(); |
6526 | 6528 |
6527 for (int i = 0; i < Scope::kNumberOfScopes; i++) { | 6529 for (int i = 0; i < Scope::kNumberOfScopes; i++) { |
6528 scopes_[i] = 0; | 6530 scopes_[i] = 0; |
6529 } | 6531 } |
6530 | 6532 |
6531 in_free_list_or_wasted_before_gc_ = CountTotalHolesSize(); | 6533 in_free_list_or_wasted_before_gc_ = CountTotalHolesSize(); |
6532 | 6534 |
6533 allocated_since_last_gc_ = | 6535 allocated_since_last_gc_ = |
6534 heap_->SizeOfObjects() - heap_->alive_after_last_gc_; | 6536 heap_->SizeOfObjects() - heap_->alive_after_last_gc_; |
6535 | 6537 |
(...skipping 29 matching lines...) Expand all Loading... |
6565 heap_->alive_after_last_gc_); | 6567 heap_->alive_after_last_gc_); |
6566 if (!first_gc) { | 6568 if (!first_gc) { |
6567 heap_->min_in_mutator_ = Min(heap_->min_in_mutator_, | 6569 heap_->min_in_mutator_ = Min(heap_->min_in_mutator_, |
6568 static_cast<int>(spent_in_mutator_)); | 6570 static_cast<int>(spent_in_mutator_)); |
6569 } | 6571 } |
6570 } | 6572 } |
6571 | 6573 |
6572 if (!FLAG_trace_gc_nvp) { | 6574 if (!FLAG_trace_gc_nvp) { |
6573 int external_time = static_cast<int>(scopes_[Scope::EXTERNAL]); | 6575 int external_time = static_cast<int>(scopes_[Scope::EXTERNAL]); |
6574 | 6576 |
6575 PrintF("%s %.1f -> %.1f MB, ", | 6577 double end_memory_size_mb = |
| 6578 static_cast<double>(heap_->isolate()->memory_allocator()->Size()) / MB; |
| 6579 |
| 6580 PrintF("%s %.1f (%.1f) -> %.1f (%.1f) MB, ", |
6576 CollectorString(), | 6581 CollectorString(), |
6577 static_cast<double>(start_size_) / MB, | 6582 static_cast<double>(start_object_size_) / MB, |
6578 SizeOfHeapObjects()); | 6583 static_cast<double>(start_memory_size_) / MB, |
| 6584 SizeOfHeapObjects(), |
| 6585 end_memory_size_mb); |
6579 | 6586 |
6580 if (external_time > 0) PrintF("%d / ", external_time); | 6587 if (external_time > 0) PrintF("%d / ", external_time); |
6581 PrintF("%d ms", time); | 6588 PrintF("%d ms", time); |
6582 if (steps_count_ > 0) { | 6589 if (steps_count_ > 0) { |
6583 if (collector_ == SCAVENGER) { | 6590 if (collector_ == SCAVENGER) { |
6584 PrintF(" (+ %d ms in %d steps since last GC)", | 6591 PrintF(" (+ %d ms in %d steps since last GC)", |
6585 static_cast<int>(steps_took_since_last_gc_), | 6592 static_cast<int>(steps_took_since_last_gc_), |
6586 steps_count_since_last_gc_); | 6593 steps_count_since_last_gc_); |
6587 } else { | 6594 } else { |
6588 PrintF(" (+ %d ms in %d steps since start of marking, " | 6595 PrintF(" (+ %d ms in %d steps since start of marking, " |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6622 static_cast<int>(scopes_[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS])); | 6629 static_cast<int>(scopes_[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS])); |
6623 PrintF("old_new=%d ", | 6630 PrintF("old_new=%d ", |
6624 static_cast<int>(scopes_[Scope::MC_UPDATE_OLD_TO_NEW_POINTERS])); | 6631 static_cast<int>(scopes_[Scope::MC_UPDATE_OLD_TO_NEW_POINTERS])); |
6625 PrintF("compaction_ptrs=%d ", | 6632 PrintF("compaction_ptrs=%d ", |
6626 static_cast<int>(scopes_[Scope::MC_UPDATE_POINTERS_TO_EVACUATED])); | 6633 static_cast<int>(scopes_[Scope::MC_UPDATE_POINTERS_TO_EVACUATED])); |
6627 PrintF("intracompaction_ptrs=%d ", static_cast<int>(scopes_[ | 6634 PrintF("intracompaction_ptrs=%d ", static_cast<int>(scopes_[ |
6628 Scope::MC_UPDATE_POINTERS_BETWEEN_EVACUATED])); | 6635 Scope::MC_UPDATE_POINTERS_BETWEEN_EVACUATED])); |
6629 PrintF("misc_compaction=%d ", | 6636 PrintF("misc_compaction=%d ", |
6630 static_cast<int>(scopes_[Scope::MC_UPDATE_MISC_POINTERS])); | 6637 static_cast<int>(scopes_[Scope::MC_UPDATE_MISC_POINTERS])); |
6631 | 6638 |
6632 PrintF("total_size_before=%" V8_PTR_PREFIX "d ", start_size_); | 6639 PrintF("total_size_before=%" V8_PTR_PREFIX "d ", start_object_size_); |
6633 PrintF("total_size_after=%" V8_PTR_PREFIX "d ", heap_->SizeOfObjects()); | 6640 PrintF("total_size_after=%" V8_PTR_PREFIX "d ", heap_->SizeOfObjects()); |
6634 PrintF("holes_size_before=%" V8_PTR_PREFIX "d ", | 6641 PrintF("holes_size_before=%" V8_PTR_PREFIX "d ", |
6635 in_free_list_or_wasted_before_gc_); | 6642 in_free_list_or_wasted_before_gc_); |
6636 PrintF("holes_size_after=%" V8_PTR_PREFIX "d ", CountTotalHolesSize()); | 6643 PrintF("holes_size_after=%" V8_PTR_PREFIX "d ", CountTotalHolesSize()); |
6637 | 6644 |
6638 PrintF("allocated=%" V8_PTR_PREFIX "d ", allocated_since_last_gc_); | 6645 PrintF("allocated=%" V8_PTR_PREFIX "d ", allocated_since_last_gc_); |
6639 PrintF("promoted=%" V8_PTR_PREFIX "d ", promoted_objects_size_); | 6646 PrintF("promoted=%" V8_PTR_PREFIX "d ", promoted_objects_size_); |
6640 | 6647 |
6641 if (collector_ == SCAVENGER) { | 6648 if (collector_ == SCAVENGER) { |
6642 PrintF("stepscount=%d ", steps_count_since_last_gc_); | 6649 PrintF("stepscount=%d ", steps_count_since_last_gc_); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6838 isolate_->heap()->store_buffer()->Compact(); | 6845 isolate_->heap()->store_buffer()->Compact(); |
6839 isolate_->heap()->store_buffer()->Filter(MemoryChunk::ABOUT_TO_BE_FREED); | 6846 isolate_->heap()->store_buffer()->Filter(MemoryChunk::ABOUT_TO_BE_FREED); |
6840 for (chunk = chunks_queued_for_free_; chunk != NULL; chunk = next) { | 6847 for (chunk = chunks_queued_for_free_; chunk != NULL; chunk = next) { |
6841 next = chunk->next_chunk(); | 6848 next = chunk->next_chunk(); |
6842 isolate_->memory_allocator()->Free(chunk); | 6849 isolate_->memory_allocator()->Free(chunk); |
6843 } | 6850 } |
6844 chunks_queued_for_free_ = NULL; | 6851 chunks_queued_for_free_ = NULL; |
6845 } | 6852 } |
6846 | 6853 |
6847 } } // namespace v8::internal | 6854 } } // namespace v8::internal |
OLD | NEW |