src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/javaClasses.cpp	Wed Dec  5 06:52:58 2012
--- new/src/share/vm/classfile/javaClasses.cpp	Wed Dec  5 06:52:57 2012

*** 2731,2740 **** --- 2731,2741 ---- // Support for java_lang_ClassLoader bool java_lang_ClassLoader::offsets_computed = false; int java_lang_ClassLoader::_loader_data_offset = -1; int java_lang_ClassLoader::parallelCapable_offset = -1; + int java_lang_ClassLoader::fullyConcurrent_offset = -1; ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) { assert(loader != NULL && loader->is_oop(), "loader must be oop"); return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset); }
*** 2750,2759 **** --- 2751,2764 ---- // The field indicating parallelCapable (parallelLockMap) is only present starting in 7, Klass* k1 = SystemDictionary::ClassLoader_klass(); compute_optional_offset(parallelCapable_offset, k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature()); + // The field indicating fullyConcurrent is only present starting in 8 + compute_optional_offset(fullyConcurrent_offset, + k1, vmSymbols::fullyConcurrent_name(), vmSymbols::bool_signature()); + CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET); } oop java_lang_ClassLoader::parent(oop loader) { assert(is_instance(loader), "loader must be oop");
*** 2787,2796 **** --- 2792,2812 ---- return false; } return (class_loader->obj_field(parallelCapable_offset) != NULL); } + // For class loader classes, fullConcurrent defined as boolean field + // Written to by java.lang.ClassLoader, vm only reads this field, doesn't set it + bool java_lang_ClassLoader::fullyConcurrent(oop class_loader) { + if (!JDK_Version::is_gte_jdk18x_version() + || fullyConcurrent_offset == -1) { + // Default for backward compatibility is false + return false; + } + return (class_loader->bool_field(fullyConcurrent_offset) == 1); + } + bool java_lang_ClassLoader::is_trusted_loader(oop loader) { // Fix for 4474172; see evaluation for more details loader = non_reflection_class_loader(loader); oop cl = SystemDictionary::java_system_loader();

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