| Index: runtime/vm/scavenger.cc
|
| diff --git a/runtime/vm/scavenger.cc b/runtime/vm/scavenger.cc
|
| index f6273457278a9649199f5d958cdc28428cca6212..0cc302c58595db68f1cad8326a61d067ea034745 100644
|
| --- a/runtime/vm/scavenger.cc
|
| +++ b/runtime/vm/scavenger.cc
|
| @@ -74,6 +74,7 @@ class ScavengerVisitor : public ObjectPointerVisitor {
|
| vm_heap_(Dart::vm_isolate()->heap()),
|
| delayed_weak_stack_(),
|
| growth_policy_(PageSpace::kControlGrowth),
|
| + bytes_promoted_(0),
|
| visiting_old_pointers_(false),
|
| in_scavenge_pointer_(false) {}
|
|
|
| @@ -108,6 +109,8 @@ class ScavengerVisitor : public ObjectPointerVisitor {
|
| }
|
| }
|
|
|
| + intptr_t bytes_promoted() const { return bytes_promoted_; }
|
| +
|
| private:
|
| void UpdateStoreBuffer(RawObject** p, RawObject* obj) {
|
| uword ptr = reinterpret_cast<uword>(p);
|
| @@ -184,6 +187,7 @@ class ScavengerVisitor : public ObjectPointerVisitor {
|
| // If promotion succeeded then we need to remember it so that it can
|
| // be traversed later.
|
| scavenger_->PushToPromotedStack(new_addr);
|
| + bytes_promoted_ += size;
|
| if (HeapTrace::is_enabled()) {
|
| heap_->trace()->TracePromotion(raw_addr, new_addr);
|
| }
|
| @@ -196,6 +200,7 @@ class ScavengerVisitor : public ObjectPointerVisitor {
|
| new_addr = heap_->TryAllocate(size, Heap::kOld, growth_policy_);
|
| if (new_addr != 0) {
|
| scavenger_->PushToPromotedStack(new_addr);
|
| + bytes_promoted_ += size;
|
| if (HeapTrace::is_enabled()) {
|
| heap_->trace()->TracePromotion(raw_addr, new_addr);
|
| }
|
| @@ -242,6 +247,9 @@ class ScavengerVisitor : public ObjectPointerVisitor {
|
| DelaySet delay_set_;
|
| GrowableArray<RawObject*> delayed_weak_stack_;
|
| PageSpace::GrowthPolicy growth_policy_;
|
| + // TODO(cshapiro): use this value to compute survival statistics for
|
| + // new space growth policy.
|
| + intptr_t bytes_promoted_;
|
|
|
| bool visiting_old_pointers_;
|
| bool in_scavenge_pointer_;
|
|
|