8329605: hs errfile generic events - move memory protections and nmethod flushes to separate sections
Reviewed-by: lucy, stefank, stuefe
This commit is contained in:
parent
f7069494f4
commit
397d948310
@ -1934,7 +1934,7 @@ static bool checked_mprotect(char* addr, size_t size, int prot) {
|
||||
//
|
||||
// See http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/mprotect.htm
|
||||
|
||||
Events::log(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(addr), p2i(addr+size), prot);
|
||||
Events::log_memprotect(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(addr), p2i(addr+size), prot);
|
||||
bool rc = ::mprotect(addr, size, prot) == 0 ? true : false;
|
||||
|
||||
if (!rc) {
|
||||
|
@ -1590,7 +1590,7 @@ bool os::pd_commit_memory(char* addr, size_t size, bool exec) {
|
||||
int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
|
||||
#if defined(__OpenBSD__)
|
||||
// XXX: Work-around mmap/MAP_FIXED bug temporarily on OpenBSD
|
||||
Events::log(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(addr), p2i(addr+size), prot);
|
||||
Events::log_memprotect(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(addr), p2i(addr+size), prot);
|
||||
if (::mprotect(addr, size, prot) == 0) {
|
||||
return true;
|
||||
} else {
|
||||
@ -1711,7 +1711,7 @@ bool os::numa_get_group_ids_for_range(const void** addresses, int* lgrp_ids, siz
|
||||
bool os::pd_uncommit_memory(char* addr, size_t size, bool exec) {
|
||||
#if defined(__OpenBSD__)
|
||||
// XXX: Work-around mmap/MAP_FIXED bug temporarily on OpenBSD
|
||||
Events::log(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with PROT_NONE", p2i(addr), p2i(addr+size));
|
||||
Events::log_memprotect(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with PROT_NONE", p2i(addr), p2i(addr+size));
|
||||
if (::mprotect(addr, size, PROT_NONE) == 0) {
|
||||
return true;
|
||||
} else {
|
||||
@ -1829,7 +1829,7 @@ static bool bsd_mprotect(char* addr, size_t size, int prot) {
|
||||
assert(addr == bottom, "sanity check");
|
||||
|
||||
size = align_up(pointer_delta(addr, bottom, 1) + size, os::vm_page_size());
|
||||
Events::log(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(bottom), p2i(bottom+size), prot);
|
||||
Events::log_memprotect(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(bottom), p2i(bottom+size), prot);
|
||||
return ::mprotect(bottom, size, prot) == 0;
|
||||
}
|
||||
|
||||
|
@ -3786,7 +3786,7 @@ static bool linux_mprotect(char* addr, size_t size, int prot) {
|
||||
#ifdef CAN_SHOW_REGISTERS_ON_ASSERT
|
||||
if (addr != g_assert_poison)
|
||||
#endif
|
||||
Events::log(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(bottom), p2i(bottom+size), prot);
|
||||
Events::log_memprotect(nullptr, "Protecting memory [" INTPTR_FORMAT "," INTPTR_FORMAT "] with protection modes %x", p2i(bottom), p2i(bottom+size), prot);
|
||||
return ::mprotect(bottom, size, prot) == 0;
|
||||
}
|
||||
|
||||
|
@ -2037,7 +2037,7 @@ void nmethod::purge(bool free_code_cache_data, bool unregister_nmethod) {
|
||||
MutexLocker ml(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||
|
||||
// completely deallocate this method
|
||||
Events::log(Thread::current(), "flushing nmethod " INTPTR_FORMAT, p2i(this));
|
||||
Events::log_nmethod_flush(Thread::current(), "flushing %s nmethod " INTPTR_FORMAT, is_osr_method() ? "osr" : "", p2i(this));
|
||||
log_debug(codecache)("*flushing %s nmethod %3d/" INTPTR_FORMAT ". Live blobs:" UINT32_FORMAT
|
||||
"/Free CodeCache:" SIZE_FORMAT "Kb",
|
||||
is_osr_method() ? "osr" : "",_compile_id, p2i(this), CodeCache::blob_count(),
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2024, 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
|
||||
@ -37,6 +37,8 @@
|
||||
|
||||
EventLog* Events::_logs = nullptr;
|
||||
StringEventLog* Events::_messages = nullptr;
|
||||
StringEventLog* Events::_memprotect_messages = nullptr;
|
||||
StringEventLog* Events::_nmethod_flush_messages = nullptr;
|
||||
StringEventLog* Events::_vm_operations = nullptr;
|
||||
StringEventLog* Events::_zgc_phase_switch = nullptr;
|
||||
ExceptionsEventLog* Events::_exceptions = nullptr;
|
||||
@ -97,6 +99,8 @@ void Events::print() {
|
||||
void Events::init() {
|
||||
if (LogEvents) {
|
||||
_messages = new StringEventLog("Events", "events");
|
||||
_nmethod_flush_messages = new StringEventLog("Nmethod flushes", "nmethodflushes");
|
||||
_memprotect_messages = new StringEventLog("Memory protections", "memprotects");
|
||||
_vm_operations = new StringEventLog("VM Operations", "vmops");
|
||||
if (UseZGC) {
|
||||
_zgc_phase_switch = new StringEventLog("ZGC Phase Switch", "zgcps");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2024, 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
|
||||
@ -220,6 +220,12 @@ class Events : AllStatic {
|
||||
// A log for generic messages that aren't well categorized.
|
||||
static StringEventLog* _messages;
|
||||
|
||||
// A log for memory protection related messages
|
||||
static StringEventLog* _memprotect_messages;
|
||||
|
||||
// A log for nmethod flush operations
|
||||
static StringEventLog* _nmethod_flush_messages;
|
||||
|
||||
// A log for VM Operations
|
||||
static StringEventLog* _vm_operations;
|
||||
|
||||
@ -259,6 +265,10 @@ class Events : AllStatic {
|
||||
// Logs a generic message with timestamp and format as printf.
|
||||
static void log(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
|
||||
|
||||
static void log_memprotect(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
|
||||
|
||||
static void log_nmethod_flush(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
|
||||
|
||||
static void log_vm_operation(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
|
||||
|
||||
static void log_zgc_phase_switch(const char* format, ...) ATTRIBUTE_PRINTF(1, 2);
|
||||
@ -290,6 +300,24 @@ inline void Events::log(Thread* thread, const char* format, ...) {
|
||||
}
|
||||
}
|
||||
|
||||
inline void Events::log_memprotect(Thread* thread, const char* format, ...) {
|
||||
if (LogEvents && _memprotect_messages != nullptr) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
_memprotect_messages->logv(thread, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
inline void Events::log_nmethod_flush(Thread* thread, const char* format, ...) {
|
||||
if (LogEvents && _nmethod_flush_messages != nullptr) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
_nmethod_flush_messages->logv(thread, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
inline void Events::log_vm_operation(Thread* thread, const char* format, ...) {
|
||||
if (LogEvents && _vm_operations != nullptr) {
|
||||
va_list ap;
|
||||
|
Loading…
Reference in New Issue
Block a user