Make ClassLinker set Class::super_class_ plus test and build improvements
Create placeholder ClassLinker::java_lang_Object_ for use a
super-class of java_lang_Class_ instances.
src/class_linker.cc
src/class_linker.h
Expand ClassLinker FindClass test to verify Class::GetSuperClass
src/class_linker_test.cc
Move DexFile::Load* methods to ClassLinker so they can reference
java_lang_Object_ and java_lang_Class_
src/class_linker.cc
src/class_linker.h
src/dex_file.cc
src/dex_file.h
Move corresponding Load tests from class_linker_test to dex_file_test
src/class_linker_test.cc
src/dex_file_test.cc
Tracking change to object_test to use ClassLinker::Load* methods
src/object_test.cc
Move base64 to new src/common_test.h for reuse accross tests. Add
missing example source for MyClass dex.
src/common_test.h
src/class_linker_test.cc
src/dex_file_test.cc
src/object_test.cc
Change Heap::AllocClass to take DexFile argument
src/heap.h
Remove Method::dex_file_ in favor of using Method::GetClass::GetDexFile
src/object.cc
src/object.h
Made a few more RawDexFile methods const
src/raw_dex_file.cc
src/raw_dex_file.h
Add convenience targets for build-art and test-art-host
Android.mk
Drop use of _LOCAL_ from make variants, which isn't the appropriate
here, where we aren't differentiating between LOCAL_ and PRIVATE_.
Avoid redefinition of variables based on now removed
LIBART_TARGET_ARCH and TEST_TARGET_ARCH to support phony targets in
Android.mk
build/Android.aexec.host.mk
build/Android.aexec.mk
build/Android.common.mk
build/Android.libart.host.mk
build/Android.libart.mk
build/Android.test.host.mk
build/Android.test.mk
Change-Id: I84ce2b7a2b4e37799d4d782b97c02d5e97ac081c
diff --git a/src/class_linker.h b/src/class_linker.h
index 89fd8f7..3796dc2 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -30,6 +30,10 @@
return FindClass(descriptor, NULL, NULL);
}
+ bool LoadClass(const char* descriptor, Class* klass);
+
+ bool LoadClass(const RawDexFile::ClassDef& class_def, Class* klass);
+
Class* FindPrimitiveClass(JType type);
bool InitializeClass(Class* klass);
@@ -47,6 +51,12 @@
private:
Class* CreatePrimitiveClass(JType type, const char* descriptor);
+ void LoadInterfaces(const RawDexFile::ClassDef& class_def, Class *klass);
+
+ void LoadField(Class* klass, const RawDexFile::Field& src, Field* dst);
+
+ void LoadMethod(Class* klass, const RawDexFile::Method& src, Method* dst);
+
// Inserts a class into the class table. Returns true if the class
// was inserted.
bool InsertClass(Class* klass);
@@ -104,6 +114,7 @@
Class* primitive_long_;
Class* primitive_void_;
+ Class* java_lang_Object_;
Class* java_lang_Class_;
DISALLOW_COPY_AND_ASSIGN(ClassLinker);