Remove arrayClass from ClassObject. It seems to get only dozens of hits in
all of Zygote start-up.
There doesn't seem to be a measurable difference in the time printed in:
I/Zygote ( 2247): ...preloaded 1147 classes in NNNNms.
diff --git a/vm/oo/Array.c b/vm/oo/Array.c
index 19a0f96..60da683 100644
--- a/vm/oo/Array.c
+++ b/vm/oo/Array.c
@@ -104,21 +104,13 @@
assert(elemClassObj != NULL);
- if (elemClassObj->arrayClass != NULL) {
- arrayClass = elemClassObj->arrayClass;
- LOGVV("using cached '%s' class for '%s'\n",
- arrayClass->descriptor, elemClassObj->descriptor);
- } else {
- /* Simply prepend "[" to the descriptor. */
- int nameLen = strlen(elemClassObj->descriptor);
- char className[nameLen + 2];
+ /* Simply prepend "[" to the descriptor. */
+ int nameLen = strlen(elemClassObj->descriptor);
+ char className[nameLen + 2];
- className[0] = '[';
- memcpy(className+1, elemClassObj->descriptor, nameLen+1);
- arrayClass = dvmFindArrayClass(className, elemClassObj->classLoader);
- if (arrayClass != NULL)
- elemClassObj->arrayClass = arrayClass;
- }
+ className[0] = '[';
+ memcpy(className+1, elemClassObj->descriptor, nameLen+1);
+ arrayClass = dvmFindArrayClass(className, elemClassObj->classLoader);
return arrayClass;
}
@@ -708,4 +700,3 @@
dvmMarkObject((Object *)gDvm.primitiveClass[i]); // may be NULL
}
}
-