Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlass.hpp @ 17889:386dd1c71858
8033150: invokestatic: IncompatibleClassChangeError trying to invoke static method from a parent in presence of conflicting defaults.
Summary: A static method should be preferred during method resolution over an overpass, search the current class as well as its superclasses.
Reviewed-by: acorn, coleenp, kamg
author | lfoltan |
---|---|
date | Mon, 14 Apr 2014 14:27:45 -0400 |
parents | 9428a0b94204 |
children | 52b4284cb496 2c6ef90f030a 9906d432d6db |
comparison
equal
deleted
inserted
replaced
17887:cd3c534f8f4a | 17889:386dd1c71858 |
---|---|
516 Method* find_method(Symbol* name, Symbol* signature) const; | 516 Method* find_method(Symbol* name, Symbol* signature) const; |
517 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); | 517 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); |
518 static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature); | 518 static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature); |
519 | 519 |
520 // find a local method index in default_methods (returns -1 if not found) | 520 // find a local method index in default_methods (returns -1 if not found) |
521 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature); | 521 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature, bool skipping_overpass); |
522 | 522 |
523 // lookup operation (returns NULL if not found) | 523 // lookup operation (returns NULL if not found) |
524 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; | 524 Method* uncached_lookup_method(Symbol* name, Symbol* signature, MethodLookupMode mode) const; |
525 | 525 |
526 // lookup a method in all the interfaces that this class implements | 526 // lookup a method in all the interfaces that this class implements |
527 // (returns NULL if not found) | 527 // (returns NULL if not found) |
528 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const; | 528 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, MethodLookupMode mode) const; |
529 | 529 |
530 // lookup a method in local defaults then in all interfaces | 530 // lookup a method in local defaults then in all interfaces |
531 // (returns NULL if not found) | 531 // (returns NULL if not found) |
532 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; | 532 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; |
533 | 533 |
1045 // Returns the array class for the n'th dimension | 1045 // Returns the array class for the n'th dimension |
1046 Klass* array_klass_impl(bool or_null, int n, TRAPS); | 1046 Klass* array_klass_impl(bool or_null, int n, TRAPS); |
1047 | 1047 |
1048 // Returns the array class with this class as element type | 1048 // Returns the array class with this class as element type |
1049 Klass* array_klass_impl(bool or_null, TRAPS); | 1049 Klass* array_klass_impl(bool or_null, TRAPS); |
1050 | |
1051 // find a local method (returns NULL if not found) | |
1052 Method* find_method_impl(Symbol* name, Symbol* signature, bool skipping_overpass) const; | |
1053 static Method* find_method_impl(Array<Method*>* methods, Symbol* name, Symbol* signature, bool skipping_overpass); | |
1050 | 1054 |
1051 // Free CHeap allocated fields. | 1055 // Free CHeap allocated fields. |
1052 void release_C_heap_structures(); | 1056 void release_C_heap_structures(); |
1053 public: | 1057 public: |
1054 // CDS support - remove and restore oops from metadata. Oops are not shared. | 1058 // CDS support - remove and restore oops from metadata. Oops are not shared. |