mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6655646: dynamic languages need dynamically linked call sites
Invokedynamic instruction (JSR 292 RI) Reviewed-by: twisti, never
This commit is contained in:
parent
fd05c28901
commit
34c1d72421
65 changed files with 1457 additions and 264 deletions
|
@ -84,6 +84,7 @@ void instanceKlassKlass::oop_follow_contents(oop obj) {
|
|||
MarkSweep::mark_and_push(ik->adr_host_klass());
|
||||
MarkSweep::mark_and_push(ik->adr_signers());
|
||||
MarkSweep::mark_and_push(ik->adr_generic_signature());
|
||||
MarkSweep::mark_and_push(ik->adr_bootstrap_method());
|
||||
MarkSweep::mark_and_push(ik->adr_class_annotations());
|
||||
MarkSweep::mark_and_push(ik->adr_fields_annotations());
|
||||
MarkSweep::mark_and_push(ik->adr_methods_annotations());
|
||||
|
@ -124,6 +125,7 @@ void instanceKlassKlass::oop_follow_contents(ParCompactionManager* cm,
|
|||
PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_signers());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_generic_signature());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_bootstrap_method());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations());
|
||||
PSParallelCompact::mark_and_push(cm, ik->adr_methods_annotations());
|
||||
|
@ -170,6 +172,7 @@ int instanceKlassKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
|
|||
blk->do_oop(&ik->adr_implementors()[i]);
|
||||
}
|
||||
blk->do_oop(ik->adr_generic_signature());
|
||||
blk->do_oop(ik->adr_bootstrap_method());
|
||||
blk->do_oop(ik->adr_class_annotations());
|
||||
blk->do_oop(ik->adr_fields_annotations());
|
||||
blk->do_oop(ik->adr_methods_annotations());
|
||||
|
@ -230,6 +233,8 @@ int instanceKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk,
|
|||
}
|
||||
adr = ik->adr_generic_signature();
|
||||
if (mr.contains(adr)) blk->do_oop(adr);
|
||||
adr = ik->adr_bootstrap_method();
|
||||
if (mr.contains(adr)) blk->do_oop(adr);
|
||||
adr = ik->adr_class_annotations();
|
||||
if (mr.contains(adr)) blk->do_oop(adr);
|
||||
adr = ik->adr_fields_annotations();
|
||||
|
@ -274,6 +279,7 @@ int instanceKlassKlass::oop_adjust_pointers(oop obj) {
|
|||
MarkSweep::adjust_pointer(&ik->adr_implementors()[i]);
|
||||
}
|
||||
MarkSweep::adjust_pointer(ik->adr_generic_signature());
|
||||
MarkSweep::adjust_pointer(ik->adr_bootstrap_method());
|
||||
MarkSweep::adjust_pointer(ik->adr_class_annotations());
|
||||
MarkSweep::adjust_pointer(ik->adr_fields_annotations());
|
||||
MarkSweep::adjust_pointer(ik->adr_methods_annotations());
|
||||
|
@ -454,6 +460,7 @@ klassOop instanceKlassKlass::allocate_instance_klass(int vtable_len, int itable_
|
|||
ik->set_breakpoints(NULL);
|
||||
ik->init_previous_versions();
|
||||
ik->set_generic_signature(NULL);
|
||||
ik->set_bootstrap_method(NULL);
|
||||
ik->release_set_methods_jmethod_ids(NULL);
|
||||
ik->release_set_methods_cached_itable_indices(NULL);
|
||||
ik->set_class_annotations(NULL);
|
||||
|
@ -578,6 +585,11 @@ void instanceKlassKlass::oop_print_on(oop obj, outputStream* st) {
|
|||
} // pvw is cleaned up
|
||||
} // rm is cleaned up
|
||||
|
||||
if (ik->bootstrap_method() != NULL) {
|
||||
st->print(BULLET"bootstrap method: ");
|
||||
ik->bootstrap_method()->print_value_on(st);
|
||||
st->cr();
|
||||
}
|
||||
if (ik->generic_signature() != NULL) {
|
||||
st->print(BULLET"generic signature: ");
|
||||
ik->generic_signature()->print_value_on(st);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue