summaryrefslogtreecommitdiffstats
path: root/runtime/mirror
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-05-29 14:31:33 -0700
committerMathieu Chartier <mathieuc@google.com>2014-05-30 13:58:22 -0700
commitb74cd29802f364b4cec88f4913fa38ade26b8fab (patch)
tree73ccdce1c5a6e57d5763cae1f889e53dca2b5e24 /runtime/mirror
parent11138c73e0c5f8a90d1eeed3c48a2b63b310671c (diff)
downloadart-b74cd29802f364b4cec88f4913fa38ade26b8fab.zip
art-b74cd29802f364b4cec88f4913fa38ade26b8fab.tar.gz
art-b74cd29802f364b4cec88f4913fa38ade26b8fab.tar.bz2
Compaction cleanup for FindArrayClass.
We now pass double pointer in to signify that it can cause thread suspension, this double pointer gets wrapped by a handle if don't find the array class in the cache. Change-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb
Diffstat (limited to 'runtime/mirror')
-rw-r--r--runtime/mirror/array.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/runtime/mirror/array.cc b/runtime/mirror/array.cc
index 1076643..f7b5737 100644
--- a/runtime/mirror/array.cc
+++ b/runtime/mirror/array.cc
@@ -93,15 +93,17 @@ Array* Array::CreateMultiArray(Thread* self, Handle<Class> element_class,
// Find/generate the array class.
ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
+ mirror::Class* element_class_ptr = element_class.Get();
StackHandleScope<1> hs(self);
Handle<mirror::Class> array_class(
- hs.NewHandle(class_linker->FindArrayClass(self, element_class.Get())));
+ hs.NewHandle(class_linker->FindArrayClass(self, &element_class_ptr)));
if (UNLIKELY(array_class.Get() == nullptr)) {
CHECK(self->IsExceptionPending());
return nullptr;
}
for (int32_t i = 1; i < dimensions->GetLength(); ++i) {
- array_class.Assign(class_linker->FindArrayClass(self, array_class.Get()));
+ mirror::Class* array_class_ptr = array_class.Get();
+ array_class.Assign(class_linker->FindArrayClass(self, &array_class_ptr));
if (UNLIKELY(array_class.Get() == nullptr)) {
CHECK(self->IsExceptionPending());
return nullptr;