Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/klass.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 | 85318d1fe8fe |
children | 52b4284cb496 54bc75c144b0 ce8f6bb717c9 |
comparison
equal
deleted
inserted
replaced
17887:cd3c534f8f4a | 17889:386dd1c71858 |
---|---|
180 Klass(); | 180 Klass(); |
181 | 181 |
182 void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw(); | 182 void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw(); |
183 | 183 |
184 public: | 184 public: |
185 enum MethodLookupMode { normal, skip_overpass, skip_defaults }; | |
186 | |
185 bool is_klass() const volatile { return true; } | 187 bool is_klass() const volatile { return true; } |
186 | 188 |
187 // super | 189 // super |
188 Klass* super() const { return _super; } | 190 Klass* super() const { return _super; } |
189 void set_super(Klass* k) { _super = k; } | 191 void set_super(Klass* k) { _super = k; } |
419 virtual bool should_be_initialized() const { return false; } | 421 virtual bool should_be_initialized() const { return false; } |
420 // initializes the klass | 422 // initializes the klass |
421 virtual void initialize(TRAPS); | 423 virtual void initialize(TRAPS); |
422 // lookup operation for MethodLookupCache | 424 // lookup operation for MethodLookupCache |
423 friend class MethodLookupCache; | 425 friend class MethodLookupCache; |
424 virtual Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; | 426 virtual Method* uncached_lookup_method(Symbol* name, Symbol* signature, MethodLookupMode mode) const; |
425 public: | 427 public: |
426 Method* lookup_method(Symbol* name, Symbol* signature) const { | 428 Method* lookup_method(Symbol* name, Symbol* signature) const { |
427 return uncached_lookup_method(name, signature); | 429 return uncached_lookup_method(name, signature, normal); |
428 } | 430 } |
429 | 431 |
430 // array class with specific rank | 432 // array class with specific rank |
431 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } | 433 Klass* array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } |
432 | 434 |