comparison src/share/vm/oops/klass.hpp @ 2181:d25d4ca69222

Merge.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Wed, 16 Feb 2011 13:47:20 +0100
parents 06f017f7daa7 3582bf76420e
children 0654ee04b214
comparison
equal deleted inserted replaced
2108:50b45e2d9725 2181:d25d4ca69222
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:
235 oop _java_mirror; 239 oop _java_mirror;
236 // com/sun/hotspot/c1x/HotSpotTypeResolved mirroring this class 240 // com/sun/hotspot/c1x/HotSpotTypeResolved mirroring this class
237 oop _c1x_mirror; 241 oop _c1x_mirror;
238 // Superclass 242 // Superclass
239 klassOop _super; 243 klassOop _super;
240 // Class name. Instance classes: java/lang/String, etc. Array classes: [I,
241 // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes.
242 symbolOop _name;
243 // First subclass (NULL if none); _subklass->next_sibling() is next one 244 // First subclass (NULL if none); _subklass->next_sibling() is next one
244 klassOop _subklass; 245 klassOop _subklass;
245 // Sibling link (or NULL); links all subklasses of a klass 246 // Sibling link (or NULL); links all subklasses of a klass
246 klassOop _next_sibling; 247 klassOop _next_sibling;
247 248
366 oop* adr_primary_supers() const { return (oop*)&_primary_supers[0]; } 367 oop* adr_primary_supers() const { return (oop*)&_primary_supers[0]; }
367 oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } 368 oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; }
368 oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } 369 oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; }
369 oop* adr_java_mirror() const { return (oop*)&_java_mirror; } 370 oop* adr_java_mirror() const { return (oop*)&_java_mirror; }
370 oop* adr_c1x_mirror() const { return (oop*)&_c1x_mirror; } 371 oop* adr_c1x_mirror() const { return (oop*)&_c1x_mirror; }
371 oop* adr_name() const { return (oop*)&_name; }
372 oop* adr_subklass() const { return (oop*)&_subklass; } 372 oop* adr_subklass() const { return (oop*)&_subklass; }
373 oop* adr_next_sibling() const { return (oop*)&_next_sibling; } 373 oop* adr_next_sibling() const { return (oop*)&_next_sibling; }
374 374
375 public: 375 public:
376 // Allocation profiling support 376 // Allocation profiling support
516 virtual bool should_be_initialized() const { return false; } 516 virtual bool should_be_initialized() const { return false; }
517 // initializes the klass 517 // initializes the klass
518 virtual void initialize(TRAPS); 518 virtual void initialize(TRAPS);
519 // lookup operation for MethodLookupCache 519 // lookup operation for MethodLookupCache
520 friend class MethodLookupCache; 520 friend class MethodLookupCache;
521 virtual methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; 521 virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
522 public: 522 public:
523 methodOop lookup_method(symbolOop name, symbolOop signature) const { 523 methodOop lookup_method(Symbol* name, Symbol* signature) const {
524 return uncached_lookup_method(name, signature); 524 return uncached_lookup_method(name, signature);
525 } 525 }
526 526
527 // array class with specific rank 527 // array class with specific rank
528 klassOop array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); } 528 klassOop array_klass(int rank, TRAPS) { return array_klass_impl(false, rank, THREAD); }
542 virtual klassOop array_klass_impl(bool or_null, int rank, TRAPS); 542 virtual klassOop array_klass_impl(bool or_null, int rank, TRAPS);
543 virtual klassOop array_klass_impl(bool or_null, TRAPS); 543 virtual klassOop array_klass_impl(bool or_null, TRAPS);
544 544
545 public: 545 public:
546 virtual void remove_unshareable_info(); 546 virtual void remove_unshareable_info();
547 virtual void shared_symbols_iterate(SymbolClosure* closure);
547 548
548 protected: 549 protected:
549 // computes the subtype relationship 550 // computes the subtype relationship
550 virtual bool compute_is_subtype_of(klassOop k); 551 virtual bool compute_is_subtype_of(klassOop k);
551 public: 552 public:
584 // type testing operations 585 // type testing operations
585 virtual bool oop_is_instance_slow() const { return false; } 586 virtual bool oop_is_instance_slow() const { return false; }
586 virtual bool oop_is_instanceRef() const { return false; } 587 virtual bool oop_is_instanceRef() const { return false; }
587 virtual bool oop_is_array() const { return false; } 588 virtual bool oop_is_array() const { return false; }
588 virtual bool oop_is_objArray_slow() const { return false; } 589 virtual bool oop_is_objArray_slow() const { return false; }
589 virtual bool oop_is_symbol() const { return false; }
590 virtual bool oop_is_klass() const { return false; } 590 virtual bool oop_is_klass() const { return false; }
591 virtual bool oop_is_thread() const { return false; } 591 virtual bool oop_is_thread() const { return false; }
592 virtual bool oop_is_method() const { return false; } 592 virtual bool oop_is_method() const { return false; }
593 virtual bool oop_is_constMethod() const { return false; } 593 virtual bool oop_is_constMethod() const { return false; }
594 virtual bool oop_is_methodData() const { return false; } 594 virtual bool oop_is_methodData() const { return false; }
786 // Return self, except for abstract classes with exactly 1 786 // Return self, except for abstract classes with exactly 1
787 // implementor. Then return the 1 concrete implementation. 787 // implementor. Then return the 1 concrete implementation.
788 Klass *up_cast_abstract(); 788 Klass *up_cast_abstract();
789 789
790 // klass name 790 // klass name
791 symbolOop name() const { return _name; } 791 Symbol* name() const { return _name; }
792 void set_name(symbolOop n) { oop_store_without_check((oop*) &_name, (oop) n); } 792 void set_name(Symbol* n);
793 793
794 friend class klassKlass; 794 friend class klassKlass;
795 795
796 public: 796 public:
797 // jvm support 797 // jvm support