comparison src/share/vm/oops/instanceKlassKlass.cpp @ 726:be93aad57795

6655646: dynamic languages need dynamically linked call sites Summary: invokedynamic instruction (JSR 292 RI) Reviewed-by: twisti, never
author jrose
date Tue, 21 Apr 2009 23:21:04 -0700
parents c89f86385056
children b37c246bf7ce ad6585fd4087
comparison
equal deleted inserted replaced
725:928912ce8438 726:be93aad57795
82 MarkSweep::mark_and_push(ik->adr_inner_classes()); 82 MarkSweep::mark_and_push(ik->adr_inner_classes());
83 MarkSweep::mark_and_push(ik->adr_protection_domain()); 83 MarkSweep::mark_and_push(ik->adr_protection_domain());
84 MarkSweep::mark_and_push(ik->adr_host_klass()); 84 MarkSweep::mark_and_push(ik->adr_host_klass());
85 MarkSweep::mark_and_push(ik->adr_signers()); 85 MarkSweep::mark_and_push(ik->adr_signers());
86 MarkSweep::mark_and_push(ik->adr_generic_signature()); 86 MarkSweep::mark_and_push(ik->adr_generic_signature());
87 MarkSweep::mark_and_push(ik->adr_bootstrap_method());
87 MarkSweep::mark_and_push(ik->adr_class_annotations()); 88 MarkSweep::mark_and_push(ik->adr_class_annotations());
88 MarkSweep::mark_and_push(ik->adr_fields_annotations()); 89 MarkSweep::mark_and_push(ik->adr_fields_annotations());
89 MarkSweep::mark_and_push(ik->adr_methods_annotations()); 90 MarkSweep::mark_and_push(ik->adr_methods_annotations());
90 MarkSweep::mark_and_push(ik->adr_methods_parameter_annotations()); 91 MarkSweep::mark_and_push(ik->adr_methods_parameter_annotations());
91 MarkSweep::mark_and_push(ik->adr_methods_default_annotations()); 92 MarkSweep::mark_and_push(ik->adr_methods_default_annotations());
122 PSParallelCompact::mark_and_push(cm, ik->adr_inner_classes()); 123 PSParallelCompact::mark_and_push(cm, ik->adr_inner_classes());
123 PSParallelCompact::mark_and_push(cm, ik->adr_protection_domain()); 124 PSParallelCompact::mark_and_push(cm, ik->adr_protection_domain());
124 PSParallelCompact::mark_and_push(cm, ik->adr_host_klass()); 125 PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
125 PSParallelCompact::mark_and_push(cm, ik->adr_signers()); 126 PSParallelCompact::mark_and_push(cm, ik->adr_signers());
126 PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature()); 127 PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature());
128 PSParallelCompact::mark_and_push(cm, ik->adr_bootstrap_method());
127 PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations()); 129 PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations());
128 PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations()); 130 PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations());
129 PSParallelCompact::mark_and_push(cm, ik->adr_methods_annotations()); 131 PSParallelCompact::mark_and_push(cm, ik->adr_methods_annotations());
130 PSParallelCompact::mark_and_push(cm, ik->adr_methods_parameter_annotations()); 132 PSParallelCompact::mark_and_push(cm, ik->adr_methods_parameter_annotations());
131 PSParallelCompact::mark_and_push(cm, ik->adr_methods_default_annotations()); 133 PSParallelCompact::mark_and_push(cm, ik->adr_methods_default_annotations());
168 blk->do_oop(ik->adr_inner_classes()); 170 blk->do_oop(ik->adr_inner_classes());
169 for (int i = 0; i < instanceKlass::implementors_limit; i++) { 171 for (int i = 0; i < instanceKlass::implementors_limit; i++) {
170 blk->do_oop(&ik->adr_implementors()[i]); 172 blk->do_oop(&ik->adr_implementors()[i]);
171 } 173 }
172 blk->do_oop(ik->adr_generic_signature()); 174 blk->do_oop(ik->adr_generic_signature());
175 blk->do_oop(ik->adr_bootstrap_method());
173 blk->do_oop(ik->adr_class_annotations()); 176 blk->do_oop(ik->adr_class_annotations());
174 blk->do_oop(ik->adr_fields_annotations()); 177 blk->do_oop(ik->adr_fields_annotations());
175 blk->do_oop(ik->adr_methods_annotations()); 178 blk->do_oop(ik->adr_methods_annotations());
176 blk->do_oop(ik->adr_methods_parameter_annotations()); 179 blk->do_oop(ik->adr_methods_parameter_annotations());
177 blk->do_oop(ik->adr_methods_default_annotations()); 180 blk->do_oop(ik->adr_methods_default_annotations());
227 adr = ik->adr_implementors(); 230 adr = ik->adr_implementors();
228 for (int i = 0; i < instanceKlass::implementors_limit; i++) { 231 for (int i = 0; i < instanceKlass::implementors_limit; i++) {
229 if (mr.contains(&adr[i])) blk->do_oop(&adr[i]); 232 if (mr.contains(&adr[i])) blk->do_oop(&adr[i]);
230 } 233 }
231 adr = ik->adr_generic_signature(); 234 adr = ik->adr_generic_signature();
235 if (mr.contains(adr)) blk->do_oop(adr);
236 adr = ik->adr_bootstrap_method();
232 if (mr.contains(adr)) blk->do_oop(adr); 237 if (mr.contains(adr)) blk->do_oop(adr);
233 adr = ik->adr_class_annotations(); 238 adr = ik->adr_class_annotations();
234 if (mr.contains(adr)) blk->do_oop(adr); 239 if (mr.contains(adr)) blk->do_oop(adr);
235 adr = ik->adr_fields_annotations(); 240 adr = ik->adr_fields_annotations();
236 if (mr.contains(adr)) blk->do_oop(adr); 241 if (mr.contains(adr)) blk->do_oop(adr);
272 MarkSweep::adjust_pointer(ik->adr_inner_classes()); 277 MarkSweep::adjust_pointer(ik->adr_inner_classes());
273 for (int i = 0; i < instanceKlass::implementors_limit; i++) { 278 for (int i = 0; i < instanceKlass::implementors_limit; i++) {
274 MarkSweep::adjust_pointer(&ik->adr_implementors()[i]); 279 MarkSweep::adjust_pointer(&ik->adr_implementors()[i]);
275 } 280 }
276 MarkSweep::adjust_pointer(ik->adr_generic_signature()); 281 MarkSweep::adjust_pointer(ik->adr_generic_signature());
282 MarkSweep::adjust_pointer(ik->adr_bootstrap_method());
277 MarkSweep::adjust_pointer(ik->adr_class_annotations()); 283 MarkSweep::adjust_pointer(ik->adr_class_annotations());
278 MarkSweep::adjust_pointer(ik->adr_fields_annotations()); 284 MarkSweep::adjust_pointer(ik->adr_fields_annotations());
279 MarkSweep::adjust_pointer(ik->adr_methods_annotations()); 285 MarkSweep::adjust_pointer(ik->adr_methods_annotations());
280 MarkSweep::adjust_pointer(ik->adr_methods_parameter_annotations()); 286 MarkSweep::adjust_pointer(ik->adr_methods_parameter_annotations());
281 MarkSweep::adjust_pointer(ik->adr_methods_default_annotations()); 287 MarkSweep::adjust_pointer(ik->adr_methods_default_annotations());
452 ik->set_jni_ids(NULL); 458 ik->set_jni_ids(NULL);
453 ik->set_osr_nmethods_head(NULL); 459 ik->set_osr_nmethods_head(NULL);
454 ik->set_breakpoints(NULL); 460 ik->set_breakpoints(NULL);
455 ik->init_previous_versions(); 461 ik->init_previous_versions();
456 ik->set_generic_signature(NULL); 462 ik->set_generic_signature(NULL);
463 ik->set_bootstrap_method(NULL);
457 ik->release_set_methods_jmethod_ids(NULL); 464 ik->release_set_methods_jmethod_ids(NULL);
458 ik->release_set_methods_cached_itable_indices(NULL); 465 ik->release_set_methods_cached_itable_indices(NULL);
459 ik->set_class_annotations(NULL); 466 ik->set_class_annotations(NULL);
460 ik->set_fields_annotations(NULL); 467 ik->set_fields_annotations(NULL);
461 ik->set_methods_annotations(NULL); 468 ik->set_methods_annotations(NULL);
576 } 583 }
577 if (have_pv) st->cr(); 584 if (have_pv) st->cr();
578 } // pvw is cleaned up 585 } // pvw is cleaned up
579 } // rm is cleaned up 586 } // rm is cleaned up
580 587
588 if (ik->bootstrap_method() != NULL) {
589 st->print(BULLET"bootstrap method: ");
590 ik->bootstrap_method()->print_value_on(st);
591 st->cr();
592 }
581 if (ik->generic_signature() != NULL) { 593 if (ik->generic_signature() != NULL) {
582 st->print(BULLET"generic signature: "); 594 st->print(BULLET"generic signature: ");
583 ik->generic_signature()->print_value_on(st); 595 ik->generic_signature()->print_value_on(st);
584 st->cr(); 596 st->cr();
585 } 597 }