< prev index next >

src/hotspot/share/code/codeCache.cpp

Print this page
rev 49465 : [mq]: 8198691.patch

*** 1,7 **** /* ! * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 24,39 **** --- 24,42 ---- #include "precompiled.hpp" #include "aot/aotLoader.hpp" #include "code/codeBlob.hpp" #include "code/codeCache.hpp" + #include "code/codeHeapState.hpp" #include "code/compiledIC.hpp" #include "code/dependencies.hpp" #include "code/icBuffer.hpp" #include "code/nmethod.hpp" #include "code/pcDesc.hpp" #include "compiler/compileBroker.hpp" + #include "logging/log.hpp" + #include "logging/logStream.hpp" #include "memory/allocation.inline.hpp" #include "memory/iterator.hpp" #include "memory/resourceArea.hpp" #include "oops/method.inline.hpp" #include "oops/objArrayOop.hpp"
*** 1361,1374 **** --- 1364,1386 ---- // Dump code cache into a buffer before locking the tty, { MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); print_summary(&s); } + { ttyLocker ttyl; tty->print("%s", s.as_string()); } + if (heap->full_count() == 0) { + LogTarget(Debug, codecache) lt; + if (lt.is_enabled()) { + CompileBroker::print_heapinfo(tty, "all", "4096"); // details, may be a lot! + } + } + } + heap->report_full(); EventCodeCacheFull event; if (event.should_commit()) { event.set_codeBlobType((u1)code_blob_type);
*** 1637,1641 **** --- 1649,1704 ---- st->print(" total_blobs='" UINT32_FORMAT "' nmethods='" UINT32_FORMAT "'" " adapters='" UINT32_FORMAT "' free_code_cache='" SIZE_FORMAT "'", blob_count(), nmethod_count(), adapter_count(), unallocated_capacity()); } + + //---< BEGIN >--- CodeHeap State Analytics. + + void CodeCache::aggregate(outputStream *out, const char* granularity) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::aggregate(out, (*heap), granularity); + } + } + + void CodeCache::discard(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::discard(out, (*heap)); + } + } + + void CodeCache::print_usedSpace(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_usedSpace(out, (*heap)); + } + } + + void CodeCache::print_freeSpace(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_freeSpace(out, (*heap)); + } + } + + void CodeCache::print_count(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_count(out, (*heap)); + } + } + + void CodeCache::print_space(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_space(out, (*heap)); + } + } + + void CodeCache::print_age(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_age(out, (*heap)); + } + } + + void CodeCache::print_names(outputStream *out) { + FOR_ALL_ALLOCABLE_HEAPS(heap) { + CodeHeapState::print_names(out, (*heap)); + } + } + //---< END >--- CodeHeap State Analytics.
< prev index next >