Print more diagnosis info on to-space invariant violation.
Pass the method/field (in GcRootSource) to the read barrier to print
more info when a to-space invariant violation is detected on a
method/field GC root access.
Refactor ConcurrentCopying::AssertToSpaceInvariant().
Bug: 12687968
Bug: 21564728
Change-Id: I3a5fde1f41969349b0fee6cd9217b948d5241a7c
diff --git a/runtime/gc_root-inl.h b/runtime/gc_root-inl.h
index 57d5689..ae8a38f 100644
--- a/runtime/gc_root-inl.h
+++ b/runtime/gc_root-inl.h
@@ -27,9 +27,9 @@
template<class MirrorType>
template<ReadBarrierOption kReadBarrierOption>
-inline MirrorType* GcRoot<MirrorType>::Read() const {
+inline MirrorType* GcRoot<MirrorType>::Read(GcRootSource* gc_root_source) const {
return down_cast<MirrorType*>(
- ReadBarrier::BarrierForRoot<mirror::Object, kReadBarrierOption>(&root_));
+ ReadBarrier::BarrierForRoot<mirror::Object, kReadBarrierOption>(&root_, gc_root_source));
}
template<class MirrorType>
inline GcRoot<MirrorType>::GcRoot(MirrorType* ref)