diff options
| author | 2011-10-27 15:19:26 -0700 | |
|---|---|---|
| committer | 2011-10-28 23:14:15 -0700 | |
| commit | 28ad40dc3ec2f09b0ffd4f6d6787bf1b532ccd5d (patch) | |
| tree | f5628e47948a0d255112a3a7a01b67db41c8d424 /src/compiler.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/compiler.cc')
| -rw-r--r-- | src/compiler.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler.cc b/src/compiler.cc index cbfd35cfcd..ba61b4d968 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -333,6 +333,9 @@ void Compiler::CompileMethod(const Method* method) { // TODO: this fails if we have an abstract method defined in more than one input dex file. CHECK(compiled_invoke_stubs_.find(method) == compiled_invoke_stubs_.end()) << PrettyMethod(method); compiled_invoke_stubs_[method] = compiled_invoke_stub; + + Thread* self = Thread::Current(); + CHECK(!self->IsExceptionPending()) << PrettyMethod(method); } const CompiledMethod* Compiler::GetCompiledMethod(const Method* method) const { |