ObjPtr<>-ify mirror::Object::As*(), fix stale refs in test.

Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 31113334
Change-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3
diff --git a/runtime/mirror/array-inl.h b/runtime/mirror/array-inl.h
index 3a0cbe2..19d35a8 100644
--- a/runtime/mirror/array-inl.h
+++ b/runtime/mirror/array-inl.h
@@ -22,7 +22,6 @@
 #include <android-base/logging.h>
 
 #include "base/bit_utils.h"
-#include "base/casts.h"
 #include "class.h"
 #include "obj_ptr-inl.h"
 #include "runtime.h"
@@ -253,11 +252,11 @@
 template<bool kTransactionActive, bool kUnchecked>
 inline void PointerArray::SetElementPtrSize(uint32_t idx, uint64_t element, PointerSize ptr_size) {
   if (ptr_size == PointerSize::k64) {
-    (kUnchecked ? down_cast<LongArray*>(static_cast<Object*>(this)) : AsLongArray())->
+    (kUnchecked ? ObjPtr<LongArray>::DownCast(ObjPtr<Object>(this)) : AsLongArray())->
         SetWithoutChecks<kTransactionActive>(idx, element);
   } else {
     DCHECK_LE(element, static_cast<uint64_t>(0xFFFFFFFFu));
-    (kUnchecked ? down_cast<IntArray*>(static_cast<Object*>(this)) : AsIntArray())
+    (kUnchecked ? ObjPtr<IntArray>::DownCast(ObjPtr<Object>(this)) : AsIntArray())
         ->SetWithoutChecks<kTransactionActive>(idx, static_cast<uint32_t>(element));
   }
 }
@@ -291,16 +290,16 @@
   DCHECK(!Runtime::Current()->IsActiveTransaction());
   DCHECK(!src.IsNull());
   if (ptr_size == PointerSize::k64) {
-    LongArray* l_this = (kUnchecked ? down_cast<LongArray*>(static_cast<Object*>(this))
-                                    : AsLongArray());
-    LongArray* l_src = (kUnchecked ? down_cast<LongArray*>(static_cast<Object*>(src.Ptr()))
-                                   : src->AsLongArray());
+    ObjPtr<LongArray> l_this = (kUnchecked ? ObjPtr<LongArray>::DownCast(ObjPtr<Object>(this))
+                                           : AsLongArray());
+    ObjPtr<LongArray> l_src = (kUnchecked ? ObjPtr<LongArray>::DownCast(ObjPtr<Object>(src))
+                                          : src->AsLongArray());
     l_this->Memcpy(dst_pos, l_src, src_pos, count);
   } else {
-    IntArray* i_this = (kUnchecked ? down_cast<IntArray*>(static_cast<Object*>(this))
-                                   : AsIntArray());
-    IntArray* i_src = (kUnchecked ? down_cast<IntArray*>(static_cast<Object*>(src.Ptr()))
-                                  : src->AsIntArray());
+    ObjPtr<IntArray> i_this = (kUnchecked ? ObjPtr<IntArray>::DownCast(ObjPtr<Object>(this))
+                                          : AsIntArray());
+    ObjPtr<IntArray> i_src = (kUnchecked ? ObjPtr<IntArray>::DownCast(ObjPtr<Object>(src.Ptr()))
+                                         : src->AsIntArray());
     i_this->Memcpy(dst_pos, i_src, src_pos, count);
   }
 }