486 DictionaryEntry* p = bucket(i); 487 while (p != NULL) { 488 DictionaryEntry* next = p->next(); 489 InstanceKlass*ik = p->instance_klass(); 490 if (ik->has_signer_and_not_archived()) { 491 // We cannot include signed classes in the archive because the certificates 492 // used during dump time may be different than those used during 493 // runtime (due to expiration, etc). 494 ResourceMark rm; 495 tty->print_cr("Preload Warning: Skipping %s from signed JAR", 496 ik->name()->as_C_string()); 497 free_entry(p); 498 } else if (is_jfr_event_class(ik)) { 499 // We cannot include JFR event classes because they need runtime-specific 500 // instrumentation in order to work with -XX:FlightRecorderOptions=retransform=false. 501 // There are only a small number of these classes, so it's not worthwhile to 502 // support them and make CDS more complicated. 503 ResourceMark rm; 504 tty->print_cr("Skipping JFR event class %s", ik->name()->as_C_string()); 505 free_entry(p); 506 } else { 507 p->set_next(master_list); 508 master_list = p; 509 } 510 p = next; 511 } 512 set_entry(i, NULL); 513 } 514 515 // Add the dictionary entries back to the list in the correct buckets. 516 while (master_list != NULL) { 517 DictionaryEntry* p = master_list; 518 master_list = master_list->next(); 519 p->set_next(NULL); 520 Symbol* class_name = p->instance_klass()->name(); 521 // Since the null class loader data isn't copied to the CDS archive, 522 // compute the hash with NULL for loader data. 523 unsigned int hash = compute_hash(class_name); 524 int index = hash_to_index(hash); 525 p->set_hash(hash); | 486 DictionaryEntry* p = bucket(i); 487 while (p != NULL) { 488 DictionaryEntry* next = p->next(); 489 InstanceKlass*ik = p->instance_klass(); 490 if (ik->has_signer_and_not_archived()) { 491 // We cannot include signed classes in the archive because the certificates 492 // used during dump time may be different than those used during 493 // runtime (due to expiration, etc). 494 ResourceMark rm; 495 tty->print_cr("Preload Warning: Skipping %s from signed JAR", 496 ik->name()->as_C_string()); 497 free_entry(p); 498 } else if (is_jfr_event_class(ik)) { 499 // We cannot include JFR event classes because they need runtime-specific 500 // instrumentation in order to work with -XX:FlightRecorderOptions=retransform=false. 501 // There are only a small number of these classes, so it's not worthwhile to 502 // support them and make CDS more complicated. 503 ResourceMark rm; 504 tty->print_cr("Skipping JFR event class %s", ik->name()->as_C_string()); 505 free_entry(p); 506 } else if (ik->has_been_redefined()) { 507 // Similar to the above, we cannot include classes which has beed redefined during 508 // dump time. 509 ResourceMark rm; 510 tty->print_cr("Skipping redefined class %s", ik->name()->as_C_string()); 511 free_entry(p); 512 } else { 513 p->set_next(master_list); 514 master_list = p; 515 } 516 p = next; 517 } 518 set_entry(i, NULL); 519 } 520 521 // Add the dictionary entries back to the list in the correct buckets. 522 while (master_list != NULL) { 523 DictionaryEntry* p = master_list; 524 master_list = master_list->next(); 525 p->set_next(NULL); 526 Symbol* class_name = p->instance_klass()->name(); 527 // Since the null class loader data isn't copied to the CDS archive, 528 // compute the hash with NULL for loader data. 529 unsigned int hash = compute_hash(class_name); 530 int index = hash_to_index(hash); 531 p->set_hash(hash); |