diff options
| author | 2011-10-27 15:19:26 -0700 | |
|---|---|---|
| committer | 2011-10-28 23:14:15 -0700 | |
| commit | 28ad40dc3ec2f09b0ffd4f6d6787bf1b532ccd5d (patch) | |
| tree | f5628e47948a0d255112a3a7a01b67db41c8d424 /src/class_linker.cc | |
| parent | e0918556e7551de638870dcad3f2023f94f85a50 (diff) | |
Support for unresolved types in new-instance during verification.
Also, ensure that classes that don't load are erroneous, warn early
about exceptions left on a thread by the verifier/compiler, factor out
slowpath checks for the compiler and fix the slowpath selector for
const-class.
This change causes more dex cache misses at runtime (more slowpath
execution). It also requires a "mm clean-oat".
Change-Id: I014b49ebdd7d8f7dd2e39cc0958fc0b708d58c4c
Diffstat (limited to 'src/class_linker.cc')
| -rw-r--r-- | src/class_linker.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/class_linker.cc b/src/class_linker.cc index f49f546aa3..8f4029a354 100644 --- a/src/class_linker.cc +++ b/src/class_linker.cc @@ -1039,6 +1039,7 @@ Class* ClassLinker::DefineClass(const std::string& descriptor, if (!LoadSuperAndInterfaces(klass, dex_file)) { // Loading failed. CHECK(self->IsExceptionPending()); + klass->SetStatus(Class::kStatusError); lock.NotifyAll(); return NULL; } @@ -1048,6 +1049,7 @@ Class* ClassLinker::DefineClass(const std::string& descriptor, if (!LinkClass(klass)) { // Linking failed. CHECK(self->IsExceptionPending()); + klass->SetStatus(Class::kStatusError); lock.NotifyAll(); return NULL; } |