src/share/vm/aot/aotCodeHeap.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/aot/aotCodeHeap.cpp	Thu Nov  3 04:05:40 2016
--- new/src/share/vm/aot/aotCodeHeap.cpp	Thu Nov  3 04:05:40 2016

*** 20,37 **** --- 20,37 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ #include "precompiled.hpp" + + #include "aot/aotLoader.hpp" + #include "aot/aotCodeHeap.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/shared/gcLocker.hpp" #include "jvmci/compilerRuntime.hpp" #include "jvmci/jvmciRuntime.hpp" #include "oops/method.hpp" #include "aot/aotLoader.hpp" #include "aot/aotCodeHeap.hpp" #include "runtime/os.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/vm_operations.hpp" bool AOTCodeHeap::_narrow_oop_shift_initialized = false;
*** 78,95 **** --- 78,95 ---- name++; len -= 2; } TempNewSymbol sym = SymbolTable::probe(name, len); if (sym == NULL) { ! log_debug(aot, class, resolve)("Probe failed for AOT class %s", name); return NULL; } Klass* k = SystemDictionary::find_instance_or_array_klass(sym, loader, protection_domain, thread); assert(!thread->has_pending_exception(), "should not throw"); if (k != NULL) { ! log_info(aot, class, resolve)("%s %s (lookup)", caller->method_holder()->external_name(), k->external_name()); } return k; } void AOTCodeHeap::handle_config_error(const char* format, ...) {
*** 265,275 **** --- 265,275 ---- tty->print("%7d ", (int) tty->time_stamp().milliseconds()); tty->print_cr("%4d loaded %s aot library", _dso_id, _name); } } ! void AOTCodeHeap::publish_aot(instanceKlassHandle kh, methodHandle mh, AOTMethodData* method_data, int code_id) { ! void AOTCodeHeap::publish_aot(const methodHandle& mh, AOTMethodData* method_data, int code_id) { // The method may be explicitly excluded by the user. if (CompilerOracle::should_exclude(mh)) { return; }
*** 629,639 **** --- 629,639 ---- VMThread::execute(&op); } } } ! bool AOTCodeHeap::load_klass_data(const instanceKlassHandle& kh, Thread* thread) { ResourceMark rm; NOT_PRODUCT( klasses_seen++; ) AOTKlassData* klass_data = find_klass(kh());
*** 641,669 **** --- 641,669 ---- return false; } if (!kh->has_passed_fingerprint_check()) { NOT_PRODUCT( aot_klasses_fp_miss++; ) ! log_trace(aot, class, fingerprint)("class %s%s has bad fingerprint in %s tid=" INTPTR_FORMAT, kh->internal_name(), kh->is_shared() ? " (shared)" : "", _name, p2i(thread)); sweep_dependent_methods(klass_data); return false; } assert(klass_data->_class_id < _class_count, "invalid class id"); AOTClass* aot_class = &_classes[klass_data->_class_id]; if (aot_class->_classloader != NULL && aot_class->_classloader != kh->class_loader_data()) { ! log_trace(aot, class, load)("class %s in %s already loaded for classloader %p vs %p tid=" INTPTR_FORMAT, kh->internal_name(), _name, aot_class->_classloader, kh->class_loader_data(), p2i(thread)); NOT_PRODUCT( aot_klasses_cl_miss++; ) return false; } NOT_PRODUCT( aot_klasses_found++; ) ! log_trace(aot, class, load)("found %s in %s for classloader %p tid=" INTPTR_FORMAT, kh->internal_name(), _name, kh->class_loader_data(), p2i(thread)); aot_class->_classloader = kh->class_loader_data(); // Set klass's Resolve (second) got cell. _metaspace_got[klass_data->_got_index] = kh();
*** 696,706 **** --- 696,706 ---- Method* m = AOTCodeHeap::find_method(kh, thread, method_name); methodHandle mh(thread, m); if (mh->code() != NULL) { // Does it have already compiled code? continue; // Don't overwrite } - publish_aot(kh, mh, method_data, code_id); } } return true; }
*** 831,841 **** --- 831,841 ---- } return count; } #endif ! void AOTCodeHeap::flush_evol_dependents_on(const instanceKlassHandle& dependee) { for (int index = 0; index < _method_count; index++) { if (_code_to_aot[index]._state != in_use) { continue; // Skip uninitialized entries. } AOTCompiledMethod* aot = _code_to_aot[index]._aot;

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