Various improvements to stack walking speed

Make BitMemoryRegion constructor inlined, remove read barrier
for IsProxyMethod.

Around 15% speedup for pmd benchmark, maybe more for CC.

Test: test-art-host

Change-Id: Ib4392649e041406e538cc944c26c69f68d388fb4
diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h
index 7ec3900..950f1aa 100644
--- a/runtime/art_method-inl.h
+++ b/runtime/art_method-inl.h
@@ -374,9 +374,10 @@
   }
 }
 
-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 e4db2c7..d4a65c8 100644
--- a/runtime/art_method.h
+++ b/runtime/art_method.h
@@ -251,7 +251,6 @@
     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 90a1981..c3b5be4 100644
--- a/runtime/bit_memory_region.h
+++ b/runtime/bit_memory_region.h
@@ -26,7 +26,7 @@
 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 34b737c..3438810 100644
--- a/runtime/class_linker-inl.h
+++ b/runtime/class_linker-inl.h
@@ -233,7 +233,7 @@
 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_);