Reduce meta-data object sizes, introduce meta-data helper classes.
Change-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3
diff --git a/src/java_lang_reflect_Array.cc b/src/java_lang_reflect_Array.cc
index 08960b1..50bfb83 100644
--- a/src/java_lang_reflect_Array.cc
+++ b/src/java_lang_reflect_Array.cc
@@ -17,6 +17,7 @@
#include "jni_internal.h"
#include "class_linker.h"
#include "object.h"
+#include "object_utils.h"
#include "JniConstants.h" // Last to avoid problems with LOG redefinition.
@@ -43,7 +44,7 @@
// old code assumed this but if you recurse from "[Foo" to "Foo" to "oo",
// you shouldn't assume there isn't a class "oo".
}
- std::string sub_array_descriptor(array_class->GetDescriptor()->ToModifiedUtf8(), 1);
+ std::string sub_array_descriptor(ClassHelper(array_class).GetDescriptor(), 1);
ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
Class* sub_array_class = class_linker->FindClass(sub_array_descriptor,
array_class->GetClassLoader());
@@ -77,9 +78,9 @@
Class* element_class = Decode<Class*>(env, javaElementClass);
DCHECK(element_class->IsClass());
DCHECK(javaDimArray != NULL);
- Object* dimensions_obj = Decode<Class*>(env, javaDimArray);
+ Object* dimensions_obj = Decode<Object*>(env, javaDimArray);
DCHECK(dimensions_obj->IsArrayInstance());
- DCHECK(dimensions_obj->GetClass()->GetDescriptor()->Equals("[I"));
+ DCHECK_STREQ(ClassHelper(dimensions_obj->GetClass()).GetDescriptor().c_str(), "[I");
IntArray* dimensions_array = down_cast<IntArray*>(dimensions_obj);
// Verify dimensions.
@@ -101,7 +102,7 @@
// Generate the full name of the array class.
std::string descriptor(num_dimensions, '[');
- descriptor += element_class->GetDescriptor()->ToModifiedUtf8();
+ descriptor += ClassHelper(element_class).GetDescriptor();
// Find/generate the array class.
ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
@@ -130,7 +131,7 @@
}
std::string descriptor;
descriptor += '[';
- descriptor += element_class->GetDescriptor()->ToModifiedUtf8();
+ descriptor += ClassHelper(element_class).GetDescriptor();
ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
Class* array_class = class_linker->FindClass(descriptor, element_class->GetClassLoader());