src/share/vm/trace/traceEventClasses.xsl

Print this page
rev 4501 : 8014478: EnableTracing: output from multiple threads may be mixed together
Reviewed-by: dholmes, rbackman
Contributed-by: yunda.mly@taobao.com

@@ -117,10 +117,17 @@
   static const TraceEventId eventId = <xsl:value-of select="concat('Trace', @id, 'Event')"/>;
 
  private:
 <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-fields"/>
 
+  void writeEventContent(void) {
+    TraceStream ts(*tty);
+    ts.print("<xsl:value-of select="@label"/>: [");
+<xsl:apply-templates select="value|structvalue" mode="write-data"/>
+    ts.print("]\n");
+  }
+
  public:
 <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-setters"/>
 
   bool should_write(void) {
     return true;

@@ -130,15 +137,18 @@
 </xsl:text>
   <xsl:value-of select="concat('  Event', @id, '(EventStartTime timing=TIMED) : TraceEvent&lt;Event', @id, '&gt;(timing) {}', $newline)"/>
   void writeEvent(void) {
     ResourceMark rm;
     HandleMark hm;
-    TraceStream ts(*tty);
-    ts.print("<xsl:value-of select="@label"/>: [");
-<xsl:apply-templates select="value|structvalue" mode="write-data"/>
-    ts.print("]\n");
+    if (UseLockedTracing) {
+      ttyLocker lock;
+      writeEventContent();
+    } else {
+      writeEventContent();
   }
+  }
+
 };
 
 </xsl:template>
 
 <xsl:template match="value|transition_value|relation" mode="write-empty-setters">