Reuse SIRT for C++ references
Change-Id: I8310e55da42f55f7ec60f6b17face436c77a979f
diff --git a/src/java_lang_reflect_Array.cc b/src/java_lang_reflect_Array.cc
index f1456b1..d157282 100644
--- a/src/java_lang_reflect_Array.cc
+++ b/src/java_lang_reflect_Array.cc
@@ -29,13 +29,13 @@
// Objects or primitive types.
Array* CreateMultiArray(Class* array_class, int current_dimension, IntArray* dimensions) {
int32_t array_length = dimensions->Get(current_dimension++);
- Array* new_array = Array::Alloc(array_class, array_length);
- if (new_array == NULL) {
+ SirtRef<Array> new_array(Array::Alloc(array_class, array_length));
+ if (new_array.get() == NULL) {
CHECK(Thread::Current()->IsExceptionPending());
return NULL;
}
if (current_dimension == dimensions->GetLength()) {
- return new_array;
+ return new_array.get();
}
if (!array_class->GetComponentType()->IsArrayClass()) {
@@ -53,16 +53,16 @@
}
DCHECK(sub_array_class->IsArrayClass());
// Create a new sub-array in every element of the array.
- ObjectArray<Array>* object_array = new_array->AsObjectArray<Array>();
+ SirtRef<ObjectArray<Array> > object_array(new_array->AsObjectArray<Array>());
for (int32_t i = 0; i < array_length; i++) {
- Array* sub_array = CreateMultiArray(sub_array_class, current_dimension, dimensions);
- if (sub_array == NULL) {
+ SirtRef<Array> sub_array(CreateMultiArray(sub_array_class, current_dimension, dimensions));
+ if (sub_array.get() == NULL) {
CHECK(Thread::Current()->IsExceptionPending());
return NULL;
}
- object_array->Set(i, sub_array);
+ object_array->Set(i, sub_array.get());
}
- return new_array;
+ return new_array.get();
}
// Create a multi-dimensional array of Objects or primitive types.