diff -r f69a2f675f19 -r 2221f042556d src/hotspot/share/memory/filemap.cpp --- a/src/hotspot/share/memory/filemap.cpp Fri Mar 29 07:38:34 2019 -0700 +++ b/src/hotspot/share/memory/filemap.cpp Fri Mar 29 08:42:32 2019 -0700 @@ -24,7 +24,9 @@ #include "precompiled.hpp" #include "jvm.h" +#include "classfile/classFileStream.hpp" #include "classfile/classLoader.inline.hpp" +#include "classfile/classLoaderData.inline.hpp" #include "classfile/classLoaderExt.hpp" #include "classfile/symbolTable.hpp" #include "classfile/systemDictionaryShared.hpp" @@ -1489,7 +1491,7 @@ return ent; } -ClassFileStream* FileMapInfo::open_stream_for_jvmti(InstanceKlass* ik, TRAPS) { +ClassFileStream* FileMapInfo::open_stream_for_jvmti(InstanceKlass* ik, Handle class_loader, TRAPS) { int path_index = ik->shared_classpath_index(); assert(path_index >= 0, "should be called for shared built-in classes only"); assert(path_index < (int)_shared_path_table_size, "sanity"); @@ -1501,7 +1503,12 @@ const char* const class_name = name->as_C_string(); const char* const file_name = ClassLoader::file_name_for_class_name(class_name, name->utf8_length()); - return cpe->open_stream(file_name, THREAD); + ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(class_loader()); + ClassFileStream* cfs = cpe->open_stream_for_loader(file_name, loader_data, THREAD); + assert(cfs != NULL, "must be able to read the classfile data of shared classes for built-in loaders."); + log_debug(cds, jvmti)("classfile data for %s [%d: %s] = %d bytes", class_name, path_index, + cfs->source(), cfs->length()); + return cfs; } #endif