src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/classFileParser.cpp	Mon Oct 31 17:46:31 2016
--- new/src/share/vm/classfile/classFileParser.cpp	Mon Oct 31 17:46:31 2016

*** 28,37 **** --- 28,38 ---- #include "classfile/classLoaderData.inline.hpp" #include "classfile/defaultMethods.hpp" #include "classfile/javaClasses.inline.hpp" #include "classfile/moduleEntry.hpp" #include "classfile/symbolTable.hpp" + #include "classfile/dictionary.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/verificationType.hpp" #include "classfile/verifier.hpp" #include "classfile/vmSymbols.hpp" #include "gc/shared/gcLocker.hpp"
*** 69,78 **** --- 70,80 ---- #include "utilities/ostream.hpp" #include "utilities/resourceHash.hpp" #if INCLUDE_CDS #include "classfile/systemDictionaryShared.hpp" #endif + #include "aot/aotLoader.hpp" // We generally try to create the oops directly when parsing, rather than // allocating temporary data structures and copying the bytes twice. A // temporary area is only needed when parsing utf8 entries in the constant // pool and when parsing line number tables.
*** 5188,5197 **** --- 5190,5212 ---- fill_instance_klass(ik, changed_by_loadhook, CHECK_NULL); assert(_klass == ik, "invariant"); + ik->set_has_passed_fingerprint_check(false); + if (UseAOT && ik->supers_have_passed_fingerprint_checks()) { + uint64_t aot_fp = AOTLoader::get_saved_fingerprint(ik); + if (aot_fp != 0 && aot_fp == _stream->compute_fingerprint()) { + // This class matches with a class saved in an AOT library + ik->set_has_passed_fingerprint_check(true); + } else { + ResourceMark rm; + log_info(classfingerprint)("%s : expected = " PTR64_FORMAT " actual = " PTR64_FORMAT, + ik->external_name(), aot_fp, _stream->compute_fingerprint()); + } + } + return ik; } void ClassFileParser::fill_instance_klass(InstanceKlass* ik, bool changed_by_loadhook, TRAPS) { assert(ik != NULL, "invariant");

src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File