diff options
author | Mathieu Chartier <mathieuc@google.com> | 2015-06-17 14:14:36 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2015-06-17 14:14:36 -0700 |
commit | a3b9d4eda1ef0845f307891f349eaf752750ac16 (patch) | |
tree | 88eb594031c79a5a831155bcc529741e98568a8b /runtime/class_linker.cc | |
parent | afe9e134a773242b142b0740383f085f08ec1cba (diff) | |
download | art-a3b9d4eda1ef0845f307891f349eaf752750ac16.zip art-a3b9d4eda1ef0845f307891f349eaf752750ac16.tar.gz art-a3b9d4eda1ef0845f307891f349eaf752750ac16.tar.bz2 |
Add missing EndAssertNoThreadSuspension
Bug: 21872507
Change-Id: I20f9920e4a12511ce498c252bca955d82a4f4102
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r-- | runtime/class_linker.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 91812e7..31749bf 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -4901,6 +4901,9 @@ bool ClassLinker::LinkInterfaceMethods(Thread* self, Handle<mirror::Class> klass if (interface_name_comparator.HasSameNameAndSignature( vtable_method_for_name_comparison)) { if (!vtable_method->IsAbstract() && !vtable_method->IsPublic()) { + // Must do EndAssertNoThreadSuspension before throw since the throw can cause + // allocations. + self->EndAssertNoThreadSuspension(old_cause); ThrowIllegalAccessError(klass.Get(), "Method '%s' implementing interface method '%s' is not public", PrettyMethod(vtable_method).c_str(), PrettyMethod(interface_method).c_str()); |