< 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 >