summaryrefslogtreecommitdiff
path: root/runtime/reflective_value_visitor.cc
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2019-09-24 14:36:50 -0700
committer Treehugger Robot <treehugger-gerrit@google.com> 2019-10-03 20:44:33 +0000
commitc84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c (patch)
tree1380b353e0d3b5015c9d1ef29fd4c2534828f97b /runtime/reflective_value_visitor.cc
parent8679fd5e938d7bed67d3ab67c55b7f4fb2cdd92a (diff)
Walk internal ArtField/ArtMethod pointers
During structural class redefinition we sometimes need to update some of the ArtMethod/ArtField pointers held by runtime frames. This adds support for doing this through a StackReflectiveHandleScope similar to the StackHandleScope used for holding object references. This also updates various places where reflective-handles to ArtMethods and ArtFields are needed, for example the JniIdManager, field Read/Write operations and events, field resolution, and the old debugger. Test: ./test.py --host Bug: 134162467 Change-Id: I4ea73e85956a07735c6d7b125c5828a4233670bc
Diffstat (limited to 'runtime/reflective_value_visitor.cc')
-rw-r--r--runtime/reflective_value_visitor.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/reflective_value_visitor.cc b/runtime/reflective_value_visitor.cc
index 69fd51ff6e..5a288d38be 100644
--- a/runtime/reflective_value_visitor.cc
+++ b/runtime/reflective_value_visitor.cc
@@ -42,4 +42,13 @@ void JniIdReflectiveSourceInfo<jmethodID>::Describe(std::ostream& os) const {
os << " jmethodID=" << reinterpret_cast<uintptr_t>(id_);
}
+void ReflectiveHandleScopeSourceInfo::Describe(std::ostream& os) const {
+ ReflectionSourceInfo::Describe(os);
+ os << " source= (" << source_ << ") ";
+ if (source_ == nullptr) {
+ os << "nullptr";
+ } else {
+ os << *source_;
+ }
+}
} // namespace art