@@ -208,6 +208,7 @@ private [profile] class RealProfiler(reporter : ProfileReporter)(using Context)
208
208
}
209
209
210
210
reporter.header(this )
211
+ traceCounters()
211
212
212
213
override def finished (): Unit = {
213
214
// we may miss a GC event if gc is occurring as we call this
@@ -253,11 +254,11 @@ private [profile] class RealProfiler(reporter : ProfileReporter)(using Context)
253
254
override def afterPhase (event : TracedEventId , phase : Phase , snapBefore : ProfileSnap ): Unit = {
254
255
assert(mainThread eq Thread .currentThread())
255
256
val initialSnap = RealProfiler .snapThread(0 )
256
- if (ctx.settings.YprofileExternalTool .value.contains(phase.toString )) {
257
+ if (ctx.settings.YprofileExternalTool .value.contains(phase.phaseName )) {
257
258
println(" Profile hook stop" )
258
259
ExternalToolHook .after()
259
260
}
260
- val finalSnap = if (ctx.settings.YprofileRunGcBetweenPhases .value.contains(phase.toString )) {
261
+ val finalSnap = if (ctx.settings.YprofileRunGcBetweenPhases .value.contains(phase.phaseName )) {
261
262
doGC()
262
263
initialSnap.updateHeap(RealProfiler .readHeapUsage())
263
264
}
@@ -270,9 +271,9 @@ private [profile] class RealProfiler(reporter : ProfileReporter)(using Context)
270
271
override def beforePhase (phase : Phase ): (TracedEventId , ProfileSnap ) = {
271
272
assert(mainThread eq Thread .currentThread())
272
273
val eventId = traceDurationStart(Category .Phase , phase.phaseName)
273
- if (ctx.settings.YprofileRunGcBetweenPhases .value.contains(phase.toString ))
274
+ if (ctx.settings.YprofileRunGcBetweenPhases .value.contains(phase.phaseName ))
274
275
doGC()
275
- if (ctx.settings.YprofileExternalTool .value.contains(phase.toString )) {
276
+ if (ctx.settings.YprofileExternalTool .value.contains(phase.phaseName )) {
276
277
println(" Profile hook start" )
277
278
ExternalToolHook .before()
278
279
}
@@ -290,17 +291,20 @@ private [profile] class RealProfiler(reporter : ProfileReporter)(using Context)
290
291
val now = System .nanoTime()
291
292
traceDurationEnd(Category .File , event)
292
293
if now > nextAfterUnitSnap then
293
- val initialSnap = RealProfiler .snapThread(0 )
294
- chromeTrace.traceCounterEvent(" allocBytes" , " allocBytes" , initialSnap.allocatedBytes, processWide = false )
295
- chromeTrace.traceCounterEvent(" heapBytes" , " heapBytes" , initialSnap.heapBytes, processWide = true )
296
- chromeTrace.traceCounterEvent(" classesLoaded" , " classesLoaded" , initialSnap.totalClassesLoaded, processWide = true )
297
- chromeTrace.traceCounterEvent(" jitCompilationTime" , " jitCompilationTime" , initialSnap.totalJITCompilationTime, processWide = true )
298
- chromeTrace.traceCounterEvent(" userTime" , " userTime" , initialSnap.userTimeNanos, processWide = false )
299
- chromeTrace.traceCounterEvent(" cpuTime" , " cpuTime" , initialSnap.cpuTimeNanos, processWide = false )
300
- chromeTrace.traceCounterEvent(" idleTime" , " idleTime" , initialSnap.idleTimeNanos, processWide = false )
294
+ traceCounters()
301
295
nextAfterUnitSnap = System .nanoTime() + 10 * 1000 * 1000
302
296
}
303
297
298
+ private def traceCounters (): Unit = if chromeTrace != null then
299
+ val snap = RealProfiler .snapThread(0 )
300
+ chromeTrace.traceCounterEvent(" allocBytes" , " allocBytes" , snap.allocatedBytes, processWide = false )
301
+ chromeTrace.traceCounterEvent(" heapBytes" , " heapBytes" , snap.heapBytes, processWide = true )
302
+ chromeTrace.traceCounterEvent(" classesLoaded" , " classesLoaded" , snap.totalClassesLoaded, processWide = true )
303
+ chromeTrace.traceCounterEvent(" jitCompilationTime" , " jitCompilationTime" , snap.totalJITCompilationTime, processWide = true )
304
+ chromeTrace.traceCounterEvent(" userTime" , " userTime" , snap.userTimeNanos, processWide = false )
305
+ chromeTrace.traceCounterEvent(" cpuTime" , " cpuTime" , snap.cpuTimeNanos, processWide = false )
306
+ chromeTrace.traceCounterEvent(" idleTime" , " idleTime" , snap.idleTimeNanos, processWide = false )
307
+
304
308
override def beforeTypedDef (sym : Symbol ): TracedEventId = traceDurationStart(Category .TypeCheck , symbolName(sym))
305
309
override def afterTypedDef (event : TracedEventId ): Unit = traceDurationEnd(Category .TypeCheck , event)
306
310
0 commit comments