| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 #include "vm/class_table.h" | 5 #include "vm/class_table.h" |
| 6 #include "vm/flags.h" | 6 #include "vm/flags.h" |
| 7 #include "vm/freelist.h" | 7 #include "vm/freelist.h" |
| 8 #include "vm/heap.h" | 8 #include "vm/heap.h" |
| 9 #include "vm/object.h" | 9 #include "vm/object.h" |
| 10 #include "vm/raw_object.h" | 10 #include "vm/raw_object.h" |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 post_gc.Reset(); | 205 post_gc.Reset(); |
| 206 recent.Reset(); | 206 recent.Reset(); |
| 207 accumulated.Reset(); | 207 accumulated.Reset(); |
| 208 last_reset.Reset(); | 208 last_reset.Reset(); |
| 209 promoted_count = 0; | 209 promoted_count = 0; |
| 210 promoted_size = 0; | 210 promoted_size = 0; |
| 211 } | 211 } |
| 212 | 212 |
| 213 | 213 |
| 214 void ClassHeapStats::ResetAtNewGC() { | 214 void ClassHeapStats::ResetAtNewGC() { |
| 215 Verify(); |
| 215 pre_gc.new_count = post_gc.new_count + recent.new_count; | 216 pre_gc.new_count = post_gc.new_count + recent.new_count; |
| 216 pre_gc.new_size = post_gc.new_size + recent.new_size; | 217 pre_gc.new_size = post_gc.new_size + recent.new_size; |
| 217 // Accumulate allocations. | 218 // Accumulate allocations. |
| 218 accumulated.new_count += recent.new_count - last_reset.new_count; | 219 accumulated.new_count += recent.new_count - last_reset.new_count; |
| 219 accumulated.new_size += recent.new_size - last_reset.new_size; | 220 accumulated.new_size += recent.new_size - last_reset.new_size; |
| 220 last_reset.ResetNew(); | 221 last_reset.ResetNew(); |
| 221 post_gc.ResetNew(); | 222 post_gc.ResetNew(); |
| 222 recent.ResetNew(); | 223 recent.ResetNew(); |
| 223 old_pre_new_gc_count_ = recent.old_count; | 224 old_pre_new_gc_count_ = recent.old_count; |
| 224 old_pre_new_gc_size_ = recent.old_size; | 225 old_pre_new_gc_size_ = recent.old_size; |
| 225 } | 226 } |
| 226 | 227 |
| 227 | 228 |
| 228 void ClassHeapStats::ResetAtOldGC() { | 229 void ClassHeapStats::ResetAtOldGC() { |
| 230 Verify(); |
| 229 pre_gc.old_count = post_gc.old_count + recent.old_count; | 231 pre_gc.old_count = post_gc.old_count + recent.old_count; |
| 230 pre_gc.old_size = post_gc.old_size + recent.old_size; | 232 pre_gc.old_size = post_gc.old_size + recent.old_size; |
| 231 // Accumulate allocations. | 233 // Accumulate allocations. |
| 232 accumulated.old_count += recent.old_count - last_reset.old_count; | 234 accumulated.old_count += recent.old_count - last_reset.old_count; |
| 233 accumulated.old_size += recent.old_size - last_reset.old_size; | 235 accumulated.old_size += recent.old_size - last_reset.old_size; |
| 234 last_reset.ResetOld(); | 236 last_reset.ResetOld(); |
| 235 post_gc.ResetOld(); | 237 post_gc.ResetOld(); |
| 236 recent.ResetOld(); | 238 recent.ResetOld(); |
| 237 } | 239 } |
| 238 | 240 |
| 239 | 241 |
| 242 void ClassHeapStats::Verify() { |
| 243 pre_gc.Verify(); |
| 244 post_gc.Verify(); |
| 245 recent.Verify(); |
| 246 accumulated.Verify(); |
| 247 last_reset.Verify(); |
| 248 } |
| 249 |
| 250 |
| 240 void ClassHeapStats::UpdateSize(intptr_t instance_size) { | 251 void ClassHeapStats::UpdateSize(intptr_t instance_size) { |
| 241 pre_gc.UpdateSize(instance_size); | 252 pre_gc.UpdateSize(instance_size); |
| 242 post_gc.UpdateSize(instance_size); | 253 post_gc.UpdateSize(instance_size); |
| 243 recent.UpdateSize(instance_size); | 254 recent.UpdateSize(instance_size); |
| 244 accumulated.UpdateSize(instance_size); | 255 accumulated.UpdateSize(instance_size); |
| 245 last_reset.UpdateSize(instance_size); | 256 last_reset.UpdateSize(instance_size); |
| 246 promoted_size = promoted_count * instance_size; | 257 promoted_size = promoted_count * instance_size; |
| 247 old_pre_new_gc_size_ = old_pre_new_gc_count_ * instance_size; | 258 old_pre_new_gc_size_ = old_pre_new_gc_count_ * instance_size; |
| 248 } | 259 } |
| 249 | 260 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 } | 349 } |
| 339 Class& cls = Class::Handle(At(cid)); | 350 Class& cls = Class::Handle(At(cid)); |
| 340 if (!(cls.is_finalized() || cls.is_prefinalized())) { | 351 if (!(cls.is_finalized() || cls.is_prefinalized())) { |
| 341 // Not finalized. | 352 // Not finalized. |
| 342 return NULL; | 353 return NULL; |
| 343 } | 354 } |
| 344 ClassHeapStats* stats = PreliminaryStatsAt(cid); | 355 ClassHeapStats* stats = PreliminaryStatsAt(cid); |
| 345 if (ShouldUpdateSizeForClassId(cid)) { | 356 if (ShouldUpdateSizeForClassId(cid)) { |
| 346 stats->UpdateSize(cls.instance_size()); | 357 stats->UpdateSize(cls.instance_size()); |
| 347 } | 358 } |
| 359 stats->Verify(); |
| 348 return stats; | 360 return stats; |
| 349 } | 361 } |
| 350 | 362 |
| 351 | 363 |
| 352 void ClassTable::ResetCountersOld() { | 364 void ClassTable::ResetCountersOld() { |
| 353 for (intptr_t i = 0; i < kNumPredefinedCids; i++) { | 365 for (intptr_t i = 0; i < kNumPredefinedCids; i++) { |
| 354 predefined_class_heap_stats_table_[i].ResetAtOldGC(); | 366 predefined_class_heap_stats_table_[i].ResetAtOldGC(); |
| 355 } | 367 } |
| 356 for (intptr_t i = kNumPredefinedCids; i < top_; i++) { | 368 for (intptr_t i = kNumPredefinedCids; i < top_; i++) { |
| 357 class_heap_stats_table_[i].ResetAtOldGC(); | 369 class_heap_stats_table_[i].ResetAtOldGC(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 | 452 |
| 441 void ClassTable::UpdateLiveNew(intptr_t cid, intptr_t size) { | 453 void ClassTable::UpdateLiveNew(intptr_t cid, intptr_t size) { |
| 442 ClassHeapStats* stats = PreliminaryStatsAt(cid); | 454 ClassHeapStats* stats = PreliminaryStatsAt(cid); |
| 443 ASSERT(stats != NULL); | 455 ASSERT(stats != NULL); |
| 444 ASSERT(size >= 0); | 456 ASSERT(size >= 0); |
| 445 stats->post_gc.AddNew(size); | 457 stats->post_gc.AddNew(size); |
| 446 } | 458 } |
| 447 | 459 |
| 448 | 460 |
| 449 } // namespace dart | 461 } // namespace dart |
| OLD | NEW |