diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-05-02 16:35:37 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-05-05 16:59:01 -0700 |
commit | e76e70f424468f311c2061c291e8384263f3968c (patch) | |
tree | ace430e6682214221feb4101a5b598463f6e0947 /runtime/gc/collector/mark_sweep.cc | |
parent | 0b8027003514c4fa6a850e5087076e991daaf4c3 (diff) | |
download | art-e76e70f424468f311c2061c291e8384263f3968c.tar.gz art-e76e70f424468f311c2061c291e8384263f3968c.tar.bz2 art-e76e70f424468f311c2061c291e8384263f3968c.zip |
Add RecordFree to the GarbageCollector interface
RecordFree now calls the Heap::RecordFree as well as updates the
garbage collector's internal bytes freed accounting.
Change-Id: I8cb03748b0768e3c8c50ea709572960e6e4ad219
Diffstat (limited to 'runtime/gc/collector/mark_sweep.cc')
-rw-r--r-- | runtime/gc/collector/mark_sweep.cc | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/runtime/gc/collector/mark_sweep.cc b/runtime/gc/collector/mark_sweep.cc index e225d5a569..b8051c9b38 100644 --- a/runtime/gc/collector/mark_sweep.cc +++ b/runtime/gc/collector/mark_sweep.cc @@ -1116,13 +1116,10 @@ void MarkSweep::SweepArray(accounting::ObjectStack* allocations, bool swap_bitma timings_.EndSplit(); timings_.StartSplit("RecordFree"); - VLOG(heap) << "Freed " << freed_objects << "/" << count - << " objects with size " << PrettySize(freed_bytes); - heap_->RecordFree(freed_objects + freed_large_objects, freed_bytes + freed_large_object_bytes); - freed_objects_.FetchAndAdd(freed_objects); - freed_large_objects_.FetchAndAdd(freed_large_objects); - freed_bytes_.FetchAndAdd(freed_bytes); - freed_large_object_bytes_.FetchAndAdd(freed_large_object_bytes); + VLOG(heap) << "Freed " << freed_objects << "/" << count << " objects with size " + << PrettySize(freed_bytes); + RecordFree(freed_objects, freed_bytes); + RecordFreeLargeObjects(freed_large_objects, freed_large_object_bytes); timings_.EndSplit(); timings_.StartSplit("ResetStack"); @@ -1150,9 +1147,7 @@ void MarkSweep::Sweep(bool swap_bitmaps) { size_t freed_objects = 0; size_t freed_bytes = 0; alloc_space->Sweep(swap_bitmaps, &freed_objects, &freed_bytes); - heap_->RecordFree(freed_objects, freed_bytes); - freed_objects_.FetchAndAdd(freed_objects); - freed_bytes_.FetchAndAdd(freed_bytes); + RecordFree(freed_objects, freed_bytes); } } SweepLargeObjects(swap_bitmaps); @@ -1163,9 +1158,7 @@ void MarkSweep::SweepLargeObjects(bool swap_bitmaps) { size_t freed_objects = 0; size_t freed_bytes = 0; heap_->GetLargeObjectsSpace()->Sweep(swap_bitmaps, &freed_objects, &freed_bytes); - freed_large_objects_.FetchAndAdd(freed_objects); - freed_large_object_bytes_.FetchAndAdd(freed_bytes); - heap_->RecordFree(freed_objects, freed_bytes); + RecordFreeLargeObjects(freed_objects, freed_bytes); } // Process the "referent" field in a java.lang.ref.Reference. If the referent has not yet been |