src/hotspot/share/oops/klass.hpp
changeset 51329 9c68699bebe5
parent 50761 cb07f4b539fc
child 51444 3e5d28e6de32
equal deleted inserted replaced
51328:fad2334b2906 51329:9c68699bebe5
   200   enum StaticLookupMode   { find_static,   skip_static };
   200   enum StaticLookupMode   { find_static,   skip_static };
   201   enum PrivateLookupMode  { find_private,  skip_private };
   201   enum PrivateLookupMode  { find_private,  skip_private };
   202 
   202 
   203   bool is_klass() const volatile { return true; }
   203   bool is_klass() const volatile { return true; }
   204 
   204 
   205   // super
   205   // super() cannot be InstanceKlass* -- Java arrays are covariant, and _super is used
       
   206   // to implement that. NB: the _super of "[Ljava/lang/Integer;" is "[Ljava/lang/Number;"
       
   207   // If this is not what your code expects, you're probably looking for Klass::java_super().
   206   Klass* super() const               { return _super; }
   208   Klass* super() const               { return _super; }
   207   void set_super(Klass* k)           { _super = k; }
   209   void set_super(Klass* k)           { _super = k; }
   208 
   210 
   209   // initializes _super link, _primary_supers & _secondary_supers arrays
   211   // initializes _super link, _primary_supers & _secondary_supers arrays
   210   void initialize_supers(Klass* k, Array<Klass*>* transitive_interfaces, TRAPS);
   212   void initialize_supers(Klass* k, Array<InstanceKlass*>* transitive_interfaces, TRAPS);
   211   void initialize_supers_impl1(Klass* k);
       
   212   void initialize_supers_impl2(Klass* k);
       
   213 
   213 
   214   // klass-specific helper for initializing _secondary_supers
   214   // klass-specific helper for initializing _secondary_supers
   215   virtual GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
   215   virtual GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
   216                                                           Array<Klass*>* transitive_interfaces);
   216                                                           Array<InstanceKlass*>* transitive_interfaces);
   217 
   217 
   218   // java_super is the Java-level super type as specified by Class.getSuperClass.
   218   // java_super is the Java-level super type as specified by Class.getSuperClass.
   219   virtual Klass* java_super() const  { return NULL; }
   219   virtual InstanceKlass* java_super() const  { return NULL; }
   220 
   220 
   221   juint    super_check_offset() const  { return _super_check_offset; }
   221   juint    super_check_offset() const  { return _super_check_offset; }
   222   void set_super_check_offset(juint o) { _super_check_offset = o; }
   222   void set_super_check_offset(juint o) { _super_check_offset = o; }
   223 
   223 
   224   Klass* secondary_super_cache() const     { return _secondary_super_cache; }
   224   Klass* secondary_super_cache() const     { return _secondary_super_cache; }
   707   virtual void verify_on(outputStream* st);
   707   virtual void verify_on(outputStream* st);
   708   void verify() { verify_on(tty); }
   708   void verify() { verify_on(tty); }
   709 
   709 
   710 #ifndef PRODUCT
   710 #ifndef PRODUCT
   711   bool verify_vtable_index(int index);
   711   bool verify_vtable_index(int index);
   712   bool verify_itable_index(int index);
       
   713 #endif
   712 #endif
   714 
   713 
   715   virtual void oop_verify_on(oop obj, outputStream* st);
   714   virtual void oop_verify_on(oop obj, outputStream* st);
   716 
   715 
   717   static bool is_null(narrowKlass obj);
   716   static bool is_null(narrowKlass obj);