Wed, 27 Apr 2016 01:25:04 +0800
Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/
changeset: 6782:28b50d07f6f8
tag: jdk8u25-b17
aoqi@0 | 1 | <?xml version="1.0" encoding="utf-8"?> |
aoqi@0 | 2 | <!-- |
aoqi@0 | 3 | Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. |
aoqi@0 | 4 | DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
aoqi@0 | 5 | |
aoqi@0 | 6 | This code is free software; you can redistribute it and/or modify it |
aoqi@0 | 7 | under the terms of the GNU General Public License version 2 only, as |
aoqi@0 | 8 | published by the Free Software Foundation. |
aoqi@0 | 9 | |
aoqi@0 | 10 | This code is distributed in the hope that it will be useful, but WITHOUT |
aoqi@0 | 11 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
aoqi@0 | 12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
aoqi@0 | 13 | version 2 for more details (a copy is included in the LICENSE file that |
aoqi@0 | 14 | accompanied this code). |
aoqi@0 | 15 | |
aoqi@0 | 16 | You should have received a copy of the GNU General Public License version |
aoqi@0 | 17 | 2 along with this work; if not, write to the Free Software Foundation, |
aoqi@0 | 18 | Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
aoqi@0 | 19 | |
aoqi@0 | 20 | Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
aoqi@0 | 21 | or visit www.oracle.com if you need additional information or have any |
aoqi@0 | 22 | questions. |
aoqi@0 | 23 | --> |
aoqi@0 | 24 | |
aoqi@0 | 25 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> |
aoqi@0 | 26 | <xsl:import href="xsl_util.xsl"/> |
aoqi@0 | 27 | <xsl:output method="text" indent="no" omit-xml-declaration="yes"/> |
aoqi@0 | 28 | |
aoqi@0 | 29 | <xsl:template match="/"> |
aoqi@0 | 30 | <xsl:call-template name="file-header"/> |
aoqi@0 | 31 | |
aoqi@0 | 32 | #ifndef TRACEFILES_TRACEEVENTCLASSES_HPP |
aoqi@0 | 33 | #define TRACEFILES_TRACEEVENTCLASSES_HPP |
aoqi@0 | 34 | |
aoqi@0 | 35 | // On purpose outside the INCLUDE_TRACE |
aoqi@0 | 36 | // Some parts of traceEvent.hpp are used outside of |
aoqi@0 | 37 | // INCLUDE_TRACE |
aoqi@0 | 38 | |
aoqi@0 | 39 | #include "memory/resourceArea.hpp" |
aoqi@0 | 40 | #include "tracefiles/traceTypes.hpp" |
aoqi@0 | 41 | #include "trace/traceEvent.hpp" |
aoqi@0 | 42 | #include "utilities/macros.hpp" |
aoqi@0 | 43 | #include "utilities/ticks.hpp" |
aoqi@0 | 44 | |
aoqi@0 | 45 | #if INCLUDE_TRACE |
aoqi@0 | 46 | |
aoqi@0 | 47 | |
aoqi@0 | 48 | #include "trace/traceStream.hpp" |
aoqi@0 | 49 | #include "utilities/ostream.hpp" |
aoqi@0 | 50 | |
aoqi@0 | 51 | <xsl:apply-templates select="trace/events/struct" mode="trace"/> |
aoqi@0 | 52 | <xsl:apply-templates select="trace/events/event" mode="trace"/> |
aoqi@0 | 53 | |
aoqi@0 | 54 | #else |
aoqi@0 | 55 | |
aoqi@0 | 56 | class TraceEvent { |
aoqi@0 | 57 | public: |
aoqi@0 | 58 | TraceEvent() {} |
aoqi@0 | 59 | void set_starttime(const Ticks& time) {} |
aoqi@0 | 60 | void set_endtime(const Ticks& time) {} |
aoqi@0 | 61 | bool should_commit() const { return false; } |
aoqi@0 | 62 | void commit() const {} |
aoqi@0 | 63 | }; |
aoqi@0 | 64 | |
aoqi@0 | 65 | <xsl:apply-templates select="trace/events/struct" mode="empty"/> |
aoqi@0 | 66 | <xsl:apply-templates select="trace/events/event" mode="empty"/> |
aoqi@0 | 67 | |
aoqi@0 | 68 | #endif |
aoqi@0 | 69 | |
aoqi@0 | 70 | #endif |
aoqi@0 | 71 | </xsl:template> |
aoqi@0 | 72 | |
aoqi@0 | 73 | <xsl:template match="struct" mode="trace"> |
aoqi@0 | 74 | struct TraceStruct<xsl:value-of select="@id"/> |
aoqi@0 | 75 | { |
aoqi@0 | 76 | private: |
aoqi@0 | 77 | <xsl:apply-templates select="value" mode="write-fields"/> |
aoqi@0 | 78 | public: |
aoqi@0 | 79 | <xsl:apply-templates select="value" mode="write-setters"/> |
aoqi@0 | 80 | |
aoqi@0 | 81 | void writeStruct(TraceStream& ts) { |
aoqi@0 | 82 | <xsl:apply-templates select="value" mode="write-data"/> |
aoqi@0 | 83 | } |
aoqi@0 | 84 | }; |
aoqi@0 | 85 | |
aoqi@0 | 86 | </xsl:template> |
aoqi@0 | 87 | |
aoqi@0 | 88 | <xsl:template match="struct" mode="empty"> |
aoqi@0 | 89 | struct TraceStruct<xsl:value-of select="@id"/> |
aoqi@0 | 90 | { |
aoqi@0 | 91 | public: |
aoqi@0 | 92 | <xsl:apply-templates select="value" mode="write-empty-setters"/> |
aoqi@0 | 93 | }; |
aoqi@0 | 94 | </xsl:template> |
aoqi@0 | 95 | |
aoqi@0 | 96 | |
aoqi@0 | 97 | <xsl:template match="event" mode="empty"> |
aoqi@0 | 98 | <xsl:value-of select="concat('class Event', @id, ' : public TraceEvent')"/> |
aoqi@0 | 99 | { |
aoqi@0 | 100 | public: |
aoqi@0 | 101 | <xsl:value-of select="concat(' Event', @id, '(bool ignore=true) {}')"/> |
aoqi@0 | 102 | <xsl:text> |
aoqi@0 | 103 | </xsl:text> |
aoqi@0 | 104 | |
aoqi@0 | 105 | <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-empty-setters"/> |
aoqi@0 | 106 | }; |
aoqi@0 | 107 | |
aoqi@0 | 108 | </xsl:template> |
aoqi@0 | 109 | |
aoqi@0 | 110 | |
aoqi@0 | 111 | <xsl:template match="event" mode="trace"> |
aoqi@0 | 112 | <xsl:value-of select="concat('class Event', @id, ' : public TraceEvent<Event', @id, '>')"/> |
aoqi@0 | 113 | { |
aoqi@0 | 114 | public: |
aoqi@0 | 115 | static const bool hasThread = <xsl:value-of select="@has_thread"/>; |
aoqi@0 | 116 | static const bool hasStackTrace = <xsl:value-of select="@has_stacktrace"/>; |
aoqi@0 | 117 | static const bool isInstant = <xsl:value-of select="@is_instant"/>; |
aoqi@0 | 118 | static const bool isRequestable = <xsl:value-of select="@is_requestable"/>; |
aoqi@0 | 119 | static const TraceEventId eventId = <xsl:value-of select="concat('Trace', @id, 'Event')"/>; |
aoqi@0 | 120 | |
aoqi@0 | 121 | private: |
aoqi@0 | 122 | <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-fields"/> |
aoqi@0 | 123 | |
aoqi@0 | 124 | void writeEventContent(void) { |
aoqi@0 | 125 | TraceStream ts(*tty); |
aoqi@0 | 126 | ts.print("<xsl:value-of select="@label"/>: ["); |
aoqi@0 | 127 | <xsl:apply-templates select="value|structvalue" mode="write-data"/> |
aoqi@0 | 128 | ts.print("]\n"); |
aoqi@0 | 129 | } |
aoqi@0 | 130 | |
aoqi@0 | 131 | public: |
aoqi@0 | 132 | <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-setters"/> |
aoqi@0 | 133 | |
aoqi@0 | 134 | bool should_write(void) { |
aoqi@0 | 135 | return true; |
aoqi@0 | 136 | } |
aoqi@0 | 137 | <xsl:text> |
aoqi@0 | 138 | |
aoqi@0 | 139 | </xsl:text> |
aoqi@0 | 140 | <xsl:value-of select="concat(' Event', @id, '(EventStartTime timing=TIMED) : TraceEvent<Event', @id, '>(timing) {}', $newline)"/> |
aoqi@0 | 141 | void writeEvent(void) { |
aoqi@0 | 142 | ResourceMark rm; |
aoqi@0 | 143 | if (UseLockedTracing) { |
aoqi@0 | 144 | ttyLocker lock; |
aoqi@0 | 145 | writeEventContent(); |
aoqi@0 | 146 | } else { |
aoqi@0 | 147 | writeEventContent(); |
aoqi@0 | 148 | } |
aoqi@0 | 149 | } |
aoqi@0 | 150 | }; |
aoqi@0 | 151 | |
aoqi@0 | 152 | </xsl:template> |
aoqi@0 | 153 | |
aoqi@0 | 154 | <xsl:template match="value|transition_value|relation" mode="write-empty-setters"> |
aoqi@0 | 155 | <xsl:param name="cls"/> |
aoqi@0 | 156 | <xsl:variable name="type" select="@type"/> |
aoqi@0 | 157 | <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> |
aoqi@0 | 158 | <xsl:value-of select="concat(' void set_', @field, '(', $wt, ' value) { }')"/> |
aoqi@0 | 159 | <xsl:if test="position() != last()"> |
aoqi@0 | 160 | <xsl:text> |
aoqi@0 | 161 | </xsl:text> |
aoqi@0 | 162 | </xsl:if> |
aoqi@0 | 163 | </xsl:template> |
aoqi@0 | 164 | |
aoqi@0 | 165 | <xsl:template match="structvalue" mode="write-empty-setters"> |
aoqi@0 | 166 | <xsl:param name="cls"/> |
aoqi@0 | 167 | <xsl:value-of select="concat(' void set_', @field, '(const TraceStruct', @type, '& value) { }')"/> |
aoqi@0 | 168 | <xsl:if test="position() != last()"> |
aoqi@0 | 169 | <xsl:text> |
aoqi@0 | 170 | </xsl:text> |
aoqi@0 | 171 | </xsl:if> |
aoqi@0 | 172 | </xsl:template> |
aoqi@0 | 173 | |
aoqi@0 | 174 | <xsl:template match="value[@type='TICKS']" mode="write-setters"> |
aoqi@0 | 175 | #if INCLUDE_TRACE |
aoqi@0 | 176 | <xsl:value-of select="concat(' void set_', @field, '(const Ticks& time) { _', @field, ' = time; }')"/> |
aoqi@0 | 177 | #else |
aoqi@0 | 178 | <xsl:value-of select="concat(' void set_', @field, '(const Ticks& ignore) {}')"/> |
aoqi@0 | 179 | #endif |
aoqi@0 | 180 | </xsl:template> |
aoqi@0 | 181 | |
aoqi@0 | 182 | <xsl:template match="value[@type='TICKSPAN']" mode="write-setters"> |
aoqi@0 | 183 | #if INCLUDE_TRACE |
aoqi@0 | 184 | <xsl:value-of select="concat(' void set_', @field, '(const Tickspan& time) { _', @field, ' = time; }')"/> |
aoqi@0 | 185 | #else |
aoqi@0 | 186 | <xsl:value-of select="concat(' void set_', @field, '(const Tickspan& ignore) {}')"/> |
aoqi@0 | 187 | #endif |
aoqi@0 | 188 | </xsl:template> |
aoqi@0 | 189 | |
aoqi@0 | 190 | |
aoqi@0 | 191 | <xsl:template match="value" mode="write-fields"> |
aoqi@0 | 192 | <xsl:variable name="type" select="@type"/> |
aoqi@0 | 193 | <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> |
aoqi@0 | 194 | <xsl:value-of select="concat(' ', $wt, ' _', @field, ';')"/> |
aoqi@0 | 195 | <xsl:if test="position() != last()"> |
aoqi@0 | 196 | <xsl:text> |
aoqi@0 | 197 | </xsl:text> |
aoqi@0 | 198 | </xsl:if> |
aoqi@0 | 199 | </xsl:template> |
aoqi@0 | 200 | |
aoqi@0 | 201 | <xsl:template match="structvalue" mode="write-fields"> |
aoqi@0 | 202 | <xsl:value-of select="concat(' TraceStruct', @type, ' _', @field, ';')"/> |
aoqi@0 | 203 | <xsl:text> |
aoqi@0 | 204 | </xsl:text> |
aoqi@0 | 205 | </xsl:template> |
aoqi@0 | 206 | |
aoqi@0 | 207 | <xsl:template match="value|transition_value|relation" mode="write-setters"> |
aoqi@0 | 208 | <xsl:param name="cls"/> |
aoqi@0 | 209 | <xsl:variable name="type" select="@type"/> |
aoqi@0 | 210 | <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> |
aoqi@0 | 211 | <xsl:value-of select="concat(' void set_', @field, '(', $wt, ' value) { this->_', @field, ' = value; }')"/> |
aoqi@0 | 212 | <xsl:if test="position() != last()"> |
aoqi@0 | 213 | <xsl:text> |
aoqi@0 | 214 | </xsl:text> |
aoqi@0 | 215 | </xsl:if> |
aoqi@0 | 216 | </xsl:template> |
aoqi@0 | 217 | |
aoqi@0 | 218 | <xsl:template match="structvalue" mode="write-setters"> |
aoqi@0 | 219 | <xsl:param name="cls"/> |
aoqi@0 | 220 | <xsl:value-of select="concat(' void set_', @field, '(const TraceStruct', @type, '& value) { this->_', @field, ' = value; }')"/> |
aoqi@0 | 221 | <xsl:if test="position() != last()"> |
aoqi@0 | 222 | <xsl:text> |
aoqi@0 | 223 | </xsl:text> |
aoqi@0 | 224 | </xsl:if> |
aoqi@0 | 225 | </xsl:template> |
aoqi@0 | 226 | |
aoqi@0 | 227 | <xsl:template match="value" mode="write-data"> |
aoqi@0 | 228 | <xsl:variable name="type" select="@type"/> |
aoqi@0 | 229 | <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@writetype"/> |
aoqi@0 | 230 | <xsl:choose> |
aoqi@0 | 231 | <xsl:when test="@type='TICKSPAN'"> |
aoqi@0 | 232 | <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, '.value());')"/> |
aoqi@0 | 233 | </xsl:when> |
aoqi@0 | 234 | <xsl:when test="@type='TICKS'"> |
aoqi@0 | 235 | <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, '.value());')"/> |
aoqi@0 | 236 | </xsl:when> |
aoqi@0 | 237 | <xsl:otherwise> |
aoqi@0 | 238 | <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, ');')"/> |
aoqi@0 | 239 | </xsl:otherwise> |
aoqi@0 | 240 | </xsl:choose> |
aoqi@0 | 241 | <xsl:if test="position() != last()"> |
aoqi@0 | 242 | <xsl:text> |
aoqi@0 | 243 | ts.print(", "); |
aoqi@0 | 244 | </xsl:text> |
aoqi@0 | 245 | </xsl:if> |
aoqi@0 | 246 | </xsl:template> |
aoqi@0 | 247 | |
aoqi@0 | 248 | <xsl:template match="structvalue" mode="write-data"> |
aoqi@0 | 249 | <xsl:value-of select="concat(' _', @field, '.writeStruct(ts);')"/> |
aoqi@0 | 250 | <xsl:if test="position() != last()"> |
aoqi@0 | 251 | <xsl:text> |
aoqi@0 | 252 | ts.print(", "); |
aoqi@0 | 253 | </xsl:text> |
aoqi@0 | 254 | </xsl:if> |
aoqi@0 | 255 | </xsl:template> |
aoqi@0 | 256 | |
aoqi@0 | 257 | </xsl:stylesheet> |