summaryrefslogtreecommitdiff
path: root/runtime/mirror/executable.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/mirror/executable.h')
-rw-r--r--runtime/mirror/executable.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/runtime/mirror/executable.h b/runtime/mirror/executable.h
index a99c3ec461..8eca206d5a 100644
--- a/runtime/mirror/executable.h
+++ b/runtime/mirror/executable.h
@@ -41,6 +41,10 @@ class MANAGED Executable : public AccessibleObject {
return reinterpret_cast64<ArtMethod*>(GetField64<kVerifyFlags>(ArtMethodOffset()));
}
+ template <typename Visitor,
+ VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags>
+ inline void VisitTarget(Visitor&& v) REQUIRES(Locks::mutator_lock_);
+
template <bool kTransactionActive = false,
bool kCheckTransaction = true,
VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags>
@@ -61,6 +65,21 @@ class MANAGED Executable : public AccessibleObject {
uint32_t access_flags_;
uint32_t dex_method_index_;
+ template<bool kTransactionActive = false>
+ void SetDeclaringClass(ObjPtr<mirror::Class> klass) REQUIRES_SHARED(Locks::mutator_lock_) {
+ SetFieldObject<kTransactionActive>(DeclaringClassOffset(), klass);
+ }
+
+ template<bool kTransactionActive = false>
+ void SetAccessFlags(uint32_t flags) REQUIRES_SHARED(Locks::mutator_lock_) {
+ SetField32<kTransactionActive>(AccessFlagsOffset(), flags);
+ }
+
+ template<bool kTransactionActive = false>
+ void SetDexMethodIndex(uint32_t idx) REQUIRES_SHARED(Locks::mutator_lock_) {
+ SetField32<kTransactionActive>(DexMethodIndexOffset(), idx);
+ }
+
static MemberOffset DeclaringClassOffset() {
return MemberOffset(OFFSETOF_MEMBER(Executable, declaring_class_));
}