< prev index next >

src/hotspot/share/classfile/systemDictionaryShared.cpp

Print this page

*** 25,34 **** --- 25,35 ---- #include "precompiled.hpp" #include "classfile/classFileStream.hpp" #include "classfile/classListParser.hpp" #include "classfile/classLoader.hpp" #include "classfile/classLoaderData.inline.hpp" + #include "classfile/classLoaderDataGraph.hpp" #include "classfile/classLoaderExt.hpp" #include "classfile/dictionary.hpp" #include "classfile/javaClasses.hpp" #include "classfile/symbolTable.hpp" #include "classfile/systemDictionary.hpp"
*** 780,791 **** // because at dump time we don't know how to resolve classes for such loaders. return true; } } void SystemDictionaryShared::finalize_verification_constraints() { ! boot_loader_dictionary()->finalize_verification_constraints(); } void SystemDictionaryShared::check_verification_constraints(InstanceKlass* klass, TRAPS) { assert(!DumpSharedSpaces && UseSharedSpaces, "called at run time with CDS enabled only"); --- 781,800 ---- // because at dump time we don't know how to resolve classes for such loaders. return true; } } + void SystemDictionaryShared::finalize_verification_constraints_for(InstanceKlass* k) { + if (!k->is_unsafe_anonymous()) { + SharedDictionaryEntry* entry = ((SharedDictionary*)(k->class_loader_data()->dictionary()))->find_entry_for(k); + entry->finalize_verification_constraints(); + } + } + void SystemDictionaryShared::finalize_verification_constraints() { ! MutexLocker mcld(ClassLoaderDataGraph_lock); ! ClassLoaderDataGraph::dictionary_classes_do(finalize_verification_constraints_for); } void SystemDictionaryShared::check_verification_constraints(InstanceKlass* klass, TRAPS) { assert(!DumpSharedSpaces && UseSharedSpaces, "called at run time with CDS enabled only");
*** 808,839 **** } return NULL; } - void SharedDictionary::finalize_verification_constraints() { - int bytes = 0, count = 0; - for (int index = 0; index < table_size(); index++) { - for (SharedDictionaryEntry *probe = bucket(index); - probe != NULL; - probe = probe->next()) { - int n = probe->finalize_verification_constraints(); - if (n > 0) { - bytes += n; - count ++; - } - } - } - if (log_is_enabled(Info, cds, verification)) { - double avg = 0; - if (count > 0) { - avg = double(bytes) / double(count); - } - log_info(cds, verification)("Recorded verification constraints for %d classes = %d bytes (avg = %.2f bytes) ", count, bytes, avg); - } - } - void SharedDictionaryEntry::add_verification_constraint(Symbol* name, Symbol* from_name, bool from_field_is_protected, bool from_is_array, bool from_is_object) { if (_verifier_constraints == NULL) { _verifier_constraints = new(ResourceObj::C_HEAP, mtClass) GrowableArray<Symbol*>(8, true, mtClass); } --- 817,826 ----
< prev index next >