events.hpp revision 3157
3157N/A * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A// Events and EventMark provide interfaces to log events taking place in the vm. 0N/A// This facility is extremly useful for post-mortem debugging. The eventlog 0N/A// often provides crucial information about events leading up to the crash. 0N/A// All arguments past the format string must be passed as an intptr_t. 0N/A// To log a single event use: 0N/A// Events::log("New nmethod has been created " INTPTR_FORMAT, nm); 0N/A// To log a block of events use: 0N/A// EventMark m("GarbageCollecting %d", (intptr_t)gc_number); 0N/A// The constructor to eventlog indents the eventlog until the 0N/A// destructor has been executed. 0N/A// IMPLEMENTATION RESTRICTION: 0N/A// Max 3 arguments are saved for each logged event. 3157N/A// The base event log dumping class that is registered for dumping at 3157N/A// crash time. This is a very generic interface that is mainly here 3157N/A// for completeness. Normally the templated EventLogBase would be 3157N/A// subclassed to provide different log types. 3157N/A // Automatically registers the log so that it will be printed during 3157N/A// A templated subclass of EventLog that provides basic ring buffer 3157N/A// functionality. Most event loggers should subclass this, possibly 3157N/A// providing a more featureful log function if the existing copy 3157N/A// semantics aren't appropriate. The name is used as the label of the 3157N/A// log when it is dumped during a crash. 3157N/A // move the ring buffer to next open slot and return the index of 3157N/A // the slot to use for the current message. Should only be called 3157N/A // Don't bother adding new entries when we're crashing. This also 3157N/A // avoids mutating the ring buffer when printing the log. 3157N/A // Print the contents of the log 3157N/A // Print a single element. A templated implementation might need to 3157N/A // be declared by subclasses. 3157N/A// A simple wrapper class for fixed size text messages. 3157N/A // Wrap this buffer in a stringStream. 3157N/A// A simple ring buffer of fixed size text messages. 3157N/A // A log for generic messages that aren't well categorized. 3157N/A // A log for internal exception related messages, like internal 3157N/A // throws and implicit exceptions. 3157N/A // Deoptization related messages 3157N/A // Logs a generic message with timestamp and format as printf. 3157N/A // Log exception related message 3157N/A // Register default loggers 3157N/A // Not a regular Java thread so don't bother locking 3157N/A// Dump the ring buffer entries that current have entries. 3157N/A// Implement a printing routine for the StringLogMessage 3157N/A// Place markers for the beginning and end up of a set of events. 3157N/A// These end up in the default log. 0N/A // log a begin event, format as printf 1879N/A#
endif // SHARE_VM_UTILITIES_EVENTS_HPP