summaryrefslogtreecommitdiff
path: root/runtime/class_linker.cc
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2016-03-16 23:02:59 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2016-03-16 23:02:59 +0000
commita67a089761ca770aa50122c47c5451a52e7eb807 (patch)
tree158a3eb5f1fa75097316cffd6f7ff396791c6e7f /runtime/class_linker.cc
parent08aa5f3086a1c0f6f4839a73535ecf3a55cfae8c (diff)
parentdaf58c80d42f024aae0cb94ebd2c0bd61ebbf240 (diff)
Merge "Revert "Fix issue with proxy invocation on default methods""
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r--runtime/class_linker.cc10
1 files changed, 3 insertions, 7 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 268b9822ac..3c69323b20 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -4265,14 +4265,10 @@ void ClassLinker::CreateProxyMethod(Handle<mirror::Class> klass, ArtMethod* prot
DCHECK(out != nullptr);
out->CopyFrom(prototype, image_pointer_size_);
- // Set class to be the concrete proxy class.
+ // Set class to be the concrete proxy class and clear the abstract flag, modify exceptions to
+ // the intersection of throw exceptions as defined in Proxy
out->SetDeclaringClass(klass.Get());
- // Clear the abstract, default and conflict flags to ensure that defaults aren't picked in
- // preference to the invocation handler.
- const uint32_t kRemoveFlags = kAccAbstract | kAccDefault | kAccDefaultConflict;
- // Make the method final.
- const uint32_t kAddFlags = kAccFinal;
- out->SetAccessFlags((out->GetAccessFlags() & ~kRemoveFlags) | kAddFlags);
+ out->SetAccessFlags((out->GetAccessFlags() & ~kAccAbstract) | kAccFinal);
// At runtime the method looks like a reference and argument saving method, clone the code
// related parameters from this method.