diff options
| author | 2017-02-02 17:51:04 +0000 | |
|---|---|---|
| committer | 2017-02-02 17:51:04 +0000 | |
| commit | afdd4ce489fb06be35c50e7ed80a931f70b92870 (patch) | |
| tree | 0cc088f1cd9935155b9ee5765a4c8de1fff8eced | |
| parent | 64d324df5af6e77faf542f8a83518eb3048c92c3 (diff) | |
| parent | 90c5a9b889af84cbb840c60e461d5bdbf8dc0df6 (diff) | |
Merge "Various improvements to stack walking speed"
| -rw-r--r-- | runtime/art_method-inl.h | 5 | ||||
| -rw-r--r-- | runtime/art_method.h | 1 | ||||
| -rw-r--r-- | runtime/bit_memory_region.h | 2 | ||||
| -rw-r--r-- | runtime/class_linker-inl.h | 2 |
4 files changed, 5 insertions, 5 deletions
diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h index 7ec3900aa9..950f1aa9f4 100644 --- a/runtime/art_method-inl.h +++ b/runtime/art_method-inl.h @@ -374,9 +374,10 @@ inline mirror::DexCache* ArtMethod::GetDexCache() { } } -template<ReadBarrierOption kReadBarrierOption> inline bool ArtMethod::IsProxyMethod() { - return GetDeclaringClass<kReadBarrierOption>()->IsProxyClass(); + // Avoid read barrier since the from-space version of the class will have the correct proxy class + // flags since they are constant for the lifetime of the class. + return GetDeclaringClass<kWithoutReadBarrier>()->IsProxyClass(); } inline ArtMethod* ArtMethod::GetInterfaceMethodIfProxy(PointerSize pointer_size) { diff --git a/runtime/art_method.h b/runtime/art_method.h index e4db2c7324..d4a65c8c38 100644 --- a/runtime/art_method.h +++ b/runtime/art_method.h @@ -251,7 +251,6 @@ class ArtMethod FINAL { return (GetAccessFlags() & kAccVarargs) != 0; } - template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier> bool IsProxyMethod() REQUIRES_SHARED(Locks::mutator_lock_); bool SkipAccessChecks() { diff --git a/runtime/bit_memory_region.h b/runtime/bit_memory_region.h index 90a198193e..c3b5be458e 100644 --- a/runtime/bit_memory_region.h +++ b/runtime/bit_memory_region.h @@ -26,7 +26,7 @@ namespace art { class BitMemoryRegion FINAL : public ValueObject { public: BitMemoryRegion() = default; - BitMemoryRegion(MemoryRegion region, size_t bit_offset, size_t bit_size) { + ALWAYS_INLINE BitMemoryRegion(MemoryRegion region, size_t bit_offset, size_t bit_size) { bit_start_ = bit_offset % kBitsPerByte; const size_t start = bit_offset / kBitsPerByte; const size_t end = (bit_offset + bit_size + kBitsPerByte - 1) / kBitsPerByte; diff --git a/runtime/class_linker-inl.h b/runtime/class_linker-inl.h index 34b737c73e..3438810069 100644 --- a/runtime/class_linker-inl.h +++ b/runtime/class_linker-inl.h @@ -233,7 +233,7 @@ template<ReadBarrierOption kReadBarrierOption> ArtMethod* ClassLinker::FindMethodForProxy(ObjPtr<mirror::Class> proxy_class, ArtMethod* proxy_method) { DCHECK(proxy_class->IsProxyClass()); - DCHECK(proxy_method->IsProxyMethod<kReadBarrierOption>()); + DCHECK(proxy_method->IsProxyMethod()); { Thread* const self = Thread::Current(); ReaderMutexLock mu(self, *Locks::dex_lock_); |