| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 23 matching lines...) Expand all Loading... |
| 34 #include "v8conversions.h" | 34 #include "v8conversions.h" |
| 35 | 35 |
| 36 namespace v8 { | 36 namespace v8 { |
| 37 namespace internal { | 37 namespace internal { |
| 38 | 38 |
| 39 | 39 |
| 40 IncrementalMarking::IncrementalMarking(Heap* heap) | 40 IncrementalMarking::IncrementalMarking(Heap* heap) |
| 41 : heap_(heap), | 41 : heap_(heap), |
| 42 state_(STOPPED), | 42 state_(STOPPED), |
| 43 marking_deque_memory_(NULL), | 43 marking_deque_memory_(NULL), |
| 44 marking_deque_memory_committed_(false), |
| 44 steps_count_(0), | 45 steps_count_(0), |
| 45 steps_took_(0), | 46 steps_took_(0), |
| 46 longest_step_(0.0), | 47 longest_step_(0.0), |
| 47 old_generation_space_available_at_start_of_incremental_(0), | 48 old_generation_space_available_at_start_of_incremental_(0), |
| 48 old_generation_space_used_at_start_of_incremental_(0), | 49 old_generation_space_used_at_start_of_incremental_(0), |
| 49 steps_count_since_last_gc_(0), | 50 steps_count_since_last_gc_(0), |
| 50 steps_took_since_last_gc_(0), | 51 steps_took_since_last_gc_(0), |
| 51 should_hurry_(false), | 52 should_hurry_(false), |
| 52 allocation_marking_factor_(0), | 53 allocation_marking_factor_(0), |
| 53 allocated_(0), | 54 allocated_(0), |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 } | 434 } |
| 434 } | 435 } |
| 435 } | 436 } |
| 436 } | 437 } |
| 437 } | 438 } |
| 438 | 439 |
| 439 | 440 |
| 440 void IncrementalMarking::EnsureMarkingDequeIsCommitted() { | 441 void IncrementalMarking::EnsureMarkingDequeIsCommitted() { |
| 441 if (marking_deque_memory_ == NULL) { | 442 if (marking_deque_memory_ == NULL) { |
| 442 marking_deque_memory_ = new VirtualMemory(4 * MB); | 443 marking_deque_memory_ = new VirtualMemory(4 * MB); |
| 443 marking_deque_memory_->Commit( | 444 } |
| 445 if (!marking_deque_memory_committed_) { |
| 446 bool success = marking_deque_memory_->Commit( |
| 444 reinterpret_cast<Address>(marking_deque_memory_->address()), | 447 reinterpret_cast<Address>(marking_deque_memory_->address()), |
| 445 marking_deque_memory_->size(), | 448 marking_deque_memory_->size(), |
| 446 false); // Not executable. | 449 false); // Not executable. |
| 450 CHECK(success); |
| 451 marking_deque_memory_committed_ = true; |
| 447 } | 452 } |
| 448 } | 453 } |
| 449 | 454 |
| 455 void IncrementalMarking::UncommitMarkingDeque() { |
| 456 ASSERT(state_ == STOPPED); |
| 457 if (marking_deque_memory_committed_) { |
| 458 bool success = marking_deque_memory_->Uncommit( |
| 459 reinterpret_cast<Address>(marking_deque_memory_->address()), |
| 460 marking_deque_memory_->size()); |
| 461 CHECK(success); |
| 462 marking_deque_memory_committed_ = false; |
| 463 } |
| 464 } |
| 465 |
| 450 | 466 |
| 451 void IncrementalMarking::Start() { | 467 void IncrementalMarking::Start() { |
| 452 if (FLAG_trace_incremental_marking) { | 468 if (FLAG_trace_incremental_marking) { |
| 453 PrintF("[IncrementalMarking] Start\n"); | 469 PrintF("[IncrementalMarking] Start\n"); |
| 454 } | 470 } |
| 455 ASSERT(FLAG_incremental_marking); | 471 ASSERT(FLAG_incremental_marking); |
| 456 ASSERT(state_ == STOPPED); | 472 ASSERT(state_ == STOPPED); |
| 457 | 473 |
| 458 ResetStepCounters(); | 474 ResetStepCounters(); |
| 459 | 475 |
| (...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 allocation_marking_factor_ = kInitialAllocationMarkingFactor; | 911 allocation_marking_factor_ = kInitialAllocationMarkingFactor; |
| 896 bytes_scanned_ = 0; | 912 bytes_scanned_ = 0; |
| 897 } | 913 } |
| 898 | 914 |
| 899 | 915 |
| 900 int64_t IncrementalMarking::SpaceLeftInOldSpace() { | 916 int64_t IncrementalMarking::SpaceLeftInOldSpace() { |
| 901 return heap_->MaxOldGenerationSize() - heap_->PromotedSpaceSize(); | 917 return heap_->MaxOldGenerationSize() - heap_->PromotedSpaceSize(); |
| 902 } | 918 } |
| 903 | 919 |
| 904 } } // namespace v8::internal | 920 } } // namespace v8::internal |
| OLD | NEW |