hotspot/src/share/vm/oops/klass.cpp
changeset 8076 96d498ec7ae1
parent 7397 5b173b4ca846
child 8883 5569135acca3
equal deleted inserted replaced
8075:582dd25571b2 8076:96d498ec7ae1
    33 #include "oops/klassOop.hpp"
    33 #include "oops/klassOop.hpp"
    34 #include "oops/oop.inline.hpp"
    34 #include "oops/oop.inline.hpp"
    35 #include "oops/oop.inline2.hpp"
    35 #include "oops/oop.inline2.hpp"
    36 #include "runtime/atomic.hpp"
    36 #include "runtime/atomic.hpp"
    37 
    37 
       
    38 void Klass::set_name(Symbol* n) {
       
    39   _name = n;
       
    40   if (_name != NULL) _name->increment_refcount();
       
    41 }
    38 
    42 
    39 bool Klass::is_subclass_of(klassOop k) const {
    43 bool Klass::is_subclass_of(klassOop k) const {
    40   // Run up the super chain and check
    44   // Run up the super chain and check
    41   klassOop t = as_klassOop();
    45   klassOop t = as_klassOop();
    42 
    46 
   113   assert(k->is_klass(), "argument must be a class");
   117   assert(k->is_klass(), "argument must be a class");
   114   return is_subclass_of(k);
   118   return is_subclass_of(k);
   115 }
   119 }
   116 
   120 
   117 
   121 
   118 methodOop Klass::uncached_lookup_method(symbolOop name, symbolOop signature) const {
   122 methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
   119 #ifdef ASSERT
   123 #ifdef ASSERT
   120   tty->print_cr("Error: uncached_lookup_method called on a klass oop."
   124   tty->print_cr("Error: uncached_lookup_method called on a klass oop."
   121                 " Likely error: reflection method does not correctly"
   125                 " Likely error: reflection method does not correctly"
   122                 " wrap return value in a mirror object.");
   126                 " wrap return value in a mirror object.");
   123 #endif
   127 #endif
   452   set_subklass(NULL);
   456   set_subklass(NULL);
   453   set_next_sibling(NULL);
   457   set_next_sibling(NULL);
   454 }
   458 }
   455 
   459 
   456 
   460 
       
   461 void Klass::shared_symbols_iterate(SymbolClosure* closure) {
       
   462   closure->do_symbol(&_name);
       
   463 }
       
   464 
       
   465 
   457 klassOop Klass::array_klass_or_null(int rank) {
   466 klassOop Klass::array_klass_or_null(int rank) {
   458   EXCEPTION_MARK;
   467   EXCEPTION_MARK;
   459   // No exception can be thrown by array_klass_impl when called with or_null == true.
   468   // No exception can be thrown by array_klass_impl when called with or_null == true.
   460   // (In anycase, the execption mark will fail if it do so)
   469   // (In anycase, the execption mark will fail if it do so)
   461   return array_klass_impl(true, rank, THREAD);
   470   return array_klass_impl(true, rank, THREAD);