4025 int java_lang_ClassLoader::parallelCapable_offset = -1; |
4025 int java_lang_ClassLoader::parallelCapable_offset = -1; |
4026 int java_lang_ClassLoader::name_offset = -1; |
4026 int java_lang_ClassLoader::name_offset = -1; |
4027 int java_lang_ClassLoader::nameAndId_offset = -1; |
4027 int java_lang_ClassLoader::nameAndId_offset = -1; |
4028 int java_lang_ClassLoader::unnamedModule_offset = -1; |
4028 int java_lang_ClassLoader::unnamedModule_offset = -1; |
4029 |
4029 |
4030 ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) { |
4030 ClassLoaderData* java_lang_ClassLoader::loader_data_acquire(oop loader) { |
4031 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4031 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4032 return HeapAccess<>::load_at(loader, _loader_data_offset); |
4032 return HeapAccess<MO_ACQUIRE>::load_at(loader, _loader_data_offset); |
4033 } |
4033 } |
4034 |
4034 |
4035 ClassLoaderData* java_lang_ClassLoader::loader_data_raw(oop loader) { |
4035 ClassLoaderData* java_lang_ClassLoader::loader_data_raw(oop loader) { |
4036 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4036 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4037 return RawAccess<>::load_at(loader, _loader_data_offset); |
4037 return RawAccess<>::load_at(loader, _loader_data_offset); |
4038 } |
4038 } |
4039 |
4039 |
4040 ClassLoaderData* java_lang_ClassLoader::cmpxchg_loader_data(ClassLoaderData* new_data, oop loader, ClassLoaderData* expected_data) { |
4040 void java_lang_ClassLoader::release_set_loader_data(oop loader, ClassLoaderData* new_data) { |
4041 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4041 assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); |
4042 return HeapAccess<>::atomic_cmpxchg_at(new_data, loader, _loader_data_offset, expected_data); |
4042 HeapAccess<MO_RELEASE>::store_at(loader, _loader_data_offset, new_data); |
4043 } |
4043 } |
4044 |
4044 |
4045 #define CLASSLOADER_FIELDS_DO(macro) \ |
4045 #define CLASSLOADER_FIELDS_DO(macro) \ |
4046 macro(parallelCapable_offset, k1, "parallelLockMap", concurrenthashmap_signature, false); \ |
4046 macro(parallelCapable_offset, k1, "parallelLockMap", concurrenthashmap_signature, false); \ |
4047 macro(name_offset, k1, vmSymbols::name_name(), string_signature, false); \ |
4047 macro(name_offset, k1, vmSymbols::name_name(), string_signature, false); \ |