8277423: ciReplay: hidden class with comment expected error

Reviewed-by: chagedorn, thartmann
This commit is contained in:
Dean Long 2021-11-22 20:50:06 +00:00
parent 1049aba1fb
commit 05a9a51dbf
3 changed files with 20 additions and 11 deletions

View File

@ -1654,9 +1654,11 @@ void ciEnv::dump_replay_data_helper(outputStream* out) {
GrowableArray<ciMetadata*>* objects = _factory->get_ci_metadata();
out->print_cr("# %d ciObject found", objects->length());
// The very first entry is the InstanceKlass of the root method of the current compilation in order to get the right
// protection domain to load subsequent classes during replay compilation.
out->print_cr("instanceKlass %s", CURRENT_ENV->replay_name(task()->method()->method_holder()));
ciInstanceKlass::dump_replay_instanceKlass(out, task()->method()->method_holder());
for (int i = 0; i < objects->length(); i++) {
objects->at(i)->dump_replay_data(out);
}

View File

@ -732,6 +732,19 @@ const char *ciInstanceKlass::replay_name() const {
return CURRENT_ENV->replay_name(get_instanceKlass());
}
void ciInstanceKlass::dump_replay_instanceKlass(outputStream* out, InstanceKlass* ik) {
if (ik->is_hidden()) {
const char *name = CURRENT_ENV->dyno_name(ik);
if (name != NULL) {
out->print_cr("instanceKlass %s # %s", name, ik->name()->as_quoted_ascii());
} else {
out->print_cr("# instanceKlass %s", ik->name()->as_quoted_ascii());
}
} else {
out->print_cr("instanceKlass %s", ik->name()->as_quoted_ascii());
}
}
void ciInstanceKlass::dump_replay_data(outputStream* out) {
ResourceMark rm;
@ -743,16 +756,7 @@ void ciInstanceKlass::dump_replay_data(outputStream* out) {
while (sub != NULL) {
if (sub->is_instance_klass()) {
InstanceKlass *isub = InstanceKlass::cast(sub);
if (isub->is_hidden()) {
const char *name = CURRENT_ENV->dyno_name(isub);
if (name != NULL) {
out->print_cr("instanceKlass %s # %s", name, sub->name()->as_quoted_ascii());
} else {
out->print_cr("# instanceKlass %s", sub->name()->as_quoted_ascii());
}
} else {
out->print_cr("instanceKlass %s", sub->name()->as_quoted_ascii());
}
dump_replay_instanceKlass(out, isub);
}
sub = sub->next_sibling();
}

View File

@ -293,6 +293,9 @@ public:
// Dump the current state of this klass for compilation replay.
virtual void dump_replay_data(outputStream* out);
static void dump_replay_instanceKlass(outputStream* out, InstanceKlass* ik);
// Return stable class name suitable for replay file.
const char *replay_name() const;