src/share/vm/oops/instanceKlassKlass.cpp

changeset 866
a45484ea312d
parent 631
d1605aabd0a1
child 1100
c89f86385056
     1.1 --- a/src/share/vm/oops/instanceKlassKlass.cpp	Wed Nov 12 11:01:31 2008 -0800
     1.2 +++ b/src/share/vm/oops/instanceKlassKlass.cpp	Wed Nov 12 22:33:26 2008 -0800
     1.3 @@ -81,6 +81,7 @@
     1.4    MarkSweep::mark_and_push(ik->adr_source_debug_extension());
     1.5    MarkSweep::mark_and_push(ik->adr_inner_classes());
     1.6    MarkSweep::mark_and_push(ik->adr_protection_domain());
     1.7 +  MarkSweep::mark_and_push(ik->adr_host_klass());
     1.8    MarkSweep::mark_and_push(ik->adr_signers());
     1.9    MarkSweep::mark_and_push(ik->adr_generic_signature());
    1.10    MarkSweep::mark_and_push(ik->adr_class_annotations());
    1.11 @@ -120,6 +121,7 @@
    1.12    PSParallelCompact::mark_and_push(cm, ik->adr_source_debug_extension());
    1.13    PSParallelCompact::mark_and_push(cm, ik->adr_inner_classes());
    1.14    PSParallelCompact::mark_and_push(cm, ik->adr_protection_domain());
    1.15 +  PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
    1.16    PSParallelCompact::mark_and_push(cm, ik->adr_signers());
    1.17    PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature());
    1.18    PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations());
    1.19 @@ -159,6 +161,7 @@
    1.20    blk->do_oop(ik->adr_constants());
    1.21    blk->do_oop(ik->adr_class_loader());
    1.22    blk->do_oop(ik->adr_protection_domain());
    1.23 +  blk->do_oop(ik->adr_host_klass());
    1.24    blk->do_oop(ik->adr_signers());
    1.25    blk->do_oop(ik->adr_source_file_name());
    1.26    blk->do_oop(ik->adr_source_debug_extension());
    1.27 @@ -211,6 +214,8 @@
    1.28    if (mr.contains(adr)) blk->do_oop(adr);
    1.29    adr = ik->adr_protection_domain();
    1.30    if (mr.contains(adr)) blk->do_oop(adr);
    1.31 +  adr = ik->adr_host_klass();
    1.32 +  if (mr.contains(adr)) blk->do_oop(adr);
    1.33    adr = ik->adr_signers();
    1.34    if (mr.contains(adr)) blk->do_oop(adr);
    1.35    adr = ik->adr_source_file_name();
    1.36 @@ -260,6 +265,7 @@
    1.37    MarkSweep::adjust_pointer(ik->adr_constants());
    1.38    MarkSweep::adjust_pointer(ik->adr_class_loader());
    1.39    MarkSweep::adjust_pointer(ik->adr_protection_domain());
    1.40 +  MarkSweep::adjust_pointer(ik->adr_host_klass());
    1.41    MarkSweep::adjust_pointer(ik->adr_signers());
    1.42    MarkSweep::adjust_pointer(ik->adr_source_file_name());
    1.43    MarkSweep::adjust_pointer(ik->adr_source_debug_extension());
    1.44 @@ -295,6 +301,11 @@
    1.45      pm->claim_or_forward_breadth(pd_addr);
    1.46    }
    1.47  
    1.48 +  oop* hk_addr = ik->adr_host_klass();
    1.49 +  if (PSScavenge::should_scavenge(hk_addr)) {
    1.50 +    pm->claim_or_forward_breadth(hk_addr);
    1.51 +  }
    1.52 +
    1.53    oop* sg_addr = ik->adr_signers();
    1.54    if (PSScavenge::should_scavenge(sg_addr)) {
    1.55      pm->claim_or_forward_breadth(sg_addr);
    1.56 @@ -318,6 +329,11 @@
    1.57      pm->claim_or_forward_depth(pd_addr);
    1.58    }
    1.59  
    1.60 +  oop* hk_addr = ik->adr_host_klass();
    1.61 +  if (PSScavenge::should_scavenge(hk_addr)) {
    1.62 +    pm->claim_or_forward_depth(hk_addr);
    1.63 +  }
    1.64 +
    1.65    oop* sg_addr = ik->adr_signers();
    1.66    if (PSScavenge::should_scavenge(sg_addr)) {
    1.67      pm->claim_or_forward_depth(sg_addr);
    1.68 @@ -421,6 +437,7 @@
    1.69      ik->set_constants(NULL);
    1.70      ik->set_class_loader(NULL);
    1.71      ik->set_protection_domain(NULL);
    1.72 +    ik->set_host_klass(NULL);
    1.73      ik->set_signers(NULL);
    1.74      ik->set_source_file_name(NULL);
    1.75      ik->set_source_debug_extension(NULL);
    1.76 @@ -526,6 +543,7 @@
    1.77    st->print(" - constants:         "); ik->constants()->print_value_on(st);         st->cr();
    1.78    st->print(" - class loader:      "); ik->class_loader()->print_value_on(st);      st->cr();
    1.79    st->print(" - protection domain: "); ik->protection_domain()->print_value_on(st); st->cr();
    1.80 +  st->print(" - host class: ");        ik->host_klass()->print_value_on(st);        st->cr();
    1.81    st->print(" - signers:           "); ik->signers()->print_value_on(st);           st->cr();
    1.82    if (ik->source_file_name() != NULL) {
    1.83      st->print(" - source file:       ");
    1.84 @@ -626,7 +644,7 @@
    1.85      ik->_verify_count = Universe::verify_count();
    1.86  #endif
    1.87      // Verify that klass is present in SystemDictionary
    1.88 -    if (ik->is_loaded()) {
    1.89 +    if (ik->is_loaded() && !ik->is_anonymous()) {
    1.90        symbolHandle h_name (thread, ik->name());
    1.91        Handle h_loader (thread, ik->class_loader());
    1.92        Handle h_obj(thread, obj);
    1.93 @@ -764,6 +782,9 @@
    1.94      if (ik->protection_domain() != NULL) {
    1.95        guarantee(ik->protection_domain()->is_oop(),  "should be oop");
    1.96      }
    1.97 +    if (ik->host_klass() != NULL) {
    1.98 +      guarantee(ik->host_klass()->is_oop(),  "should be oop");
    1.99 +    }
   1.100      if (ik->signers() != NULL) {
   1.101        guarantee(ik->signers()->is_objArray(),       "should be obj array");
   1.102      }

mercurial