Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: src/heap.h

Issue 396893004: v8: GCTracer clean-up part 1. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix enum value in ASSERT. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/heap.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef V8_HEAP_H_ 5 #ifndef V8_HEAP_H_
6 #define V8_HEAP_H_ 6 #define V8_HEAP_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 } 1229 }
1230 1230
1231 void IncrementCodeGeneratedBytes(bool is_crankshafted, int size) { 1231 void IncrementCodeGeneratedBytes(bool is_crankshafted, int size) {
1232 if (is_crankshafted) { 1232 if (is_crankshafted) {
1233 crankshaft_codegen_bytes_generated_ += size; 1233 crankshaft_codegen_bytes_generated_ += size;
1234 } else { 1234 } else {
1235 full_codegen_bytes_generated_ += size; 1235 full_codegen_bytes_generated_ += size;
1236 } 1236 }
1237 } 1237 }
1238 1238
1239 // Update GC statistics that are tracked on the Heap.
1240 void UpdateGCStatistics(double start_time,
1241 double end_time,
1242 double spent_in_mutator,
1243 double marking_time);
1244
1239 // Returns maximum GC pause. 1245 // Returns maximum GC pause.
1240 double get_max_gc_pause() { return max_gc_pause_; } 1246 double get_max_gc_pause() { return max_gc_pause_; }
1241 1247
1242 // Returns maximum size of objects alive after GC. 1248 // Returns maximum size of objects alive after GC.
1243 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; } 1249 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; }
1244 1250
1245 // Returns minimal interval between two subsequent collections. 1251 // Returns minimal interval between two subsequent collections.
1246 double get_min_in_mutator() { return min_in_mutator_; } 1252 double get_min_in_mutator() { return min_in_mutator_; }
1247 1253
1248 // TODO(hpayer): remove, should be handled by GCTracer 1254 // TODO(hpayer): remove, should be handled by GCTracer
(...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after
2528 MC_EVACUATE_PAGES, 2534 MC_EVACUATE_PAGES,
2529 MC_UPDATE_NEW_TO_NEW_POINTERS, 2535 MC_UPDATE_NEW_TO_NEW_POINTERS,
2530 MC_UPDATE_ROOT_TO_NEW_POINTERS, 2536 MC_UPDATE_ROOT_TO_NEW_POINTERS,
2531 MC_UPDATE_OLD_TO_NEW_POINTERS, 2537 MC_UPDATE_OLD_TO_NEW_POINTERS,
2532 MC_UPDATE_POINTERS_TO_EVACUATED, 2538 MC_UPDATE_POINTERS_TO_EVACUATED,
2533 MC_UPDATE_POINTERS_BETWEEN_EVACUATED, 2539 MC_UPDATE_POINTERS_BETWEEN_EVACUATED,
2534 MC_UPDATE_MISC_POINTERS, 2540 MC_UPDATE_MISC_POINTERS,
2535 MC_WEAKCOLLECTION_PROCESS, 2541 MC_WEAKCOLLECTION_PROCESS,
2536 MC_WEAKCOLLECTION_CLEAR, 2542 MC_WEAKCOLLECTION_CLEAR,
2537 MC_FLUSH_CODE, 2543 MC_FLUSH_CODE,
2538 kNumberOfScopes 2544 NUMBER_OF_SCOPES
2539 }; 2545 };
2540 2546
2541 Scope(GCTracer* tracer, ScopeId scope) 2547 Scope(GCTracer* tracer, ScopeId scope)
2542 : tracer_(tracer), 2548 : tracer_(tracer),
2543 scope_(scope) { 2549 scope_(scope) {
2544 start_time_ = base::OS::TimeCurrentMillis(); 2550 start_time_ = base::OS::TimeCurrentMillis();
2545 } 2551 }
2546 2552
2547 ~Scope() { 2553 ~Scope() {
2548 ASSERT(scope_ < kNumberOfScopes); // scope_ is unsigned. 2554 ASSERT(scope_ < NUMBER_OF_SCOPES); // scope_ is unsigned.
2549 tracer_->scopes_[scope_] += base::OS::TimeCurrentMillis() - start_time_; 2555 tracer_->scopes_[scope_] += base::OS::TimeCurrentMillis() - start_time_;
2550 } 2556 }
2551 2557
2552 private: 2558 private:
2553 GCTracer* tracer_; 2559 GCTracer* tracer_;
2554 ScopeId scope_; 2560 ScopeId scope_;
2555 double start_time_; 2561 double start_time_;
2562
2563 DISALLOW_COPY_AND_ASSIGN(Scope);
2556 }; 2564 };
2557 2565
2558 explicit GCTracer(Heap* heap, 2566 explicit GCTracer(Heap* heap,
2567 GarbageCollector collector,
2559 const char* gc_reason, 2568 const char* gc_reason,
2560 const char* collector_reason); 2569 const char* collector_reason);
2561 ~GCTracer(); 2570 ~GCTracer();
2562 2571
2563 // Sets the collector.
2564 void set_collector(GarbageCollector collector) { collector_ = collector; }
2565
2566 // Sets the GC count.
2567 void set_gc_count(unsigned int count) { gc_count_ = count; }
2568
2569 // Sets the full GC count.
2570 void set_full_gc_count(int count) { full_gc_count_ = count; }
2571
2572 void increment_nodes_died_in_new_space() { 2572 void increment_nodes_died_in_new_space() {
2573 nodes_died_in_new_space_++; 2573 nodes_died_in_new_space_++;
2574 } 2574 }
2575 2575
2576 void increment_nodes_copied_in_new_space() { 2576 void increment_nodes_copied_in_new_space() {
2577 nodes_copied_in_new_space_++; 2577 nodes_copied_in_new_space_++;
2578 } 2578 }
2579 2579
2580 void increment_nodes_promoted() { 2580 void increment_nodes_promoted() {
2581 nodes_promoted_++; 2581 nodes_promoted_++;
2582 } 2582 }
2583 2583
2584 private: 2584 private:
2585 // Returns a string matching the collector. 2585 // Returns a string matching the collector.
2586 const char* CollectorString(); 2586 const char* CollectorString() const;
2587 2587
2588 // Returns size of object in heap (in MB). 2588 // Print one detailed trace line in name=value format.
2589 inline double SizeOfHeapObjects(); 2589 void PrintNVP() const;
2590
2591 // Print one trace line.
2592 void Print() const;
2590 2593
2591 // Timestamp set in the constructor. 2594 // Timestamp set in the constructor.
2592 double start_time_; 2595 double start_time_;
2593 2596
2597 // Timestamp set in the destructor.
2598 double end_time_;
2599
2594 // Size of objects in heap set in constructor. 2600 // Size of objects in heap set in constructor.
2595 intptr_t start_object_size_; 2601 intptr_t start_object_size_;
2596 2602
2603 // Size of objects in heap set in destructor.
2604 intptr_t end_object_size_;
2605
2597 // Size of memory allocated from OS set in constructor. 2606 // Size of memory allocated from OS set in constructor.
2598 intptr_t start_memory_size_; 2607 intptr_t start_memory_size_;
2599 2608
2609 // Size of memory allocated from OS set in destructor.
2610 intptr_t end_memory_size_;
2611
2600 // Type of collector. 2612 // Type of collector.
2601 GarbageCollector collector_; 2613 GarbageCollector collector_;
2602 2614
2603 // A count (including this one, e.g. the first collection is 1) of the
2604 // number of garbage collections.
2605 unsigned int gc_count_;
2606
2607 // A count (including this one) of the number of full garbage collections.
2608 int full_gc_count_;
2609
2610 // Amounts of time spent in different scopes during GC. 2615 // Amounts of time spent in different scopes during GC.
2611 double scopes_[Scope::kNumberOfScopes]; 2616 double scopes_[Scope::NUMBER_OF_SCOPES];
2612 2617
2613 // Total amount of space either wasted or contained in one of free lists 2618 // Total amount of space either wasted or contained in one of free lists
2614 // before the current GC. 2619 // before the current GC.
2615 intptr_t in_free_list_or_wasted_before_gc_; 2620 intptr_t in_free_list_or_wasted_before_gc_;
2616 2621
2617 // Difference between space used in the heap at the beginning of the current 2622 // Difference between space used in the heap at the beginning of the current
2618 // collection and the end of the previous collection. 2623 // collection and the end of the previous collection.
2619 intptr_t allocated_since_last_gc_; 2624 intptr_t allocated_since_last_gc_;
2620 2625
2621 // Amount of time spent in mutator that is time elapsed between end of the 2626 // Amount of time spent in mutator that is time elapsed between end of the
(...skipping 13 matching lines...) Expand all
2635 int steps_count_; 2640 int steps_count_;
2636 double steps_took_; 2641 double steps_took_;
2637 double longest_step_; 2642 double longest_step_;
2638 int steps_count_since_last_gc_; 2643 int steps_count_since_last_gc_;
2639 double steps_took_since_last_gc_; 2644 double steps_took_since_last_gc_;
2640 2645
2641 Heap* heap_; 2646 Heap* heap_;
2642 2647
2643 const char* gc_reason_; 2648 const char* gc_reason_;
2644 const char* collector_reason_; 2649 const char* collector_reason_;
2650
2651 DISALLOW_COPY_AND_ASSIGN(GCTracer);
2645 }; 2652 };
2646 2653
2647 2654
2648 class RegExpResultsCache { 2655 class RegExpResultsCache {
2649 public: 2656 public:
2650 enum ResultsCacheType { REGEXP_MULTIPLE_INDICES, STRING_SPLIT_SUBSTRINGS }; 2657 enum ResultsCacheType { REGEXP_MULTIPLE_INDICES, STRING_SPLIT_SUBSTRINGS };
2651 2658
2652 // Attempt to retrieve a cached result. On failure, 0 is returned as a Smi. 2659 // Attempt to retrieve a cached result. On failure, 0 is returned as a Smi.
2653 // On success, the returned result is guaranteed to be a COW-array. 2660 // On success, the returned result is guaranteed to be a COW-array.
2654 static Object* Lookup(Heap* heap, 2661 static Object* Lookup(Heap* heap,
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
2780 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2787 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2781 2788
2782 private: 2789 private:
2783 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2790 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2784 }; 2791 };
2785 #endif // DEBUG 2792 #endif // DEBUG
2786 2793
2787 } } // namespace v8::internal 2794 } } // namespace v8::internal
2788 2795
2789 #endif // V8_HEAP_H_ 2796 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « no previous file | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698