summaryrefslogtreecommitdiffstats
path: root/vm/oo
diff options
context:
space:
mode:
authorCarl Shapiro <cshapiro@google.com>2011-04-27 19:14:33 -0700
committerCarl Shapiro <cshapiro@google.com>2011-04-27 19:17:45 -0700
commit52e2626eb3bf620c53459a90d912733de2ce0369 (patch)
tree8dae907c264e23154835815ae534274871d1b348 /vm/oo
parent5cdd4a3f91d3fc25c8eeca8f58e35bb6c4e908ca (diff)
downloadandroid_dalvik-52e2626eb3bf620c53459a90d912733de2ce0369.tar.gz
android_dalvik-52e2626eb3bf620c53459a90d912733de2ce0369.tar.bz2
android_dalvik-52e2626eb3bf620c53459a90d912733de2ce0369.zip
Add a non-moving option to dvmMalloc and make use of it.
At present, class objects, non-moving arrays, and interned strings have location dependencies in native code. Allocating non-moving is a no-op for the present heap, but this option will have an effect after the copying collector is integrated. Change-Id: I674f83a086ac65db303baab0599831f80f52a4a5
Diffstat (limited to 'vm/oo')
-rw-r--r--vm/oo/Array.cpp2
-rw-r--r--vm/oo/Class.cpp6
2 files changed, 4 insertions, 4 deletions
diff --git a/vm/oo/Array.cpp b/vm/oo/Array.cpp
index e186edf43..baf9d3c81 100644
--- a/vm/oo/Array.cpp
+++ b/vm/oo/Array.cpp
@@ -363,7 +363,7 @@ static ClassObject* createArrayClass(const char* descriptor, Object* loader)
* Array classes are simple enough that we don't need to do a full
* link step.
*/
- newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_DEFAULT);
+ newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_NON_MOVING);
if (newClass == NULL)
return NULL;
DVM_OBJECT_INIT(&newClass->obj, gDvm.classJavaLangClass);
diff --git a/vm/oo/Class.cpp b/vm/oo/Class.cpp
index 2311f8a00..15511c2f9 100644
--- a/vm/oo/Class.cpp
+++ b/vm/oo/Class.cpp
@@ -341,7 +341,7 @@ static bool createPrimitiveType(PrimitiveType primitiveType, ClassObject** pClas
const char* descriptor = dexGetPrimitiveTypeDescriptor(primitiveType);
assert(descriptor != NULL);
- ClassObject* newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_DEFAULT);
+ ClassObject* newClass = (ClassObject*) dvmMalloc(sizeof(*newClass), ALLOC_NON_MOVING);
if (newClass == NULL) {
return false;
}
@@ -375,7 +375,7 @@ static bool createInitialClasses() {
* because it is an instance of itself.
*/
ClassObject* clazz = (ClassObject*)
- dvmMalloc(classObjectSize(CLASS_SFIELD_SLOTS), ALLOC_DEFAULT);
+ dvmMalloc(classObjectSize(CLASS_SFIELD_SLOTS), ALLOC_NON_MOVING);
if (clazz == NULL) {
return false;
}
@@ -1766,7 +1766,7 @@ static ClassObject* loadClassFromDex0(DvmDex* pDvmDex,
newClass = gDvm.classJavaLangClass;
} else {
size_t size = classObjectSize(pHeader->staticFieldsSize);
- newClass = (ClassObject*) dvmMalloc(size, ALLOC_DEFAULT);
+ newClass = (ClassObject*) dvmMalloc(size, ALLOC_NON_MOVING);
}
if (newClass == NULL)
return NULL;