< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

2571   // restore constant pool resolved references
2572   constants()->restore_unshareable_info(CHECK);
2573 
2574   if (array_klasses() != NULL) {
2575     // To get a consistent list of classes we need MultiArray_lock to ensure
2576     // array classes aren't observed while they are being restored.
2577      MutexLocker ml(MultiArray_lock);
2578     // Array classes have null protection domain.
2579     // --> see ArrayKlass::complete_create_array_klass()
2580     array_klasses()->restore_unshareable_info(ClassLoaderData::the_null_class_loader_data(), Handle(), CHECK);
2581   }
2582 
2583   // Initialize current biased locking state.
2584   if (UseBiasedLocking && BiasedLocking::enabled()) {
2585     set_prototype_header(markWord::biased_locking_prototype());
2586   }
2587 
2588   // Initialize @ValueBased class annotation
2589   if (DiagnoseSyncOnValueBasedClasses && has_value_based_class_annotation()) {
2590     set_is_value_based();
2591     set_prototype_header(markWord::prototype());






2592   }
2593 }
2594 
2595 // Check if a class or any of its supertypes has a version older than 50.
2596 // CDS will not perform verification of old classes during dump time because
2597 // without changing the old verifier, the verification constraint cannot be
2598 // retrieved during dump time.
2599 // Verification of archived old classes will be performed during run time.
2600 bool InstanceKlass::can_be_verified_at_dumptime() const {
2601   if (major_version() < 50 /*JAVA_6_VERSION*/) {
2602     return false;
2603   }
2604   if (java_super() != NULL && !java_super()->can_be_verified_at_dumptime()) {
2605     return false;
2606   }
2607   Array<InstanceKlass*>* interfaces = local_interfaces();
2608   int len = interfaces->length();
2609   for (int i = 0; i < len; i++) {
2610     if (!interfaces->at(i)->can_be_verified_at_dumptime()) {
2611       return false;

2571   // restore constant pool resolved references
2572   constants()->restore_unshareable_info(CHECK);
2573 
2574   if (array_klasses() != NULL) {
2575     // To get a consistent list of classes we need MultiArray_lock to ensure
2576     // array classes aren't observed while they are being restored.
2577      MutexLocker ml(MultiArray_lock);
2578     // Array classes have null protection domain.
2579     // --> see ArrayKlass::complete_create_array_klass()
2580     array_klasses()->restore_unshareable_info(ClassLoaderData::the_null_class_loader_data(), Handle(), CHECK);
2581   }
2582 
2583   // Initialize current biased locking state.
2584   if (UseBiasedLocking && BiasedLocking::enabled()) {
2585     set_prototype_header(markWord::biased_locking_prototype());
2586   }
2587 
2588   // Initialize @ValueBased class annotation
2589   if (DiagnoseSyncOnValueBasedClasses && has_value_based_class_annotation()) {
2590     set_is_value_based();
2591     markWord prototype = markWord::prototype();
2592 #ifdef _LP64
2593     if (UseCompactObjectHeaders) {
2594       prototype = prototype.set_klass(this);
2595     }
2596 #endif
2597     set_prototype_header(prototype);
2598   }
2599 }
2600 
2601 // Check if a class or any of its supertypes has a version older than 50.
2602 // CDS will not perform verification of old classes during dump time because
2603 // without changing the old verifier, the verification constraint cannot be
2604 // retrieved during dump time.
2605 // Verification of archived old classes will be performed during run time.
2606 bool InstanceKlass::can_be_verified_at_dumptime() const {
2607   if (major_version() < 50 /*JAVA_6_VERSION*/) {
2608     return false;
2609   }
2610   if (java_super() != NULL && !java_super()->can_be_verified_at_dumptime()) {
2611     return false;
2612   }
2613   Array<InstanceKlass*>* interfaces = local_interfaces();
2614   int len = interfaces->length();
2615   for (int i = 0; i < len; i++) {
2616     if (!interfaces->at(i)->can_be_verified_at_dumptime()) {
2617       return false;
< prev index next >