diff options
| author | 2016-03-16 23:00:49 +0000 | |
|---|---|---|
| committer | 2016-03-16 23:00:49 +0000 | |
| commit | daf58c80d42f024aae0cb94ebd2c0bd61ebbf240 (patch) | |
| tree | 66f378cf59ddee476981de4828461f62bceafa9f /runtime/class_linker.cc | |
| parent | ec3b7ab8f008f36f1072d4ba03da204229b95976 (diff) | |
Revert "Fix issue with proxy invocation on default methods"
This reverts commit ec3b7ab8f008f36f1072d4ba03da204229b95976.
Change-Id: Idfb2c63c246cc5dae7670503e70ad3f62bb1e1eb
Diffstat (limited to 'runtime/class_linker.cc')
| -rw-r--r-- | runtime/class_linker.cc | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 72e40c28b0..d51a1f7ecc 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -4216,14 +4216,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. |