| 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 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_ |    5 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_ | 
|    6 #define V8_HEAP_INCREMENTAL_MARKING_H_ |    6 #define V8_HEAP_INCREMENTAL_MARKING_H_ | 
|    7  |    7  | 
|    8  |    8  | 
|    9 #include "src/execution.h" |    9 #include "src/execution.h" | 
|   10 #include "src/heap/mark-compact.h" |   10 #include "src/heap/mark-compact.h" | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   43   } |   43   } | 
|   44  |   44  | 
|   45   void SetWeakClosureWasOverApproximatedForTesting(bool val) { |   45   void SetWeakClosureWasOverApproximatedForTesting(bool val) { | 
|   46     weak_closure_was_overapproximated_ = val; |   46     weak_closure_was_overapproximated_ = val; | 
|   47   } |   47   } | 
|   48  |   48  | 
|   49   inline bool IsStopped() { return state() == STOPPED; } |   49   inline bool IsStopped() { return state() == STOPPED; } | 
|   50  |   50  | 
|   51   INLINE(bool IsMarking()) { return state() >= MARKING; } |   51   INLINE(bool IsMarking()) { return state() >= MARKING; } | 
|   52  |   52  | 
|   53   inline bool IsMarkingIncomplete() { return state() == MARKING; } |   53   inline bool CanDoSteps() { | 
 |   54     return FLAG_incremental_marking_steps && | 
 |   55            (state() == MARKING || state() == SWEEPING); | 
 |   56   } | 
|   54  |   57  | 
|   55   inline bool IsComplete() { return state() == COMPLETE; } |   58   inline bool IsComplete() { return state() == COMPLETE; } | 
|   56  |   59  | 
|   57   inline bool IsReadyToOverApproximateWeakClosure() const { |   60   inline bool IsReadyToOverApproximateWeakClosure() const { | 
|   58     return request_type_ == OVERAPPROXIMATION && |   61     return request_type_ == OVERAPPROXIMATION && | 
|   59            !weak_closure_was_overapproximated_; |   62            !weak_closure_was_overapproximated_; | 
|   60   } |   63   } | 
|   61  |   64  | 
|   62   GCRequestType request_type() const { return request_type_; } |   65   GCRequestType request_type() const { return request_type_; } | 
|   63  |   66  | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   95   // incremental marker until it completes. |   98   // incremental marker until it completes. | 
|   96   // Do some marking every time this much memory has been allocated or that many |   99   // Do some marking every time this much memory has been allocated or that many | 
|   97   // heavy (color-checking) write barriers have been invoked. |  100   // heavy (color-checking) write barriers have been invoked. | 
|   98   static const intptr_t kAllocatedThreshold = 65536; |  101   static const intptr_t kAllocatedThreshold = 65536; | 
|   99   static const intptr_t kWriteBarriersInvokedThreshold = 32768; |  102   static const intptr_t kWriteBarriersInvokedThreshold = 32768; | 
|  100   // Start off by marking this many times more memory than has been allocated. |  103   // Start off by marking this many times more memory than has been allocated. | 
|  101   static const intptr_t kInitialMarkingSpeed = 1; |  104   static const intptr_t kInitialMarkingSpeed = 1; | 
|  102   // But if we are promoting a lot of data we need to mark faster to keep up |  105   // But if we are promoting a lot of data we need to mark faster to keep up | 
|  103   // with the data that is entering the old space through promotion. |  106   // with the data that is entering the old space through promotion. | 
|  104   static const intptr_t kFastMarking = 3; |  107   static const intptr_t kFastMarking = 3; | 
 |  108   static const intptr_t kOldSpaceAllocationMarkingFactor = | 
 |  109       kFastMarking / kInitialMarkingSpeed; | 
|  105   // After this many steps we increase the marking/allocating factor. |  110   // After this many steps we increase the marking/allocating factor. | 
|  106   static const intptr_t kMarkingSpeedAccellerationInterval = 1024; |  111   static const intptr_t kMarkingSpeedAccellerationInterval = 1024; | 
|  107   // This is how much we increase the marking/allocating factor by. |  112   // This is how much we increase the marking/allocating factor by. | 
|  108   static const intptr_t kMarkingSpeedAccelleration = 2; |  113   static const intptr_t kMarkingSpeedAccelleration = 2; | 
|  109   static const intptr_t kMaxMarkingSpeed = 1000; |  114   static const intptr_t kMaxMarkingSpeed = 1000; | 
|  110  |  115  | 
|  111   // This is the upper bound for how many times we allow finalization of |  116   // This is the upper bound for how many times we allow finalization of | 
|  112   // incremental marking to be postponed. |  117   // incremental marking to be postponed. | 
|  113   static const size_t kMaxIdleMarkingDelayCounter = 3; |  118   static const size_t kMaxIdleMarkingDelayCounter = 3; | 
|  114  |  119  | 
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  256   int weak_closure_approximation_rounds_; |  261   int weak_closure_approximation_rounds_; | 
|  257  |  262  | 
|  258   GCRequestType request_type_; |  263   GCRequestType request_type_; | 
|  259  |  264  | 
|  260   DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); |  265   DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); | 
|  261 }; |  266 }; | 
|  262 } |  267 } | 
|  263 }  // namespace v8::internal |  268 }  // namespace v8::internal | 
|  264  |  269  | 
|  265 #endif  // V8_HEAP_INCREMENTAL_MARKING_H_ |  270 #endif  // V8_HEAP_INCREMENTAL_MARKING_H_ | 
| OLD | NEW |