equal
deleted
inserted
replaced
210 // |
210 // |
211 // Where to look to observe a supertype (it is &_secondary_super_cache for |
211 // Where to look to observe a supertype (it is &_secondary_super_cache for |
212 // secondary supers, else is &_primary_supers[depth()]. |
212 // secondary supers, else is &_primary_supers[depth()]. |
213 juint _super_check_offset; |
213 juint _super_check_offset; |
214 |
214 |
|
215 // Class name. Instance classes: java/lang/String, etc. Array classes: [I, |
|
216 // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. |
|
217 Symbol* _name; |
|
218 |
215 public: |
219 public: |
216 oop* oop_block_beg() const { return adr_secondary_super_cache(); } |
220 oop* oop_block_beg() const { return adr_secondary_super_cache(); } |
217 oop* oop_block_end() const { return adr_next_sibling() + 1; } |
221 oop* oop_block_end() const { return adr_next_sibling() + 1; } |
218 |
222 |
219 protected: |
223 protected: |
233 klassOop _primary_supers[_primary_super_limit]; |
237 klassOop _primary_supers[_primary_super_limit]; |
234 // java/lang/Class instance mirroring this class |
238 // java/lang/Class instance mirroring this class |
235 oop _java_mirror; |
239 oop _java_mirror; |
236 // Superclass |
240 // Superclass |
237 klassOop _super; |
241 klassOop _super; |
238 // Class name. Instance classes: java/lang/String, etc. Array classes: [I, |
|
239 // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. |
|
240 symbolOop _name; |
|
241 // First subclass (NULL if none); _subklass->next_sibling() is next one |
242 // First subclass (NULL if none); _subklass->next_sibling() is next one |
242 klassOop _subklass; |
243 klassOop _subklass; |
243 // Sibling link (or NULL); links all subklasses of a klass |
244 // Sibling link (or NULL); links all subklasses of a klass |
244 klassOop _next_sibling; |
245 klassOop _next_sibling; |
245 |
246 |
359 oop* adr_super() const { return (oop*)&_super; } |
360 oop* adr_super() const { return (oop*)&_super; } |
360 oop* adr_primary_supers() const { return (oop*)&_primary_supers[0]; } |
361 oop* adr_primary_supers() const { return (oop*)&_primary_supers[0]; } |
361 oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } |
362 oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } |
362 oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } |
363 oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } |
363 oop* adr_java_mirror() const { return (oop*)&_java_mirror; } |
364 oop* adr_java_mirror() const { return (oop*)&_java_mirror; } |
364 oop* adr_name() const { return (oop*)&_name; } |
|
365 oop* adr_subklass() const { return (oop*)&_subklass; } |
365 oop* adr_subklass() const { return (oop*)&_subklass; } |
366 oop* adr_next_sibling() const { return (oop*)&_next_sibling; } |
366 oop* adr_next_sibling() const { return (oop*)&_next_sibling; } |
367 |
367 |
368 public: |
368 public: |
369 // Allocation profiling support |
369 // Allocation profiling support |
509 virtual bool should_be_initialized() const { return false; } |
509 virtual bool should_be_initialized() const { return false; } |
510 // initializes the klass |
510 // initializes the klass |
511 virtual void initialize(TRAPS); |
511 virtual void initialize(TRAPS); |
512 // lookup operation for MethodLookupCache |
512 // lookup operation for MethodLookupCache |
513 friend class MethodLookupCache; |
513 friend class MethodLookupCache; |
514 virtual methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; |
514 virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; |
515 public: |
515 public: |
516 methodOop lookup_method(symbolOop name, symbolOop signature) const { |
516 methodOop lookup_method(Symbol* name, Symbol* signature) const { |
517 return uncached_lookup_method(name, signature); |
517 return uncached_lookup_method(name, signature); |
518 } |
518 } |
519 |
519 |
520 // array class with specific rank |
520 // array class with specific rank |
521 klassOop array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } |
521 klassOop array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } |
535 virtual klassOop array_klass_impl(bool or_null, int rank, TRAPS); |
535 virtual klassOop array_klass_impl(bool or_null, int rank, TRAPS); |
536 virtual klassOop array_klass_impl(bool or_null, TRAPS); |
536 virtual klassOop array_klass_impl(bool or_null, TRAPS); |
537 |
537 |
538 public: |
538 public: |
539 virtual void remove_unshareable_info(); |
539 virtual void remove_unshareable_info(); |
|
540 virtual void shared_symbols_iterate(SymbolClosure* closure); |
540 |
541 |
541 protected: |
542 protected: |
542 // computes the subtype relationship |
543 // computes the subtype relationship |
543 virtual bool compute_is_subtype_of(klassOop k); |
544 virtual bool compute_is_subtype_of(klassOop k); |
544 public: |
545 public: |
577 // type testing operations |
578 // type testing operations |
578 virtual bool oop_is_instance_slow() const { return false; } |
579 virtual bool oop_is_instance_slow() const { return false; } |
579 virtual bool oop_is_instanceRef() const { return false; } |
580 virtual bool oop_is_instanceRef() const { return false; } |
580 virtual bool oop_is_array() const { return false; } |
581 virtual bool oop_is_array() const { return false; } |
581 virtual bool oop_is_objArray_slow() const { return false; } |
582 virtual bool oop_is_objArray_slow() const { return false; } |
582 virtual bool oop_is_symbol() const { return false; } |
|
583 virtual bool oop_is_klass() const { return false; } |
583 virtual bool oop_is_klass() const { return false; } |
584 virtual bool oop_is_thread() const { return false; } |
584 virtual bool oop_is_thread() const { return false; } |
585 virtual bool oop_is_method() const { return false; } |
585 virtual bool oop_is_method() const { return false; } |
586 virtual bool oop_is_constMethod() const { return false; } |
586 virtual bool oop_is_constMethod() const { return false; } |
587 virtual bool oop_is_methodData() const { return false; } |
587 virtual bool oop_is_methodData() const { return false; } |
779 // Return self, except for abstract classes with exactly 1 |
779 // Return self, except for abstract classes with exactly 1 |
780 // implementor. Then return the 1 concrete implementation. |
780 // implementor. Then return the 1 concrete implementation. |
781 Klass *up_cast_abstract(); |
781 Klass *up_cast_abstract(); |
782 |
782 |
783 // klass name |
783 // klass name |
784 symbolOop name() const { return _name; } |
784 Symbol* name() const { return _name; } |
785 void set_name(symbolOop n) { oop_store_without_check((oop*) &_name, (oop) n); } |
785 void set_name(Symbol* n); |
786 |
786 |
787 friend class klassKlass; |
787 friend class klassKlass; |
788 |
788 |
789 public: |
789 public: |
790 // jvm support |
790 // jvm support |