diff options
author | 2015-09-21 11:36:30 -0700 | |
---|---|---|
committer | 2016-01-12 15:40:31 -0800 | |
commit | 705ad49f353d3f90d8b63625aca2c2035bacdbef (patch) | |
tree | ac70af53158a80bc35c057aefae11428281df9ac /runtime/art_method.h | |
parent | fae1db92d8433d0f75258c190bcf2c940731f036 (diff) |
Support directly invoking interface default methods
With the Java 8 Language one is allowed to directly call default
interface methods of interfaces one (directly) implements through the
use of the super keyword. We support this behavior through the
invoke-super opcode with the target being an interface.
We add 3 tests for this behavior.
Currently only supports slow-path interpreter.
Invoke-super is currently extremely slow.
Bug: 24618811
Change-Id: I7e06e17326f7dbae0116bd7dfefca151f0092bd2
Diffstat (limited to 'runtime/art_method.h')
-rw-r--r-- | runtime/art_method.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/art_method.h b/runtime/art_method.h index 8efad8876a..0be2fa20ac 100644 --- a/runtime/art_method.h +++ b/runtime/art_method.h @@ -267,7 +267,9 @@ class ArtMethod FINAL { bool HasSameNameAndSignature(ArtMethod* other) SHARED_REQUIRES(Locks::mutator_lock_); // Find the method that this method overrides. - ArtMethod* FindOverriddenMethod(size_t pointer_size) SHARED_REQUIRES(Locks::mutator_lock_); + ArtMethod* FindOverriddenMethod(size_t pointer_size) + REQUIRES(Roles::uninterruptible_) + SHARED_REQUIRES(Locks::mutator_lock_); // Find the method index for this method within other_dexfile. If this method isn't present then // return DexFile::kDexNoIndex. The name_and_signature_idx MUST refer to a MethodId with the same |