--- old/src/hotspot/share/classfile/classFileParser.cpp 2018-03-02 22:42:54.869661313 -0500 +++ new/src/hotspot/share/classfile/classFileParser.cpp 2018-03-02 22:42:53.815838187 -0500 @@ -4381,7 +4381,7 @@ // add super class dependency Klass* const super = defined_klass->super(); if (super != NULL) { - defining_loader_data->record_dependency(super, CHECK); + defining_loader_data->record_dependency(super); } // add super interface dependencies @@ -4389,7 +4389,7 @@ if (local_interfaces != NULL) { const int length = local_interfaces->length(); for (int i = 0; i < length; i++) { - defining_loader_data->record_dependency(local_interfaces->at(i), CHECK); + defining_loader_data->record_dependency(local_interfaces->at(i)); } } } @@ -5362,6 +5362,16 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik, bool changed_by_loadhook, TRAPS) { assert(ik != NULL, "invariant"); + // Set name and CLD before adding to CLD + ik->set_class_loader_data(_loader_data); + ik->set_name(_class_name); + + // Add all classes to our internal class loader list here, + // including classes in the bootstrap (NULL) class loader. + const bool publicize = !is_internal(); + + _loader_data->add_class(ik, publicize); + set_klass_to_deallocate(ik); assert(_field_info != NULL, "invariant"); @@ -5376,7 +5386,6 @@ ik->set_should_verify_class(_need_verify); // Not yet: supers are done below to support the new subtype-checking fields - ik->set_class_loader_data(_loader_data); ik->set_nonstatic_field_size(_field_info->nonstatic_field_size); ik->set_has_nonstatic_fields(_field_info->has_nonstatic_fields); assert(_fac != NULL, "invariant"); @@ -5407,8 +5416,6 @@ // has to be changed accordingly. ik->set_initial_method_idnum(ik->methods()->length()); - ik->set_name(_class_name); - if (is_anonymous()) { // _this_class_index is a CONSTANT_Class entry that refers to this // anonymous class itself. If this class needs to refer to its own methods or