563 |
563 |
564 // host class |
564 // host class |
565 Klass* host_klass() const { |
565 Klass* host_klass() const { |
566 Klass** hk = (Klass**)adr_host_klass(); |
566 Klass** hk = (Klass**)adr_host_klass(); |
567 if (hk == NULL) { |
567 if (hk == NULL) { |
|
568 assert(!is_anonymous(), "Anonymous classes have host klasses"); |
568 return NULL; |
569 return NULL; |
569 } else { |
570 } else { |
570 assert(*hk != NULL, "host klass should always be set if the address is not null"); |
571 assert(*hk != NULL, "host klass should always be set if the address is not null"); |
|
572 assert(is_anonymous(), "Only anonymous classes have host klasses"); |
571 return *hk; |
573 return *hk; |
572 } |
574 } |
573 } |
575 } |
574 void set_host_klass(Klass* host) { |
576 void set_host_klass(Klass* host) { |
575 assert(is_anonymous(), "not anonymous"); |
577 assert(is_anonymous(), "not anonymous"); |
576 Klass** addr = (Klass**)adr_host_klass(); |
578 Klass** addr = (Klass**)adr_host_klass(); |
577 assert(addr != NULL, "no reversed space"); |
579 assert(addr != NULL, "no reversed space"); |
578 if (addr != NULL) { |
580 if (addr != NULL) { |
579 *addr = host; |
581 *addr = host; |
580 } |
582 } |
|
583 } |
|
584 bool has_host_klass() const { |
|
585 return adr_host_klass() != NULL; |
581 } |
586 } |
582 bool is_anonymous() const { |
587 bool is_anonymous() const { |
583 return (_misc_flags & _misc_is_anonymous) != 0; |
588 return (_misc_flags & _misc_is_anonymous) != 0; |
584 } |
589 } |
585 void set_is_anonymous(bool value) { |
590 void set_is_anonymous(bool value) { |