diff -r 079d100b3d0e -r 44122f767467 src/hotspot/share/classfile/javaClasses.cpp --- a/src/hotspot/share/classfile/javaClasses.cpp Wed Feb 21 23:30:01 2018 -0500 +++ b/src/hotspot/share/classfile/javaClasses.cpp Thu Feb 22 10:39:42 2018 +0100 @@ -3403,7 +3403,7 @@ DependencyContext java_lang_invoke_MethodHandleNatives_CallSiteContext::vmdependencies(oop call_site) { assert(java_lang_invoke_MethodHandleNatives_CallSiteContext::is_instance(call_site), ""); - intptr_t* vmdeps_addr = (intptr_t*)call_site->address_field_addr(_vmdependencies_offset); + intptr_t* vmdeps_addr = (intptr_t*)call_site->field_addr(_vmdependencies_offset); DependencyContext dep_ctx(vmdeps_addr); return dep_ctx; } @@ -3458,13 +3458,14 @@ int java_lang_ClassLoader::name_offset = -1; int java_lang_ClassLoader::unnamedModule_offset = -1; -ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) { - assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); - return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset); -} - ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) { - return *java_lang_ClassLoader::loader_data_addr(loader); + assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); + return HeapAccess<>::load_at(loader, _loader_data_offset); +} + +ClassLoaderData* java_lang_ClassLoader::cmpxchg_loader_data(ClassLoaderData* new_data, oop loader, ClassLoaderData* expected_data) { + assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop"); + return HeapAccess<>::atomic_cmpxchg_at(new_data, loader, _loader_data_offset, expected_data); } void java_lang_ClassLoader::compute_offsets() {