src/share/vm/trace/traceEvent.hpp

Print this page
rev 13113 : 8182651: Add TRACE_ONLY conditional macro to support more fine-grained INCLUDE_TRACE programming
Reviewed-by:

*** 1,7 **** /* ! * Copyright (c) 2012, 2016, 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) 2012, 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.
*** 32,56 **** TIMED }; #if INCLUDE_TRACE #include "trace/traceBackend.hpp" ! #include "trace/tracing.hpp" #include "tracefiles/traceEventIds.hpp" - #include "tracefiles/traceTypes.hpp" #include "utilities/ticks.hpp" template<typename T> ! class TraceEvent : public StackObj { private: bool _started; ! #ifdef ASSERT ! bool _committed; ! bool _cancelled; ! protected: ! bool _ignore_check; ! #endif protected: jlong _startTime; jlong _endTime; --- 32,50 ---- TIMED }; #if INCLUDE_TRACE #include "trace/traceBackend.hpp" ! #include "trace/traceTime.hpp" #include "tracefiles/traceEventIds.hpp" #include "utilities/ticks.hpp" template<typename T> ! class TraceEvent { private: bool _started; ! DEBUG_ONLY(bool _committed;) protected: jlong _startTime; jlong _endTime;
*** 65,78 **** TraceEvent(EventStartTime timing=TIMED) : _startTime(0), _endTime(0), _started(false) #ifdef ASSERT ! , ! _committed(false), ! _cancelled(false), ! _ignore_check(false) #endif { if (T::is_enabled()) { _started = true; if (TIMED == timing && !T::isInstant) { --- 59,69 ---- TraceEvent(EventStartTime timing=TIMED) : _startTime(0), _endTime(0), _started(false) #ifdef ASSERT ! , _committed(false) #endif { if (T::is_enabled()) { _started = true; if (TIMED == timing && !T::isInstant) {
*** 98,120 **** return _started; } void commit() { if (!should_commit()) { - DEBUG_ONLY(cancel()); return; } ! assert(!_cancelled, "Committing an event that has already been cancelled"); if (_startTime == 0) { static_cast<T*>(this)->set_starttime(Tracing::time()); } else if (_endTime == 0) { static_cast<T*>(this)->set_endtime(Tracing::time()); } if (static_cast<T*>(this)->should_write()) { static_cast<T*>(this)->writeEvent(); } - DEBUG_ONLY(set_commited()); } static TraceEventId id() { return T::eventId; } --- 89,110 ---- return _started; } void commit() { if (!should_commit()) { return; } ! assert(!is_committed(), "invariant"); if (_startTime == 0) { static_cast<T*>(this)->set_starttime(Tracing::time()); } else if (_endTime == 0) { static_cast<T*>(this)->set_endtime(Tracing::time()); } if (static_cast<T*>(this)->should_write()) { static_cast<T*>(this)->writeEvent(); + DEBUG_ONLY(set_committed()); } } static TraceEventId id() { return T::eventId; }
*** 133,166 **** static bool has_stacktrace() { return T::hasStackTrace; } - void cancel() { - assert(!_committed && !_cancelled, - "event was already committed/cancelled"); - DEBUG_ONLY(_cancelled = true); - } - - ~TraceEvent() { - if (_started) { - assert(_ignore_check || _committed || _cancelled, - "event was not committed/cancelled"); - } - } - #ifdef ASSERT - protected: - void ignoreCheck() { - _ignore_check = true; - } - private: ! void set_commited() { ! assert(!_committed, "event has already been committed"); _committed = true; } #endif // ASSERT }; - #endif // INCLUDE_TRACE #endif // SHARE_VM_TRACE_TRACEEVENT_HPP --- 123,139 ---- static bool has_stacktrace() { return T::hasStackTrace; } #ifdef ASSERT private: ! bool is_committed() const { return _committed; } ! ! void set_committed() { ! assert(!_committed, "event already committed"); _committed = true; } #endif // ASSERT }; #endif // INCLUDE_TRACE #endif // SHARE_VM_TRACE_TRACEEVENT_HPP