src/hotspot/share/aot/aotCodeHeap.cpp
Index Unified diffs Context diffs Sdiffs Frames Patch New Old Previous File Next File open Cdiff src/hotspot/share/aot/aotCodeHeap.cpp

src/hotspot/share/aot/aotCodeHeap.cpp

Print this page

        

*** 733,742 **** --- 733,750 ---- bool AOTCodeHeap::load_klass_data(InstanceKlass* ik, Thread* thread) { ResourceMark rm; NOT_PRODUCT( klasses_seen++; ) + // AOT does not support custom class loaders. + ClassLoaderData* cld = ik->class_loader_data(); + if (!cld->is_builtin_class_loader_data()) { + log_trace(aot, class, load)("skip class %s for custom classloader %s (%p) tid=" INTPTR_FORMAT, + ik->internal_name(), cld->loader_name(), cld, p2i(thread)); + return false; + } + AOTKlassData* klass_data = find_klass(ik); if (klass_data == NULL) { return false; }
*** 757,769 **** return false; } assert(klass_data->_class_id < _class_count, "invalid class id"); AOTClass* aot_class = &_classes[klass_data->_class_id]; ! if (aot_class->_classloader != NULL && aot_class->_classloader != ik->class_loader_data()) { ! log_trace(aot, class, load)("class %s in %s already loaded for classloader %p vs %p tid=" INTPTR_FORMAT, ! ik->internal_name(), _lib->name(), aot_class->_classloader, ik->class_loader_data(), p2i(thread)); NOT_PRODUCT( aot_klasses_cl_miss++; ) return false; } if (_lib->config()->_omitAssertions && JavaAssertions::enabled(ik->name()->as_C_string(), ik->class_loader() == NULL)) { --- 765,778 ---- return false; } assert(klass_data->_class_id < _class_count, "invalid class id"); AOTClass* aot_class = &_classes[klass_data->_class_id]; ! ClassLoaderData* aot_cld = aot_class->_classloader; ! if (aot_cld != NULL && aot_cld != cld) { ! log_trace(aot, class, load)("class %s in %s already loaded for classloader %s (%p) vs %s (%p) tid=" INTPTR_FORMAT, ! ik->internal_name(), _lib->name(), aot_cld->loader_name(), aot_cld, cld->loader_name(), cld, p2i(thread)); NOT_PRODUCT( aot_klasses_cl_miss++; ) return false; } if (_lib->config()->_omitAssertions && JavaAssertions::enabled(ik->name()->as_C_string(), ik->class_loader() == NULL)) {
*** 772,784 **** return false; } NOT_PRODUCT( aot_klasses_found++; ) ! log_trace(aot, class, load)("found %s in %s for classloader %p tid=" INTPTR_FORMAT, ik->internal_name(), _lib->name(), ik->class_loader_data(), p2i(thread)); ! aot_class->_classloader = ik->class_loader_data(); // Set klass's Resolve (second) got cell. _klasses_got[klass_data->_got_index] = ik; if (ik->is_initialized()) { _klasses_got[klass_data->_got_index - 1] = ik; } --- 781,793 ---- return false; } NOT_PRODUCT( aot_klasses_found++; ) ! log_trace(aot, class, load)("found %s in %s for classloader %s (%p) tid=" INTPTR_FORMAT, ik->internal_name(), _lib->name(), cld->loader_name(), cld, p2i(thread)); ! aot_class->_classloader = cld; // Set klass's Resolve (second) got cell. _klasses_got[klass_data->_got_index] = ik; if (ik->is_initialized()) { _klasses_got[klass_data->_got_index - 1] = ik; }
src/hotspot/share/aot/aotCodeHeap.cpp
Index Unified diffs Context diffs Sdiffs Frames Patch New Old Previous File Next File