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