ART: Add ClassLoadCallback
Add callback for class-load and class-prepare events. Move Dbg
over. Add tests.
Bug: 31684920
Test: m test-art-host-gtest-runtime_callbacks_test
Test: art/tools/run-jdwp-tests.sh --mode=host
Change-Id: I871f6b3c54448fd6ece8d9a7571b2042be50d525
diff --git a/runtime/runtime_callbacks.h b/runtime/runtime_callbacks.h
index 1060d85..5bdb44a 100644
--- a/runtime/runtime_callbacks.h
+++ b/runtime/runtime_callbacks.h
@@ -21,9 +21,15 @@
#include "base/macros.h"
#include "base/mutex.h"
+#include "handle.h"
namespace art {
+namespace mirror {
+class Class;
+} // namespace mirror
+
+class ClassLoadCallback;
class Thread;
class ThreadLifecycleCallback;
@@ -44,19 +50,24 @@
class RuntimeCallbacks {
public:
- void AddThreadLifecycleCallback(ThreadLifecycleCallback* cb)
- REQUIRES(Locks::mutator_lock_);
- void RemoveThreadLifecycleCallback(ThreadLifecycleCallback* cb)
- REQUIRES(Locks::mutator_lock_);
+ void AddThreadLifecycleCallback(ThreadLifecycleCallback* cb) REQUIRES(Locks::mutator_lock_);
+ void RemoveThreadLifecycleCallback(ThreadLifecycleCallback* cb) REQUIRES(Locks::mutator_lock_);
- void ThreadStart(Thread* self)
- REQUIRES_SHARED(Locks::mutator_lock_);
- void ThreadDeath(Thread* self)
+ void ThreadStart(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_);
+ void ThreadDeath(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_);
+
+ void AddClassLoadCallback(ClassLoadCallback* cb) REQUIRES(Locks::mutator_lock_);
+ void RemoveClassLoadCallback(ClassLoadCallback* cb) REQUIRES(Locks::mutator_lock_);
+
+ void ClassLoad(Handle<mirror::Class> klass) REQUIRES_SHARED(Locks::mutator_lock_);
+ void ClassPrepare(Handle<mirror::Class> temp_klass, Handle<mirror::Class> klass)
REQUIRES_SHARED(Locks::mutator_lock_);
private:
std::vector<ThreadLifecycleCallback*> thread_callbacks_
GUARDED_BY(Locks::mutator_lock_);
+ std::vector<ClassLoadCallback*> class_callbacks_
+ GUARDED_BY(Locks::mutator_lock_);
};
} // namespace art