From 4a96b60e45fba4a9d4a2e9c8fc849660eacef684 Mon Sep 17 00:00:00 2001 From: Brian Carlstrom <bdc@google.com> Date: Tue, 26 Jul 2011 16:40:23 -0700 Subject: ClassLinker can now FindClass all libcore classes Summary: - added ClassLinkerTest/LibCore test of finding all libcore classes - fixed bug in LinkInterfaceMethods appending mirant methods to vtable_ - fixed bug in LinkVirtualMethods allocating subclass vtable_ - fixed mmap bug in MarkStack::Init - bumped default (and max) heap sizes to handle ClassLinkerTest/LibCore - made ObjectArray a templated class - heap allocate Class::vtable_ - "mm test-art" and "mm test-art-target" added - new is_host_ for use by tests Details: Added support for "mm test-art" and "mm test-art-target" in addition to test-art-host Android.mk Made ObjectArray a template class for clearer declarations and to remove need the need for down_cast. src/object.h src/object_test.cc src/class_linker.cc src/class_linker.h src/dex_cache.cc src/dex_cache.h src/dex_cache_test.cc src/mark_sweep.cc Made Class::vtable_ a heap allocated ObjectArray<Method> src/class_linker.cc Fix bug in ClassLinker::LinkInterfaceMethods where we were not extending the vtable_ before appending miranda methods. src/class_linker.cc Changed all uses of DexFile* in ClassLinker to be const src/class_linker.cc src/class_linker.h Fix bug in ClassLinker::LinkVirtualMethods where we were using NumVirtualMethods vs vtable->GetLength when determining new max vtable_ length. src/class_linker.cc New ClassLinkerTest/LibCore that enumerates the libcore dex file and tries to FindClass every descriptor found. src/class_linker_test.cc Added if_host_ check for host only tests. In the future will use for picking proper location of files, etc. on host vs target. src/common_test.h Fixed test to use ClassLinker::AllocDexCache src/dex_cache_test.cc Fixed fooIds comments to foo_ids_ src/dex_file.h Bumped default heap size (and max as well) to make ClassLinkerTest/LibCore run src/heap.h Fixed bug where we were not using MAP_ANONYMOUS for MarkStack allocation found running ClassLinkerTest/LibCore. src/mark_stack.cc Change-Id: I204e2ec7205210e2b60f5b81d126ab6e1da5a71c --- src/mark_sweep.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mark_sweep.cc') diff --git a/src/mark_sweep.cc b/src/mark_sweep.cc index 196c83c..2cfb0c6 100644 --- a/src/mark_sweep.cc +++ b/src/mark_sweep.cc @@ -206,7 +206,7 @@ void MarkSweep::ScanArray(const Object *obj) { DCHECK(obj->GetClass() != NULL); MarkObject(obj->GetClass()); if (obj->IsObjectArray()) { - const ObjectArray* array = obj->AsObjectArray(); + const ObjectArray<Object>* array = obj->AsObjectArray(); for (size_t i = 0; i < array->GetLength(); ++i) { const Object* element = array->Get(i); MarkObject(element); -- cgit v1.1