Verify thread state for all allocations, fix 2 failures
Change-Id: If3611f4eda5a567cc2c573f47dbabfe40a00e205
diff --git a/src/heap.cc b/src/heap.cc
index cda2202..4daf4b5 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -333,7 +333,7 @@
// Since allocation can cause a GC which will need to SuspendAll,
// make sure all allocators are in the kRunnable state.
- DCHECK_EQ(Thread::Current()->GetState(), Thread::kRunnable);
+ CHECK_EQ(Thread::Current()->GetState(), Thread::kRunnable);
// Fail impossible allocations
if (alloc_size > space->Capacity()) {
diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc
index 826841b..6ec1051 100644
--- a/src/java_lang_Class.cc
+++ b/src/java_lang_Class.cc
@@ -282,6 +282,7 @@
}
jstring Class_getNameNative(JNIEnv* env, jobject javaThis) {
+ ScopedThreadStateChange tsc(Thread::Current(), Thread::kRunnable);
Class* c = Decode<Class*>(env, javaThis);
return AddLocalReference<jstring>(env, c->ComputeName());
}
diff --git a/src/java_lang_reflect_Method.cc b/src/java_lang_reflect_Method.cc
index 10f5779..3be13ca 100644
--- a/src/java_lang_reflect_Method.cc
+++ b/src/java_lang_reflect_Method.cc
@@ -45,6 +45,8 @@
}
CHECK_NE(throws_index, -1);
ObjectArray<Class>* declared_exceptions = proxy_class->GetThrows()->Get(throws_index);
+ // Change thread state for allocation
+ ScopedThreadStateChange tsc(Thread::Current(), Thread::kRunnable);
return AddLocalReference<jobject>(env, declared_exceptions->Clone());
}