diff -r 2e7898927798 -r 979ebd346ecf hotspot/src/share/vm/classfile/classFileParser.cpp --- a/hotspot/src/share/vm/classfile/classFileParser.cpp Tue Feb 14 20:00:28 2017 -0800 +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Wed Feb 15 22:59:57 2017 -0500 @@ -834,7 +834,7 @@ const Klass* const k = SystemDictionary::resolve_super_or_fail(_class_name, unresolved_klass, - _loader_data->class_loader(), + Handle(THREAD, _loader_data->class_loader()), _protection_domain, false, CHECK); @@ -2851,7 +2851,6 @@ NULL, CHECK); - HandleMark hm(THREAD); for (int index = 0; index < length; index++) { Method* method = parse_method(cfs, is_interface, @@ -5357,7 +5356,7 @@ // Allocate mirror and initialize static fields // The create_mirror() call will also call compute_modifiers() java_lang_Class::create_mirror(ik, - _loader_data->class_loader(), + Handle(THREAD, _loader_data->class_loader()), module_handle, _protection_domain, CHECK); @@ -5915,10 +5914,11 @@ "Interfaces must have java.lang.Object as superclass in class file %s", CHECK); } + Handle loader(THREAD, _loader_data->class_loader()); _super_klass = (const InstanceKlass*) SystemDictionary::resolve_super_or_fail(_class_name, super_class_name, - _loader_data->class_loader(), + loader, _protection_domain, true, CHECK); @@ -5960,6 +5960,7 @@ _all_mirandas = new GrowableArray(20); + Handle loader(THREAD, _loader_data->class_loader()); klassVtable::compute_vtable_size_and_num_mirandas(&_vtable_size, &_num_miranda_methods, _all_mirandas, @@ -5967,7 +5968,7 @@ _methods, _access_flags, _major_version, - _loader_data->class_loader(), + loader, _class_name, _local_interfaces, CHECK);