diff options
| author | Carl Shapiro <cshapiro@google.com> | 2011-04-27 19:14:33 -0700 |
|---|---|---|
| committer | Carl Shapiro <cshapiro@google.com> | 2011-04-27 19:17:45 -0700 |
| commit | 52e2626eb3bf620c53459a90d912733de2ce0369 (patch) | |
| tree | 8dae907c264e23154835815ae534274871d1b348 /vm/oo | |
| parent | 5cdd4a3f91d3fc25c8eeca8f58e35bb6c4e908ca (diff) | |
| download | android_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.cpp | 2 | ||||
| -rw-r--r-- | vm/oo/Class.cpp | 6 |
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; |
