Port the "abstract methods are not implementations" fix to art.
Bug: https://code.google.com/p/android/issues/detail?id=42991
Change-Id: I08e46361a9d7275bc870ee1ec38c40ae22ddf08a
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 0e26791..56c37fd 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -3300,7 +3300,7 @@
mirror::AbstractMethod* vtable_method = vtable->Get(k);
vtable_mh.ChangeMethod(vtable_method);
if (interface_mh.HasSameNameAndSignature(&vtable_mh)) {
- if (!vtable_method->IsPublic()) {
+ if (!vtable_method->IsAbstract() && !vtable_method->IsPublic()) {
self->ThrowNewExceptionF("Ljava/lang/IllegalAccessError;",
"Implementation not public: %s",
PrettyMethod(vtable_method).c_str());