diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-01-28 14:50:23 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-02-11 10:40:10 -0800 |
commit | 83c8ee000d525017ead8753fce6bc1020249b96a (patch) | |
tree | d5167ed15dee2629905ac3640b6ea0578d4ae312 /runtime/gc/collector | |
parent | 7cba217ab0661d74deccbb97160cdf60b74d4ea3 (diff) | |
download | art-83c8ee000d525017ead8753fce6bc1020249b96a.zip art-83c8ee000d525017ead8753fce6bc1020249b96a.tar.gz art-83c8ee000d525017ead8753fce6bc1020249b96a.tar.bz2 |
Add root types and thread id to root visiting.
Enables us to pass the root type and thread id to hprof.
Bug: 12680863
Change-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb
Diffstat (limited to 'runtime/gc/collector')
-rw-r--r-- | runtime/gc/collector/mark_sweep.cc | 8 | ||||
-rw-r--r-- | runtime/gc/collector/mark_sweep.h | 8 | ||||
-rw-r--r-- | runtime/gc/collector/semi_space.cc | 7 | ||||
-rw-r--r-- | runtime/gc/collector/semi_space.h | 5 |
4 files changed, 17 insertions, 11 deletions
diff --git a/runtime/gc/collector/mark_sweep.cc b/runtime/gc/collector/mark_sweep.cc index 862d06f..de9f59e 100644 --- a/runtime/gc/collector/mark_sweep.cc +++ b/runtime/gc/collector/mark_sweep.cc @@ -525,14 +525,16 @@ void MarkSweep::MarkRoot(const Object* obj) { } } -Object* MarkSweep::MarkRootParallelCallback(Object* root, void* arg) { +mirror::Object* MarkSweep::MarkRootParallelCallback(mirror::Object* root, void* arg, + uint32_t /*thread_id*/, RootType /*root_type*/) { DCHECK(root != NULL); DCHECK(arg != NULL); reinterpret_cast<MarkSweep*>(arg)->MarkObjectNonNullParallel(root); return root; } -Object* MarkSweep::MarkRootCallback(Object* root, void* arg) { +Object* MarkSweep::MarkRootCallback(Object* root, void* arg, uint32_t /*thread_id*/, + RootType /*root_type*/) { DCHECK(root != nullptr); DCHECK(arg != nullptr); reinterpret_cast<MarkSweep*>(arg)->MarkObjectNonNull(root); @@ -930,7 +932,7 @@ void MarkSweep::RecursiveMark() { ProcessMarkStack(false); } -mirror::Object* MarkSweep::IsMarkedCallback(Object* object, void* arg) { +mirror::Object* MarkSweep::IsMarkedCallback(mirror::Object* object, void* arg) { if (reinterpret_cast<MarkSweep*>(arg)->IsMarked(object)) { return object; } diff --git a/runtime/gc/collector/mark_sweep.h b/runtime/gc/collector/mark_sweep.h index bfedac7..8bc0bb5 100644 --- a/runtime/gc/collector/mark_sweep.h +++ b/runtime/gc/collector/mark_sweep.h @@ -22,8 +22,8 @@ #include "base/macros.h" #include "base/mutex.h" #include "garbage_collector.h" +#include "object_callbacks.h" #include "offsets.h" -#include "root_visitor.h" #include "UniquePtr.h" namespace art { @@ -180,11 +180,13 @@ class MarkSweep : public GarbageCollector { SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_); - static mirror::Object* MarkRootCallback(mirror::Object* root, void* arg) + static mirror::Object* MarkRootCallback(mirror::Object* root, void* arg, uint32_t thread_id, + RootType root_type) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_); - static mirror::Object* MarkRootParallelCallback(mirror::Object* root, void* arg); + static mirror::Object* MarkRootParallelCallback(mirror::Object* root, void* arg, + uint32_t thread_id, RootType root_type); // Marks an object. void MarkObject(const mirror::Object* obj) diff --git a/runtime/gc/collector/semi_space.cc b/runtime/gc/collector/semi_space.cc index 0c6a938..b37b9d2 100644 --- a/runtime/gc/collector/semi_space.cc +++ b/runtime/gc/collector/semi_space.cc @@ -513,7 +513,7 @@ Object* SemiSpace::MarkObject(Object* obj) { return forward_address; } -Object* SemiSpace::RecursiveMarkObjectCallback(Object* root, void* arg) { +mirror::Object* SemiSpace::RecursiveMarkObjectCallback(mirror::Object* root, void* arg) { DCHECK(root != nullptr); DCHECK(arg != nullptr); SemiSpace* semi_space = reinterpret_cast<SemiSpace*>(arg); @@ -522,7 +522,8 @@ Object* SemiSpace::RecursiveMarkObjectCallback(Object* root, void* arg) { return ret; } -Object* SemiSpace::MarkRootCallback(Object* root, void* arg) { +Object* SemiSpace::MarkRootCallback(Object* root, void* arg, uint32_t /*thread_id*/, + RootType /*root_type*/) { DCHECK(root != nullptr); DCHECK(arg != nullptr); return reinterpret_cast<SemiSpace*>(arg)->MarkObject(root); @@ -536,7 +537,7 @@ void SemiSpace::MarkRoots() { timings_.EndSplit(); } -mirror::Object* SemiSpace::MarkedForwardingAddressCallback(Object* object, void* arg) { +mirror::Object* SemiSpace::MarkedForwardingAddressCallback(mirror::Object* object, void* arg) { return reinterpret_cast<SemiSpace*>(arg)->GetMarkedForwardAddress(object); } diff --git a/runtime/gc/collector/semi_space.h b/runtime/gc/collector/semi_space.h index 685b33c..f58402f 100644 --- a/runtime/gc/collector/semi_space.h +++ b/runtime/gc/collector/semi_space.h @@ -22,8 +22,8 @@ #include "base/macros.h" #include "base/mutex.h" #include "garbage_collector.h" +#include "object_callbacks.h" #include "offsets.h" -#include "root_visitor.h" #include "UniquePtr.h" namespace art { @@ -142,7 +142,8 @@ class SemiSpace : public GarbageCollector { static void VisitObjectReferencesAndClass(mirror::Object* obj, const Visitor& visitor) EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_, Locks::mutator_lock_); - static mirror::Object* MarkRootCallback(mirror::Object* root, void* arg) + static mirror::Object* MarkRootCallback(mirror::Object* root, void* arg, uint32_t /*tid*/, + RootType /*root_type*/) EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_, Locks::mutator_lock_); static mirror::Object* RecursiveMarkObjectCallback(mirror::Object* root, void* arg) |