src/share/vm/jfr/support/jfrTraceIdExtension.hpp

Mon, 19 Aug 2019 10:11:31 +0200

author
neugens
date
Mon, 19 Aug 2019 10:11:31 +0200
changeset 9861
a248d0be1309
parent 9858
b985cbb00e68
permissions
-rw-r--r--

8229401: Fix JFR code cache test failures
8223689: Add JFR Thread Sampling Support
8223690: Add JFR BiasedLock Event Support
8223691: Add JFR G1 Region Type Change Event Support
8223692: Add JFR G1 Heap Summary Event Support
Summary: Backport JFR from JDK11, additional fixes
Reviewed-by: neugens, apetushkov
Contributed-by: denghui.ddh@alibaba-inc.com

     1 /*
     2 * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
     3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 *
     5 * This code is free software; you can redistribute it and/or modify it
     6 * under the terms of the GNU General Public License version 2 only, as
     7 * published by the Free Software Foundation.
     8 *
     9 * This code is distributed in the hope that it will be useful, but WITHOUT
    10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12 * version 2 for more details (a copy is included in the LICENSE file that
    13 * accompanied this code).
    14 *
    15 * You should have received a copy of the GNU General Public License version
    16 * 2 along with this work; if not, write to the Free Software Foundation,
    17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18 *
    19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20 * or visit www.oracle.com if you need additional information or have any
    21 * questions.
    22 *
    23 */
    25 #ifndef SHARE_VM_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    26 #define SHARE_VM_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP
    28 #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp"
    30 #define DEFINE_TRACE_ID_FIELD mutable traceid _trace_id
    32 #define DEFINE_TRACE_ID_METHODS \
    33   traceid trace_id() const { return _trace_id; } \
    34   traceid* const trace_id_addr() const { return &_trace_id; } \
    35   void set_trace_id(traceid id) const { _trace_id = id; }
    37 #define DEFINE_TRACE_ID_SIZE \
    38   static size_t trace_id_size() { return sizeof(traceid); }
    40 #define INIT_ID(data) JfrTraceId::assign(data)
    41 #define REMOVE_ID(k) JfrTraceId::remove(k);
    42 #define RESTORE_ID(k) JfrTraceId::restore(k);
    44 class JfrTraceFlag {
    45  private:
    46   mutable jbyte _flags;
    47  public:
    48   JfrTraceFlag() : _flags(0) {}
    49   explicit JfrTraceFlag(jbyte flags) : _flags(flags) {}
    50   void set_flag(jbyte flag) const {
    51     _flags |= flag;
    52   }
    53   void clear_flag(jbyte flag) const {
    54     _flags &= (~flag);
    55   }
    56   jbyte flags() const { return _flags; }
    57   bool is_set(jbyte flag) const {
    58     return (_flags & flag) != 0;
    59   }
    60   jbyte* const flags_addr() const {
    61     return &_flags;
    62   }
    63 };
    65 #define DEFINE_TRACE_FLAG mutable JfrTraceFlag _trace_flags
    67 #define DEFINE_TRACE_FLAG_ACCESSOR                 \
    68   void set_trace_flag(jbyte flag) const {          \
    69     _trace_flags.set_flag(flag);                   \
    70   }                                                \
    71   jbyte trace_flags() const {                      \
    72     return _trace_flags.flags();                   \
    73   }                                                \
    74   bool is_trace_flag_set(jbyte flag) const {       \
    75     return _trace_flags.is_set(flag);              \
    76   }                                                \
    77   jbyte* const trace_flags_addr() const {          \
    78     return _trace_flags.flags_addr();              \
    79   }
    81 #endif // SHARE_VM_JFR_SUPPORT_JFRTRACEIDEXTENSION_HPP

mercurial