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

Side by Side Diff: src/heap.cc

Issue 372193002: Avoid scan-on-scavenge pages during full collection. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: 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 | « src/heap.h ('k') | src/store-buffer.h » ('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 #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 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 ReportHeapStatistics("After GC"); 397 ReportHeapStatistics("After GC");
398 } else if (FLAG_log_gc) { 398 } else if (FLAG_log_gc) {
399 new_space_.ReportStatistics(); 399 new_space_.ReportStatistics();
400 } 400 }
401 #else 401 #else
402 if (FLAG_log_gc) new_space_.ReportStatistics(); 402 if (FLAG_log_gc) new_space_.ReportStatistics();
403 #endif // DEBUG 403 #endif // DEBUG
404 } 404 }
405 405
406 406
407 void Heap::GarbageCollectionPrologue() { 407 void Heap::GarbageCollectionPrologue(GarbageCollector collector) {
408 { AllowHeapAllocation for_the_first_part_of_prologue; 408 { AllowHeapAllocation for_the_first_part_of_prologue;
409 ClearJSFunctionResultCaches(); 409 ClearJSFunctionResultCaches();
410 gc_count_++; 410 gc_count_++;
411 unflattened_strings_length_ = 0; 411 unflattened_strings_length_ = 0;
412 412
413 if (FLAG_flush_code && FLAG_flush_code_incrementally) { 413 if (FLAG_flush_code && FLAG_flush_code_incrementally) {
414 mark_compact_collector()->EnableCodeFlushing(true); 414 mark_compact_collector()->EnableCodeFlushing(true);
415 } 415 }
416 416
417 #ifdef VERIFY_HEAP 417 #ifdef VERIFY_HEAP
(...skipping 10 matching lines...) Expand all
428 UpdateMaximumCommitted(); 428 UpdateMaximumCommitted();
429 429
430 #ifdef DEBUG 430 #ifdef DEBUG
431 ASSERT(!AllowHeapAllocation::IsAllowed() && gc_state_ == NOT_IN_GC); 431 ASSERT(!AllowHeapAllocation::IsAllowed() && gc_state_ == NOT_IN_GC);
432 432
433 if (FLAG_gc_verbose) Print(); 433 if (FLAG_gc_verbose) Print();
434 434
435 ReportStatisticsBeforeGC(); 435 ReportStatisticsBeforeGC();
436 #endif // DEBUG 436 #endif // DEBUG
437 437
438 store_buffer()->GCPrologue(); 438 store_buffer()->GCPrologue(collector == MARK_COMPACTOR);
439 439
440 if (isolate()->concurrent_osr_enabled()) { 440 if (isolate()->concurrent_osr_enabled()) {
441 isolate()->optimizing_compiler_thread()->AgeBufferedOsrJobs(); 441 isolate()->optimizing_compiler_thread()->AgeBufferedOsrJobs();
442 } 442 }
443 443
444 if (new_space_.IsAtMaximumCapacity()) { 444 if (new_space_.IsAtMaximumCapacity()) {
445 maximum_size_scavenges_++; 445 maximum_size_scavenges_++;
446 } else { 446 } else {
447 maximum_size_scavenges_ = 0; 447 maximum_size_scavenges_ = 0;
448 } 448 }
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 collector = SCAVENGER; 826 collector = SCAVENGER;
827 collector_reason = "incremental marking delaying mark-sweep"; 827 collector_reason = "incremental marking delaying mark-sweep";
828 } 828 }
829 } 829 }
830 830
831 bool next_gc_likely_to_collect_more = false; 831 bool next_gc_likely_to_collect_more = false;
832 832
833 { GCTracer tracer(this, gc_reason, collector_reason); 833 { GCTracer tracer(this, gc_reason, collector_reason);
834 ASSERT(AllowHeapAllocation::IsAllowed()); 834 ASSERT(AllowHeapAllocation::IsAllowed());
835 DisallowHeapAllocation no_allocation_during_gc; 835 DisallowHeapAllocation no_allocation_during_gc;
836 GarbageCollectionPrologue(); 836 GarbageCollectionPrologue(collector);
837 // The GC count was incremented in the prologue. Tell the tracer about 837 // The GC count was incremented in the prologue. Tell the tracer about
838 // it. 838 // it.
839 tracer.set_gc_count(gc_count_); 839 tracer.set_gc_count(gc_count_);
840 840
841 // Tell the tracer which collector we've selected. 841 // Tell the tracer which collector we've selected.
842 tracer.set_collector(collector); 842 tracer.set_collector(collector);
843 843
844 { 844 {
845 HistogramTimerScope histogram_timer_scope( 845 HistogramTimerScope histogram_timer_scope(
846 (collector == SCAVENGER) ? isolate_->counters()->gc_scavenger() 846 (collector == SCAVENGER) ? isolate_->counters()->gc_scavenger()
(...skipping 5564 matching lines...) Expand 10 before | Expand all | Expand 10 after
6411 static_cast<int>(object_sizes_last_time_[index])); 6411 static_cast<int>(object_sizes_last_time_[index]));
6412 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) 6412 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT)
6413 #undef ADJUST_LAST_TIME_OBJECT_COUNT 6413 #undef ADJUST_LAST_TIME_OBJECT_COUNT
6414 6414
6415 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 6415 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
6416 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 6416 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
6417 ClearObjectStats(); 6417 ClearObjectStats();
6418 } 6418 }
6419 6419
6420 } } // namespace v8::internal 6420 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap.h ('k') | src/store-buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698