Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlass.hpp @ 12823:ac9cb1d5a202
8009130: Lambda: Fix access controls, loader constraints.
Summary: New default methods list with inherited superinterface methods
Reviewed-by: minqi, sspitsyn, coleenp
author | acorn |
---|---|
date | Mon, 07 Oct 2013 12:20:28 -0400 |
parents | 3374b92de2d9 |
children | b8860472c377 |
comparison
equal
deleted
inserted
replaced
12822:cc4f5f8d885e | 12823:ac9cb1d5a202 |
---|---|
267 | 267 |
268 NOT_PRODUCT(int _verify_count;) // to avoid redundant verifies | 268 NOT_PRODUCT(int _verify_count;) // to avoid redundant verifies |
269 | 269 |
270 // Method array. | 270 // Method array. |
271 Array<Method*>* _methods; | 271 Array<Method*>* _methods; |
272 // Default Method Array, concrete methods inherited from interfaces | |
273 Array<Method*>* _default_methods; | |
272 // Interface (Klass*s) this class declares locally to implement. | 274 // Interface (Klass*s) this class declares locally to implement. |
273 Array<Klass*>* _local_interfaces; | 275 Array<Klass*>* _local_interfaces; |
274 // Interface (Klass*s) this class implements transitively. | 276 // Interface (Klass*s) this class implements transitively. |
275 Array<Klass*>* _transitive_interfaces; | 277 Array<Klass*>* _transitive_interfaces; |
276 // Int array containing the original order of method in the class file (for JVMTI). | 278 // Int array containing the original order of method in the class file (for JVMTI). |
277 Array<int>* _method_ordering; | 279 Array<int>* _method_ordering; |
280 // Int array containing the vtable_indices for default_methods | |
281 // offset matches _default_methods offset | |
282 Array<int>* _default_vtable_indices; | |
283 | |
278 // Instance and static variable information, starts with 6-tuples of shorts | 284 // Instance and static variable information, starts with 6-tuples of shorts |
279 // [access, name index, sig index, initval index, low_offset, high_offset] | 285 // [access, name index, sig index, initval index, low_offset, high_offset] |
280 // for all fields, followed by the generic signature data at the end of | 286 // for all fields, followed by the generic signature data at the end of |
281 // the array. Only fields with generic signature attributes have the generic | 287 // the array. Only fields with generic signature attributes have the generic |
282 // signature data set in the array. The fields array looks like following: | 288 // signature data set in the array. The fields array looks like following: |
354 // method ordering | 360 // method ordering |
355 Array<int>* method_ordering() const { return _method_ordering; } | 361 Array<int>* method_ordering() const { return _method_ordering; } |
356 void set_method_ordering(Array<int>* m) { _method_ordering = m; } | 362 void set_method_ordering(Array<int>* m) { _method_ordering = m; } |
357 void copy_method_ordering(intArray* m, TRAPS); | 363 void copy_method_ordering(intArray* m, TRAPS); |
358 | 364 |
365 // default_methods | |
366 Array<Method*>* default_methods() const { return _default_methods; } | |
367 void set_default_methods(Array<Method*>* a) { _default_methods = a; } | |
368 | |
369 // default method vtable_indices | |
370 Array<int>* default_vtable_indices() const { return _default_vtable_indices; } | |
371 void set_default_vtable_indices(Array<int>* v) { _default_vtable_indices = v; } | |
372 Array<int>* create_new_default_vtable_indices(int len, TRAPS); | |
373 | |
359 // interfaces | 374 // interfaces |
360 Array<Klass*>* local_interfaces() const { return _local_interfaces; } | 375 Array<Klass*>* local_interfaces() const { return _local_interfaces; } |
361 void set_local_interfaces(Array<Klass*>* a) { | 376 void set_local_interfaces(Array<Klass*>* a) { |
362 guarantee(_local_interfaces == NULL || a == NULL, "Just checking"); | 377 guarantee(_local_interfaces == NULL || a == NULL, "Just checking"); |
363 _local_interfaces = a; } | 378 _local_interfaces = a; } |
499 | 514 |
500 // find a local method (returns NULL if not found) | 515 // find a local method (returns NULL if not found) |
501 Method* find_method(Symbol* name, Symbol* signature) const; | 516 Method* find_method(Symbol* name, Symbol* signature) const; |
502 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); | 517 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); |
503 | 518 |
519 // find a local method index in default_methods (returns -1 if not found) | |
520 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature); | |
521 | |
504 // lookup operation (returns NULL if not found) | 522 // lookup operation (returns NULL if not found) |
505 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; | 523 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; |
506 | 524 |
507 // lookup a method in all the interfaces that this class implements | 525 // lookup a method in all the interfaces that this class implements |
508 // (returns NULL if not found) | 526 // (returns NULL if not found) |
509 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; | 527 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; |
528 // lookup a method in local defaults then in all interfaces | |
529 // (returns NULL if not found) | |
530 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; | |
510 | 531 |
511 // Find method indices by name. If a method with the specified name is | 532 // Find method indices by name. If a method with the specified name is |
512 // found the index to the first method is returned, and 'end' is filled in | 533 // found the index to the first method is returned, and 'end' is filled in |
513 // with the index of first non-name-matching method. If no method is found | 534 // with the index of first non-name-matching method. If no method is found |
514 // -1 is returned. | 535 // -1 is returned. |
907 // Java vtable/itable | 928 // Java vtable/itable |
908 klassVtable* vtable() const; // return new klassVtable wrapper | 929 klassVtable* vtable() const; // return new klassVtable wrapper |
909 inline Method* method_at_vtable(int index); | 930 inline Method* method_at_vtable(int index); |
910 klassItable* itable() const; // return new klassItable wrapper | 931 klassItable* itable() const; // return new klassItable wrapper |
911 Method* method_at_itable(Klass* holder, int index, TRAPS); | 932 Method* method_at_itable(Klass* holder, int index, TRAPS); |
933 | |
934 #if INCLUDE_JVMTI | |
935 void adjust_default_methods(Method** old_methods, Method** new_methods, | |
936 int methods_length, bool* trace_name_printed); | |
937 #endif // INCLUDE_JVMTI | |
912 | 938 |
913 // Garbage collection | 939 // Garbage collection |
914 void oop_follow_contents(oop obj); | 940 void oop_follow_contents(oop obj); |
915 int oop_adjust_pointers(oop obj); | 941 int oop_adjust_pointers(oop obj); |
916 | 942 |