Various performance improvements.

Performance had regressed due to verify object and method invocation changes.
Avoid trampolines for static calls in same class.
Various inlining changes.
Make verify object something that's only compiled-in in debug builds.

Change-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5
diff --git a/src/object_utils.h b/src/object_utils.h
index 2c9f7a2..616c65c 100644
--- a/src/object_utils.h
+++ b/src/object_utils.h
@@ -597,7 +597,7 @@
   }
 
   bool IsReturnFloatOrDouble() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
-    const char ret_shorty = GetReturnTypeDescriptor()[0];
+    const char ret_shorty = GetShorty()[0];
     return (ret_shorty == 'F') || (ret_shorty == 'D');
   }
 
@@ -679,11 +679,11 @@
   void SetMethod(const mirror::AbstractMethod* method) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
     if (method != NULL) {
       mirror::Class* klass = method->GetDeclaringClass();
-      if (klass->IsProxyClass()) {
+      if (UNLIKELY(klass->IsProxyClass())) {
         mirror::AbstractMethod* interface_method =
             method->GetDexCacheResolvedMethods()->Get(method->GetDexMethodIndex());
-        CHECK(interface_method != NULL);
-        CHECK(interface_method == GetClassLinker()->FindMethodForProxy(klass, method));
+        DCHECK(interface_method != NULL);
+        DCHECK(interface_method == GetClassLinker()->FindMethodForProxy(klass, method));
         method = interface_method;
       }
     }