< 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 >