< prev index next >
src/hotspot/share/oops/klass.hpp
Print this page
*** 130,140 ****
Symbol* _name;
// Cache of last observed secondary supertype
Klass* _secondary_super_cache;
// Array of all secondary supertypes
! Array<Klass*>* _secondary_supers;
// Ordered list of all primary supertypes
Klass* _primary_supers[_primary_super_limit];
// java/lang/Class instance mirroring this class
OopHandle _java_mirror;
// Superclass
--- 130,140 ----
Symbol* _name;
// Cache of last observed secondary supertype
Klass* _secondary_super_cache;
// Array of all secondary supertypes
! const Array<Klass*>* _secondary_supers;
// Ordered list of all primary supertypes
Klass* _primary_supers[_primary_super_limit];
// java/lang/Class instance mirroring this class
OopHandle _java_mirror;
// Superclass
*** 200,233 ****
enum StaticLookupMode { find_static, skip_static };
enum PrivateLookupMode { find_private, skip_private };
bool is_klass() const volatile { return true; }
! // super
Klass* super() const { return _super; }
void set_super(Klass* k) { _super = k; }
// initializes _super link, _primary_supers & _secondary_supers arrays
! void initialize_supers(Klass* k, Array<Klass*>* transitive_interfaces, TRAPS);
! void initialize_supers_impl1(Klass* k);
! void initialize_supers_impl2(Klass* k);
// klass-specific helper for initializing _secondary_supers
virtual GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
! Array<Klass*>* transitive_interfaces);
// java_super is the Java-level super type as specified by Class.getSuperClass.
! virtual Klass* java_super() const { return NULL; }
juint super_check_offset() const { return _super_check_offset; }
void set_super_check_offset(juint o) { _super_check_offset = o; }
Klass* secondary_super_cache() const { return _secondary_super_cache; }
void set_secondary_super_cache(Klass* k) { _secondary_super_cache = k; }
! Array<Klass*>* secondary_supers() const { return _secondary_supers; }
! void set_secondary_supers(Array<Klass*>* k) { _secondary_supers = k; }
// Return the element of the _super chain of the given depth.
// If there is no such element, return either NULL or this.
Klass* primary_super_of_depth(juint i) const {
assert(i < primary_super_limit(), "oob");
--- 200,233 ----
enum StaticLookupMode { find_static, skip_static };
enum PrivateLookupMode { find_private, skip_private };
bool is_klass() const volatile { return true; }
! // super() cannot be InstanceKlass* -- Java arrays are covariant, and _super is used
! // to implement that. NB: the _super of "[Ljava/lang/Integer;" is "[Ljava/lang/Number;"
! // If this is not what your code expects, you're probably looking for Klass::java_super().
Klass* super() const { return _super; }
void set_super(Klass* k) { _super = k; }
// initializes _super link, _primary_supers & _secondary_supers arrays
! void initialize_supers(Klass* k, Array<InstanceKlass*>* transitive_interfaces, TRAPS);
// klass-specific helper for initializing _secondary_supers
virtual GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
! Array<InstanceKlass*>* transitive_interfaces);
// java_super is the Java-level super type as specified by Class.getSuperClass.
! virtual InstanceKlass* java_super() const { return NULL; }
juint super_check_offset() const { return _super_check_offset; }
void set_super_check_offset(juint o) { _super_check_offset = o; }
Klass* secondary_super_cache() const { return _secondary_super_cache; }
void set_secondary_super_cache(Klass* k) { _secondary_super_cache = k; }
! const Array<Klass*>* secondary_supers() const { return _secondary_supers; }
! void set_secondary_supers(const Array<Klass*>* k) { _secondary_supers = k; }
// Return the element of the _super chain of the given depth.
// If there is no such element, return either NULL or this.
Klass* primary_super_of_depth(juint i) const {
assert(i < primary_super_limit(), "oob");
< prev index next >