OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_PAGES_H_ | 5 #ifndef VM_PAGES_H_ |
6 #define VM_PAGES_H_ | 6 #define VM_PAGES_H_ |
7 | 7 |
8 #include "vm/freelist.h" | 8 #include "vm/freelist.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 #include "vm/lockers.h" | 10 #include "vm/lockers.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 // Should be called after each collection to update the controller state. | 134 // Should be called after each collection to update the controller state. |
135 void EvaluateGarbageCollection(SpaceUsage before, | 135 void EvaluateGarbageCollection(SpaceUsage before, |
136 SpaceUsage after, | 136 SpaceUsage after, |
137 int64_t start, int64_t end); | 137 int64_t start, int64_t end); |
138 | 138 |
139 int64_t last_code_collection_in_us() { return last_code_collection_in_us_; } | 139 int64_t last_code_collection_in_us() { return last_code_collection_in_us_; } |
140 void set_last_code_collection_in_us(int64_t t) { | 140 void set_last_code_collection_in_us(int64_t t) { |
141 last_code_collection_in_us_ = t; | 141 last_code_collection_in_us_ = t; |
142 } | 142 } |
143 | 143 |
144 void Enable(SpaceUsage current) { | 144 void set_last_usage(SpaceUsage current) { |
145 last_usage_ = current; | 145 last_usage_ = current; |
| 146 } |
| 147 |
| 148 void Enable() { |
146 is_enabled_ = true; | 149 is_enabled_ = true; |
147 } | 150 } |
148 void Disable() { | 151 void Disable() { |
149 is_enabled_ = false; | 152 is_enabled_ = false; |
150 } | 153 } |
151 bool is_enabled() { | 154 bool is_enabled() { |
152 return is_enabled_; | 155 return is_enabled_; |
153 } | 156 } |
154 | 157 |
155 private: | 158 private: |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 | 261 |
259 // Checks if enough time has elapsed since the last attempt to collect | 262 // Checks if enough time has elapsed since the last attempt to collect |
260 // code. | 263 // code. |
261 bool ShouldCollectCode(); | 264 bool ShouldCollectCode(); |
262 | 265 |
263 // Collect the garbage in the page space using mark-sweep. | 266 // Collect the garbage in the page space using mark-sweep. |
264 void MarkSweep(bool invoke_api_callbacks); | 267 void MarkSweep(bool invoke_api_callbacks); |
265 | 268 |
266 void StartEndAddress(uword* start, uword* end) const; | 269 void StartEndAddress(uword* start, uword* end) const; |
267 | 270 |
| 271 void InitGrowthControl() { |
| 272 page_space_controller_.set_last_usage(usage_); |
| 273 page_space_controller_.Enable(); |
| 274 } |
| 275 |
268 void SetGrowthControlState(bool state) { | 276 void SetGrowthControlState(bool state) { |
269 if (state) { | 277 if (state) { |
270 page_space_controller_.Enable(usage_); | 278 page_space_controller_.Enable(); |
271 } else { | 279 } else { |
272 page_space_controller_.Disable(); | 280 page_space_controller_.Disable(); |
273 } | 281 } |
274 } | 282 } |
275 | 283 |
276 bool GrowthControlState() { | 284 bool GrowthControlState() { |
277 return page_space_controller_.is_enabled(); | 285 return page_space_controller_.is_enabled(); |
278 } | 286 } |
279 | 287 |
280 bool NeedsExternalGC() const { | 288 bool NeedsExternalGC() const { |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 friend class HeapIterationScope; | 456 friend class HeapIterationScope; |
449 friend class PageSpaceController; | 457 friend class PageSpaceController; |
450 friend class SweeperTask; | 458 friend class SweeperTask; |
451 | 459 |
452 DISALLOW_IMPLICIT_CONSTRUCTORS(PageSpace); | 460 DISALLOW_IMPLICIT_CONSTRUCTORS(PageSpace); |
453 }; | 461 }; |
454 | 462 |
455 } // namespace dart | 463 } // namespace dart |
456 | 464 |
457 #endif // VM_PAGES_H_ | 465 #endif // VM_PAGES_H_ |
OLD | NEW |