| Index: runtime/vm/scavenger.cc
|
| diff --git a/runtime/vm/scavenger.cc b/runtime/vm/scavenger.cc
|
| index e885b9801e7cf8c877ea03b8abc02333f726927f..f526af1b6b2165e9f680dbabf47639309003874e 100644
|
| --- a/runtime/vm/scavenger.cc
|
| +++ b/runtime/vm/scavenger.cc
|
| @@ -415,13 +415,18 @@ Scavenger::Scavenger(Heap* heap,
|
| if (to_ == NULL) {
|
| FATAL("Out of memory.\n");
|
| }
|
| - UpdateMaxHeapCapacity();
|
| // Setup local fields.
|
| top_ = FirstObjectStart();
|
| resolved_top_ = top_;
|
| end_ = to_->end();
|
|
|
| survivor_end_ = FirstObjectStart();
|
| +
|
| + UpdateMaxHeapCapacity();
|
| + UpdateMaxHeapUsage();
|
| + if (heap_ != NULL) {
|
| + heap_->UpdateGlobalMaxUsed();
|
| + }
|
| }
|
|
|
|
|
| @@ -501,6 +506,10 @@ void Scavenger::Epilogue(Isolate* isolate,
|
| }
|
| #endif // defined(DEBUG)
|
| from->Delete();
|
| + UpdateMaxHeapUsage();
|
| + if (heap_ != NULL) {
|
| + heap_->UpdateGlobalMaxUsed();
|
| + }
|
| if (invoke_api_callbacks && (isolate->gc_epilogue_callback() != NULL)) {
|
| (isolate->gc_epilogue_callback())();
|
| }
|
| @@ -720,6 +729,19 @@ void Scavenger::UpdateMaxHeapCapacity() {
|
| }
|
|
|
|
|
| +void Scavenger::UpdateMaxHeapUsage() {
|
| + if (heap_ == NULL) {
|
| + // Some unit tests.
|
| + return;
|
| + }
|
| + ASSERT(to_ != NULL);
|
| + ASSERT(heap_ != NULL);
|
| + Isolate* isolate = heap_->isolate();
|
| + ASSERT(isolate != NULL);
|
| + isolate->GetHeapNewUsedMaxMetric()->SetValue(UsedInWords() * kWordSize);
|
| +}
|
| +
|
| +
|
| uword Scavenger::ProcessWeakProperty(RawWeakProperty* raw_weak,
|
| ScavengerVisitor* visitor) {
|
| // The fate of the weak property is determined by its key.
|
| @@ -916,9 +938,9 @@ void Scavenger::PrintToJSONObject(JSONObject* object) const {
|
| } else {
|
| space.AddProperty("avgCollectionPeriodMillis", 0.0);
|
| }
|
| - space.AddProperty("used", UsedInWords() * kWordSize);
|
| - space.AddProperty("capacity", CapacityInWords() * kWordSize);
|
| - space.AddProperty("external", ExternalInWords() * kWordSize);
|
| + space.AddProperty64("used", UsedInWords() * kWordSize);
|
| + space.AddProperty64("capacity", CapacityInWords() * kWordSize);
|
| + space.AddProperty64("external", ExternalInWords() * kWordSize);
|
| space.AddProperty("time", MicrosecondsToSeconds(gc_time_micros()));
|
| }
|
|
|
|
|