--- /dev/null 2016-10-25 08:46:44.038854975 +0200 +++ new/src/share/vm/evtrace/traceTypes.hpp 2016-10-25 10:40:16.140782134 +0200 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014, 2015, Dynatrace and/or its affiliates. All rights reserved. + * + * This file is part of the Lock Contention Tracing Subsystem for the HotSpot + * Virtual Machine, which is developed at Christian Doppler Laboratory on + * Monitoring and Evolution of Very-Large-Scale Software Systems. Please + * contact us at if you need additional information + * or have any questions. + * + * 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work. If not, see . + * + */ + +#ifndef SHARE_VM_EVTRACE_TRACETYPES_HPP +#define SHARE_VM_EVTRACE_TRACETYPES_HPP + +#include "utilities/globalDefinitions.hpp" + +#define TRACE_TYPES_DO(fun) \ + fun(u1, event_type ) \ + fun(s8, timestamp ) \ + fun(s8, seq_num ) \ + fun(s8, thread_id ) \ + fun(s4, thread_state ) \ + fun(s4, object_id ) \ + fun(s8, objmonitor_id ) \ + fun(s8, classloader_id ) \ + fun(s8, class_id ) \ + fun(s8, method_id ) \ + fun(s4, method_bci ) \ + fun(s8, stack_id ) + +// Scalar trace stream types +class TraceTypes { +public: + +#define TRACE_TYPE_DECLARE(primitive, name) \ + typedef primitive name; +TRACE_TYPES_DO(TRACE_TYPE_DECLARE) +#undef TRACE_TYPE_DECLARE + + enum park_return_code { + _park_return_code_min = -1, + park_normal, + park_timedout, + park_immediate_fast, + park_interrupted_fast, + park_no_wait_time, + park_interrupted_slow, + park_locked, + park_immediate_slow, + park_unknown, + _park_return_code_max, + }; + + enum safepoint_reason { + _safepoint_reason_min = -1, + safepoint_periodic, + safepoint_for_vm_op, + _safepoint_reason_max, + }; + + enum monitor_enter_wait { + _monitor_enter_wait_min = -1, + enter_no_wait, + enter_after_wait_notify, + enter_after_wait_timeout, + enter_after_wait_other, // interrupt or spurious + _monitor_enter_wait_max, + }; + + enum monitor_entered_flags { + _monitor_entered_flags_min = -1, + entered_flags_none = 0, + entered_queued = (1 << 0), + entered_parked = (1 << 1), + _monitor_entered_flags_max, + }; + + enum event { + _event_min = -1, + + event_thread_start, + event_thread_name_change, + event_thread_state_change, + event_thread_interrupt, + event_thread_exit, + event_thread_park_begin, + event_thread_park_end, + event_thread_unpark, + event_monitor_inflate, + event_monitor_deflate, + event_monitor_contended_enter, + event_monitor_contended_entered, + event_monitor_contended_exited, + event_monitor_dummy, + event_class_metadata, + event_method_metadata, + event_stack_metadata, + event_identical_stacks_metadata, + event_class_loader_unload, + event_safepoint_begin, + event_safepoint_end, + event_vm_end, + event_metadata_reset, + event_group, + + // NOTE: native monitors and stack traces not implemented in this version + event_native_monitor_info, + event_native_monitor_contended_lock, + event_native_monitor_contended_locked, + event_native_monitor_contended_unlocked, + event_native_monitor_destroy, + event_native_monitor_dummy, + event_stack_metadata_extended, + event_native_symbol_metadata, + + event_marker, + + _event_max, + }; + +protected: + TraceTypes() { } +}; + +#endif /* SHARE_VM_EVTRACE_TRACETYPES_HPP */