src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/classfile

src/share/vm/classfile/systemDictionary.cpp

Print this page




 118 
 119 // return true if class_name contains no '.' (internal format is '/')
 120 bool SystemDictionary::is_internal_format(Symbol* class_name) {
 121   if (class_name != NULL) {
 122     ResourceMark rm;
 123     char* name = class_name->as_C_string();
 124     return strchr(name, '.') == NULL;
 125   } else {
 126     return true;
 127   }
 128 }
 129 
 130 #endif
 131 
 132 // ----------------------------------------------------------------------------
 133 // Parallel class loading check
 134 
 135 bool SystemDictionary::is_parallelCapable(Handle class_loader) {
 136   if (UnsyncloadClass || class_loader.is_null()) return true;
 137   if (AlwaysLockClassLoader) return false;
 138   return java_lang_ClassLoader::parallelCapable(class_loader());



 139 }
 140 // ----------------------------------------------------------------------------
 141 // ParallelDefineClass flag does not apply to bootclass loader
 142 bool SystemDictionary::is_parallelDefine(Handle class_loader) {
 143    if (class_loader.is_null()) return false;
 144    if (AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) {



 145      return true;
 146    }
 147    return false;
 148 }
 149 // ----------------------------------------------------------------------------
 150 // Resolving of classes
 151 
 152 // Forwards to resolve_or_null
 153 
 154 Klass* SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) {
 155   Klass* klass = resolve_or_null(class_name, class_loader, protection_domain, THREAD);
 156   if (HAS_PENDING_EXCEPTION || klass == NULL) {
 157     KlassHandle k_h(THREAD, klass);
 158     // can return a null klass
 159     klass = handle_resolution_exception(class_name, class_loader, protection_domain, throw_error, k_h, THREAD);
 160   }
 161   return klass;
 162 }
 163 
 164 Klass* SystemDictionary::handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) {




 118 
 119 // return true if class_name contains no '.' (internal format is '/')
 120 bool SystemDictionary::is_internal_format(Symbol* class_name) {
 121   if (class_name != NULL) {
 122     ResourceMark rm;
 123     char* name = class_name->as_C_string();
 124     return strchr(name, '.') == NULL;
 125   } else {
 126     return true;
 127   }
 128 }
 129 
 130 #endif
 131 
 132 // ----------------------------------------------------------------------------
 133 // Parallel class loading check
 134 
 135 bool SystemDictionary::is_parallelCapable(Handle class_loader) {
 136   if (UnsyncloadClass || class_loader.is_null()) return true;
 137   if (AlwaysLockClassLoader) return false;
 138   // fullyConcurrent subsumes the parallelCapable test but
 139   // maybe this should be inside java_lang_ClassLoader::parallelCapable?
 140   return java_lang_ClassLoader::fullyConcurrent(class_loader()) ||
 141       java_lang_ClassLoader::parallelCapable(class_loader());
 142 }
 143 // ----------------------------------------------------------------------------
 144 // ParallelDefineClass flag does not apply to bootclass loader
 145 bool SystemDictionary::is_parallelDefine(Handle class_loader) {
 146    if (class_loader.is_null()) return false;
 147    if (java_lang_ClassLoader::fullyConcurrent(class_loader()) ||
 148        AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) {
 149        if (TraceClassLoading)
 150            tty->print_cr("Parallel define permitted for loader: %p", class_loader());
 151      return true;
 152    }
 153    return false;
 154 }
 155 // ----------------------------------------------------------------------------
 156 // Resolving of classes
 157 
 158 // Forwards to resolve_or_null
 159 
 160 Klass* SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) {
 161   Klass* klass = resolve_or_null(class_name, class_loader, protection_domain, THREAD);
 162   if (HAS_PENDING_EXCEPTION || klass == NULL) {
 163     KlassHandle k_h(THREAD, klass);
 164     // can return a null klass
 165     klass = handle_resolution_exception(class_name, class_loader, protection_domain, throw_error, k_h, THREAD);
 166   }
 167   return klass;
 168 }
 169 
 170 Klass* SystemDictionary::handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) {


src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File