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	Thu Nov  3 14:16:16 2016
--- new/src/share/vm/classfile/classFileParser.cpp	Thu Nov  3 14:16:16 2016

*** 20,34 **** --- 20,36 ---- * or visit www.oracle.com if you need additional information or have any * questions. * */ #include "precompiled.hpp" + #include "aot/aotLoader.hpp" #include "classfile/classFileParser.hpp" #include "classfile/classFileStream.hpp" #include "classfile/classLoader.hpp" #include "classfile/classLoaderData.inline.hpp" #include "classfile/defaultMethods.hpp" + #include "classfile/dictionary.hpp" #include "classfile/javaClasses.inline.hpp" #include "classfile/moduleEntry.hpp" #include "classfile/symbolTable.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/verificationType.hpp"
*** 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(class, fingerprint)("%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