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 }