Stack Trace Element with its unit test added too.
The unit test passes.
Change-Id: I6f6af771cae1387c60c3b511148a347fe3237345
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 3907d07..3c72dad 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -30,6 +30,7 @@
"Ljava/lang/ClassLoader;",
"Ldalvik/system/BaseDexClassLoader;",
"Ldalvik/system/PathClassLoader;",
+ "Ljava/lang/StackTraceElement;",
"Z",
"B",
"C",
@@ -47,6 +48,7 @@
"[I",
"[J",
"[S",
+ "[Ljava/lang/StackTraceElement;",
};
ClassLinker* ClassLinker::Create(const std::vector<const DexFile*>& boot_class_path, Space* space) {
@@ -237,12 +239,15 @@
SetClassRoot(kFloatArrayClass, FindSystemClass("[F"));
SetClassRoot(kLongArrayClass, FindSystemClass("[J"));
SetClassRoot(kShortArrayClass, FindSystemClass("[S"));
+ SetClassRoot(kJavaLangStackTraceElement, FindSystemClass("Ljava/lang/StackTraceElement;"));
+ SetClassRoot(kJavaLangStackTraceElementArrayClass, FindSystemClass("[Ljava/lang/StackTraceElement;"));
BooleanArray::SetArrayClass(GetClassRoot(kBooleanArrayClass));
ByteArray::SetArrayClass(GetClassRoot(kByteArrayClass));
DoubleArray::SetArrayClass(GetClassRoot(kDoubleArrayClass));
FloatArray::SetArrayClass(GetClassRoot(kFloatArrayClass));
LongArray::SetArrayClass(GetClassRoot(kLongArrayClass));
ShortArray::SetArrayClass(GetClassRoot(kShortArrayClass));
+ StackTraceElement::SetClass(GetClassRoot(kJavaLangStackTraceElement));
FinishInit();
}
@@ -342,6 +347,7 @@
LongArray::SetArrayClass(GetClassRoot(kLongArrayClass));
ShortArray::SetArrayClass(GetClassRoot(kShortArrayClass));
PathClassLoader::SetClass(GetClassRoot(kDalvikSystemPathClassLoader));
+ StackTraceElement::SetClass(GetClassRoot(kJavaLangStackTraceElement));
FinishInit();
}
@@ -415,6 +421,7 @@
LongArray::ResetArrayClass();
ShortArray::ResetArrayClass();
PathClassLoader::ResetClass();
+ StackTraceElement::ResetClass();
}
DexCache* ClassLinker::AllocDexCache(const DexFile& dex_file) {
@@ -446,6 +453,12 @@
return down_cast<Method*>(GetClassRoot(kJavaLangReflectMethod)->NewInstance());
}
+ObjectArray<StackTraceElement>* ClassLinker::AllocStackTraceElementArray(size_t length) {
+ return ObjectArray<StackTraceElement>::Alloc(
+ GetClassRoot(kJavaLangStackTraceElementArrayClass),
+ length);
+}
+
Class* ClassLinker::FindClass(const StringPiece& descriptor,
const ClassLoader* class_loader) {
// TODO: remove this contrived parent class loader check when we have a real ClassLoader.