diff options
Diffstat (limited to 'runtime/art_method.h')
| -rw-r--r-- | runtime/art_method.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/runtime/art_method.h b/runtime/art_method.h index 17f343d442..383630363e 100644 --- a/runtime/art_method.h +++ b/runtime/art_method.h @@ -201,6 +201,10 @@ class ArtMethod FINAL { return (GetAccessFlags() & kAccCompileDontBother) == 0; } + void SetDontCompile() { + AddAccessFlags(kAccCompileDontBother); + } + // A default conflict method is a special sentinel method that stands for a conflict between // multiple default methods. It cannot be invoked, throwing an IncompatibleClassChangeError if one // attempts to do so. @@ -226,7 +230,7 @@ class ArtMethod FINAL { void SetIsObsolete() { // TODO We should really support redefining intrinsic if possible. DCHECK(!IsIntrinsic()); - SetAccessFlags(GetAccessFlags() | kAccObsoleteMethod); + AddAccessFlags(kAccObsoleteMethod); } template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier> @@ -251,7 +255,6 @@ class ArtMethod FINAL { return (GetAccessFlags() & kAccVarargs) != 0; } - template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier> bool IsProxyMethod() REQUIRES_SHARED(Locks::mutator_lock_); bool SkipAccessChecks() { @@ -456,7 +459,7 @@ class ArtMethod FINAL { } } - ArtMethod* GetSingleImplementation() + ArtMethod* GetSingleImplementation(PointerSize pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); ALWAYS_INLINE void SetSingleImplementation(ArtMethod* method, PointerSize pointer_size) { @@ -563,12 +566,15 @@ class ArtMethod FINAL { mirror::ClassLoader* GetClassLoader() REQUIRES_SHARED(Locks::mutator_lock_); + template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier> mirror::DexCache* GetDexCache() REQUIRES_SHARED(Locks::mutator_lock_); mirror::DexCache* GetObsoleteDexCache() REQUIRES_SHARED(Locks::mutator_lock_); ALWAYS_INLINE ArtMethod* GetInterfaceMethodIfProxy(PointerSize pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); + ArtMethod* GetNonObsoleteMethod() REQUIRES_SHARED(Locks::mutator_lock_); + // May cause thread suspension due to class resolution. bool EqualParameters(Handle<mirror::ObjectArray<mirror::Class>> params) REQUIRES_SHARED(Locks::mutator_lock_); @@ -684,7 +690,8 @@ class ArtMethod FINAL { ArtMethod** dex_cache_resolved_methods_; // Pointer to JNI function registered to this method, or a function to resolve the JNI function, - // or the profiling data for non-native methods, or an ImtConflictTable. + // or the profiling data for non-native methods, or an ImtConflictTable, or the + // single-implementation of an abstract method. void* data_; // Method dispatch from quick compiled code invokes this pointer which may cause bridging into |