diff options
author | Sebastien Hertz <shertz@google.com> | 2014-06-24 14:35:40 +0200 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2014-07-10 17:03:15 +0200 |
commit | 4e99b3d8955131f3fc71aa113f0fa71f0092cb6f (patch) | |
tree | bcaf4e5119a74c836d8598e064a20cdead757efb /runtime/common_runtime_test.h | |
parent | 5fa647d5f663033e4ed3d398aece1f8211d7f460 (diff) | |
download | art-4e99b3d8955131f3fc71aa113f0fa71f0092cb6f.zip art-4e99b3d8955131f3fc71aa113f0fa71f0092cb6f.tar.gz art-4e99b3d8955131f3fc71aa113f0fa71f0092cb6f.tar.bz2 |
Add missing class initialization during compilation and tests
Adds missing class initialization during compilation and tests, especially
java.lang.Class. Otherwise, we'd be able to execute code while the referring
class is not initialized or initializing.
Also adds mirror::Class::AssertInitializedOrInitializingInThread method to
check class initialization when entering the interpreter: the called method's
declaring class must either be initialized or be initializing by the current
thread (other threads must be waiting for the class initialization to complete
holding its lock). Note we only do this check in debug build.
Bump oat version to force compilation.
Bug: 15899971
Change-Id: I9a4edd3739a3ca4cf1c4929dcbb44cdf7a1ca1fe
Diffstat (limited to 'runtime/common_runtime_test.h')
-rw-r--r-- | runtime/common_runtime_test.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/runtime/common_runtime_test.h b/runtime/common_runtime_test.h index 289dc1d..ac6d44b 100644 --- a/runtime/common_runtime_test.h +++ b/runtime/common_runtime_test.h @@ -206,6 +206,7 @@ class CommonRuntimeTest : public testing::Test { runtime_.reset(Runtime::Current()); class_linker_ = runtime_->GetClassLinker(); class_linker_->FixupDexCaches(runtime_->GetResolutionMethod()); + class_linker_->RunRootClinits(); // Runtime::Create acquired the mutator_lock_ that is normally given away when we // Runtime::Start, give it away now and then switch to a more managable ScopedObjectAccess. |