diff options
Diffstat (limited to 'runtime/runtime_callbacks.cc')
-rw-r--r-- | runtime/runtime_callbacks.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/runtime/runtime_callbacks.cc b/runtime/runtime_callbacks.cc index 40976c23ae..ac73364ff0 100644 --- a/runtime/runtime_callbacks.cc +++ b/runtime/runtime_callbacks.cc @@ -319,4 +319,20 @@ void RuntimeCallbacks::RegisterNativeMethod(ArtMethod* method, } } +void RuntimeCallbacks::AddReflectiveValueVisitCallback(ReflectiveValueVisitCallback *cb) { + WriterMutexLock mu(Thread::Current(), *callback_lock_); + reflective_value_visit_callbacks_.push_back(cb); +} + +void RuntimeCallbacks::RemoveReflectiveValueVisitCallback(ReflectiveValueVisitCallback *cb) { + WriterMutexLock mu(Thread::Current(), *callback_lock_); + Remove(cb, &reflective_value_visit_callbacks_); +} + +void RuntimeCallbacks::VisitReflectiveTargets(ReflectiveValueVisitor *visitor) { + for (ReflectiveValueVisitCallback* cb : COPY(reflective_value_visit_callbacks_)) { + cb->VisitReflectiveTargets(visitor); + } +} + } // namespace art |