comparison src/share/vm/classfile/classLoaderData.inline.hpp @ 10181:1cb4795305b9

8011802: NPG: init_dependencies in class loader data graph can cause invalid CLD Summary: Restructure initialization of ClassLoaderData to not add a new instance if init_dependencies fail Reviewed-by: stefank, coleenp
author mgerdin
date Tue, 23 Apr 2013 08:39:55 +0200
parents 1f9994892f89
children de6a9e811145
comparison
equal deleted inserted replaced
10180:ebded0261dfc 10181:1cb4795305b9
41 41
42 inline ClassLoaderData *ClassLoaderDataGraph::find_or_create(Handle loader, TRAPS) { 42 inline ClassLoaderData *ClassLoaderDataGraph::find_or_create(Handle loader, TRAPS) {
43 assert(loader() != NULL,"Must be a class loader"); 43 assert(loader() != NULL,"Must be a class loader");
44 // Gets the class loader data out of the java/lang/ClassLoader object, if non-null 44 // Gets the class loader data out of the java/lang/ClassLoader object, if non-null
45 // it's already in the loader_data, so no need to add 45 // it's already in the loader_data, so no need to add
46 ClassLoaderData** loader_data_addr = java_lang_ClassLoader::loader_data_addr(loader()); 46 ClassLoaderData* loader_data= java_lang_ClassLoader::loader_data(loader());
47 ClassLoaderData* loader_data_id = *loader_data_addr; 47 if (loader_data) {
48 if (loader_data_id) { 48 return loader_data;
49 return loader_data_id;
50 } 49 }
51 return ClassLoaderDataGraph::add(loader_data_addr, loader, THREAD); 50 return ClassLoaderDataGraph::add(loader, false, THREAD);
52 } 51 }