Skip to content

Instantly share code, notes, and snippets.

@fwbrasil
Last active June 10, 2023 23:58
Show Gist options
  • Save fwbrasil/d9858080d9da0a20d6191b7170a298e4 to your computer and use it in GitHub Desktop.
Save fwbrasil/d9858080d9da0a20d6191b7170a298e4 to your computer and use it in GitHub Desktop.
[
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.BroadFlatMapBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 15666.653543902767,
"scoreError" : 10798.174759569984,
"scoreConfidence" : [
4868.478784332783,
26464.82830347275
],
"scorePercentiles" : {
"0.0" : 14993.196633302143,
"50.0" : 15902.540640284898,
"90.0" : 16104.223358121262,
"95.0" : 16104.223358121262,
"99.0" : 16104.223358121262,
"99.9" : 16104.223358121262,
"99.99" : 16104.223358121262,
"99.999" : 16104.223358121262,
"99.9999" : 16104.223358121262,
"100.0" : 16104.223358121262
},
"scoreUnit" : "ops/s",
"rawData" : [
[
14993.196633302143,
16104.223358121262,
15902.540640284898
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.BroadFlatMapBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 21700.712656380954,
"scoreError" : 1557.7877035269794,
"scoreConfidence" : [
20142.924952853973,
23258.500359907935
],
"scorePercentiles" : {
"0.0" : 21605.35546128083,
"50.0" : 21726.681893402067,
"90.0" : 21770.100614459963,
"95.0" : 21770.100614459963,
"99.0" : 21770.100614459963,
"99.9" : 21770.100614459963,
"99.99" : 21770.100614459963,
"99.999" : 21770.100614459963,
"99.9999" : 21770.100614459963,
"100.0" : 21770.100614459963
},
"scoreUnit" : "ops/s",
"rawData" : [
[
21770.100614459963,
21726.681893402067,
21605.35546128083
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ChainedForkBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 855.7424896103815,
"scoreError" : 150.3528856187157,
"scoreConfidence" : [
705.3896039916658,
1006.0953752290973
],
"scorePercentiles" : {
"0.0" : 849.9997033491047,
"50.0" : 852.042342748656,
"90.0" : 865.185422733384,
"95.0" : 865.185422733384,
"99.0" : 865.185422733384,
"99.9" : 865.185422733384,
"99.99" : 865.185422733384,
"99.999" : 865.185422733384,
"99.9999" : 865.185422733384,
"100.0" : 865.185422733384
},
"scoreUnit" : "ops/s",
"rawData" : [
[
852.042342748656,
865.185422733384,
849.9997033491047
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ChainedForkBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 819.2495331440269,
"scoreError" : 140.53244466370967,
"scoreConfidence" : [
678.7170884803172,
959.7819778077367
],
"scorePercentiles" : {
"0.0" : 813.8837594937016,
"50.0" : 815.7888501876947,
"90.0" : 828.0759897506847,
"95.0" : 828.0759897506847,
"99.0" : 828.0759897506847,
"99.9" : 828.0759897506847,
"99.99" : 828.0759897506847,
"99.999" : 828.0759897506847,
"99.9999" : 828.0759897506847,
"100.0" : 828.0759897506847
},
"scoreUnit" : "ops/s",
"rawData" : [
[
813.8837594937016,
815.7888501876947,
828.0759897506847
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CollectAllBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 8717.687767906878,
"scoreError" : 1046.9996602498795,
"scoreConfidence" : [
7670.688107656999,
9764.687428156758
],
"scorePercentiles" : {
"0.0" : 8669.603942346768,
"50.0" : 8702.23887570529,
"90.0" : 8781.220485668578,
"95.0" : 8781.220485668578,
"99.0" : 8781.220485668578,
"99.9" : 8781.220485668578,
"99.99" : 8781.220485668578,
"99.999" : 8781.220485668578,
"99.9999" : 8781.220485668578,
"100.0" : 8781.220485668578
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8702.23887570529,
8669.603942346768,
8781.220485668578
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CollectAllBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 8784.809699057818,
"scoreError" : 1026.9717169763373,
"scoreConfidence" : [
7757.837982081481,
9811.781416034155
],
"scorePercentiles" : {
"0.0" : 8743.724246913755,
"50.0" : 8761.731853216761,
"90.0" : 8848.972997042936,
"95.0" : 8848.972997042936,
"99.0" : 8848.972997042936,
"99.9" : 8848.972997042936,
"99.99" : 8848.972997042936,
"99.999" : 8848.972997042936,
"99.9999" : 8848.972997042936,
"100.0" : 8848.972997042936
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8743.724246913755,
8761.731853216761,
8848.972997042936
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CountdownLatchBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1462.219326519762,
"scoreError" : 163.81139712961402,
"scoreConfidence" : [
1298.407929390148,
1626.0307236493761
],
"scorePercentiles" : {
"0.0" : 1452.1702850815752,
"50.0" : 1465.0334149038488,
"90.0" : 1469.4542795738619,
"95.0" : 1469.4542795738619,
"99.0" : 1469.4542795738619,
"99.9" : 1469.4542795738619,
"99.99" : 1469.4542795738619,
"99.999" : 1469.4542795738619,
"99.9999" : 1469.4542795738619,
"100.0" : 1469.4542795738619
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1465.0334149038488,
1469.4542795738619,
1452.1702850815752
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CountdownLatchBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1469.6872677564977,
"scoreError" : 81.07984470929098,
"scoreConfidence" : [
1388.6074230472068,
1550.7671124657886
],
"scorePercentiles" : {
"0.0" : 1465.3982444686967,
"50.0" : 1469.391563157877,
"90.0" : 1474.2719956429196,
"95.0" : 1474.2719956429196,
"99.0" : 1474.2719956429196,
"99.9" : 1474.2719956429196,
"99.99" : 1474.2719956429196,
"99.999" : 1474.2719956429196,
"99.9999" : 1474.2719956429196,
"100.0" : 1474.2719956429196
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1469.391563157877,
1474.2719956429196,
1465.3982444686967
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 14125.24077323075,
"scoreError" : 4255.135865423188,
"scoreConfidence" : [
9870.104907807561,
18380.376638653936
],
"scorePercentiles" : {
"0.0" : 13903.297110266638,
"50.0" : 14104.091871514795,
"90.0" : 14368.333337910817,
"95.0" : 14368.333337910817,
"99.0" : 14368.333337910817,
"99.9" : 14368.333337910817,
"99.99" : 14368.333337910817,
"99.999" : 14368.333337910817,
"99.9999" : 14368.333337910817,
"100.0" : 14368.333337910817
},
"scoreUnit" : "ops/s",
"rawData" : [
[
14104.091871514795,
13903.297110266638,
14368.333337910817
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 14085.919075807673,
"scoreError" : 1494.2418397131462,
"scoreConfidence" : [
12591.677236094527,
15580.160915520819
],
"scorePercentiles" : {
"0.0" : 13998.713072241528,
"50.0" : 14097.825523195652,
"90.0" : 14161.218631985845,
"95.0" : 14161.218631985845,
"99.0" : 14161.218631985845,
"99.9" : 14161.218631985845,
"99.99" : 14161.218631985845,
"99.999" : 14161.218631985845,
"99.9999" : 14161.218631985845,
"100.0" : 14161.218631985845
},
"scoreUnit" : "ops/s",
"rawData" : [
[
14097.825523195652,
14161.218631985845,
13998.713072241528
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindMapBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 361.8450615475563,
"scoreError" : 220.27456804368046,
"scoreConfidence" : [
141.57049350387587,
582.1196295912368
],
"scorePercentiles" : {
"0.0" : 348.50601746417175,
"50.0" : 365.00264414497434,
"90.0" : 372.026523033523,
"95.0" : 372.026523033523,
"99.0" : 372.026523033523,
"99.9" : 372.026523033523,
"99.99" : 372.026523033523,
"99.999" : 372.026523033523,
"99.9999" : 372.026523033523,
"100.0" : 372.026523033523
},
"scoreUnit" : "ops/s",
"rawData" : [
[
372.026523033523,
348.50601746417175,
365.00264414497434
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindMapBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 405.55151882318495,
"scoreError" : 60.302158666051334,
"scoreConfidence" : [
345.2493601571336,
465.8536774892363
],
"scorePercentiles" : {
"0.0" : 402.32592584382644,
"50.0" : 405.39736910827054,
"90.0" : 408.93126151745776,
"95.0" : 408.93126151745776,
"99.0" : 408.93126151745776,
"99.9" : 408.93126151745776,
"99.99" : 408.93126151745776,
"99.999" : 408.93126151745776,
"99.9999" : 408.93126151745776,
"100.0" : 408.93126151745776
},
"scoreUnit" : "ops/s",
"rawData" : [
[
402.32592584382644,
408.93126151745776,
405.39736910827054
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.EnqueueDequeueBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 471.1899089644991,
"scoreError" : 56.56805586892365,
"scoreConfidence" : [
414.6218530955755,
527.7579648334228
],
"scorePercentiles" : {
"0.0" : 469.3648390719984,
"50.0" : 469.43484316739716,
"90.0" : 474.77004465410175,
"95.0" : 474.77004465410175,
"99.0" : 474.77004465410175,
"99.9" : 474.77004465410175,
"99.99" : 474.77004465410175,
"99.999" : 474.77004465410175,
"99.9999" : 474.77004465410175,
"100.0" : 474.77004465410175
},
"scoreUnit" : "ops/s",
"rawData" : [
[
469.43484316739716,
469.3648390719984,
474.77004465410175
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.EnqueueDequeueBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 444.8297521561767,
"scoreError" : 50.66449158528736,
"scoreConfidence" : [
394.16526057088936,
495.49424374146406
],
"scorePercentiles" : {
"0.0" : 441.9300012905254,
"50.0" : 445.09395383983895,
"90.0" : 447.46530133816594,
"95.0" : 447.46530133816594,
"99.0" : 447.46530133816594,
"99.9" : 447.46530133816594,
"99.99" : 447.46530133816594,
"99.999" : 447.46530133816594,
"99.9999" : 447.46530133816594,
"100.0" : 447.46530133816594
},
"scoreUnit" : "ops/s",
"rawData" : [
[
441.9300012905254,
447.46530133816594,
445.09395383983895
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ForkManyBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 716.7467466568297,
"scoreError" : 68.37571366272071,
"scoreConfidence" : [
648.371032994109,
785.1224603195504
],
"scorePercentiles" : {
"0.0" : 713.68876318513,
"50.0" : 715.6236950049712,
"90.0" : 720.9277817803879,
"95.0" : 720.9277817803879,
"99.0" : 720.9277817803879,
"99.9" : 720.9277817803879,
"99.99" : 720.9277817803879,
"99.999" : 720.9277817803879,
"99.9999" : 720.9277817803879,
"100.0" : 720.9277817803879
},
"scoreUnit" : "ops/s",
"rawData" : [
[
713.68876318513,
720.9277817803879,
715.6236950049712
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ForkManyBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 731.5230337433446,
"scoreError" : 6.669356720545339,
"scoreConfidence" : [
724.8536770227993,
738.19239046389
],
"scorePercentiles" : {
"0.0" : 731.2174357446999,
"50.0" : 731.4236447507492,
"90.0" : 731.928020734585,
"95.0" : 731.928020734585,
"99.0" : 731.928020734585,
"99.9" : 731.928020734585,
"99.99" : 731.928020734585,
"99.999" : 731.928020734585,
"99.9999" : 731.928020734585,
"100.0" : 731.928020734585
},
"scoreUnit" : "ops/s",
"rawData" : [
[
731.4236447507492,
731.2174357446999,
731.928020734585
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.InterruptBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 2140.450694287805,
"scoreError" : 157.09058598807619,
"scoreConfidence" : [
1983.360108299729,
2297.5412802758815
],
"scorePercentiles" : {
"0.0" : 2133.5172746484727,
"50.0" : 2137.745749347047,
"90.0" : 2150.089058867895,
"95.0" : 2150.089058867895,
"99.0" : 2150.089058867895,
"99.9" : 2150.089058867895,
"99.99" : 2150.089058867895,
"99.999" : 2150.089058867895,
"99.9999" : 2150.089058867895,
"100.0" : 2150.089058867895
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2137.745749347047,
2150.089058867895,
2133.5172746484727
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.InterruptBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 2338.4405873079754,
"scoreError" : 142.99641776266975,
"scoreConfidence" : [
2195.4441695453056,
2481.4370050706452
],
"scorePercentiles" : {
"0.0" : 2330.6469069935906,
"50.0" : 2338.352458760415,
"90.0" : 2346.3223961699205,
"95.0" : 2346.3223961699205,
"99.0" : 2346.3223961699205,
"99.9" : 2346.3223961699205,
"99.99" : 2346.3223961699205,
"99.999" : 2346.3223961699205,
"99.9999" : 2346.3223961699205,
"100.0" : 2346.3223961699205
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2330.6469069935906,
2346.3223961699205,
2338.352458760415
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 8451.312259367398,
"scoreError" : 154.0996142160261,
"scoreConfidence" : [
8297.212645151372,
8605.411873583424
],
"scorePercentiles" : {
"0.0" : 8443.760236459522,
"50.0" : 8449.74296553799,
"90.0" : 8460.433576104684,
"95.0" : 8460.433576104684,
"99.0" : 8460.433576104684,
"99.9" : 8460.433576104684,
"99.99" : 8460.433576104684,
"99.999" : 8460.433576104684,
"99.9999" : 8460.433576104684,
"100.0" : 8460.433576104684
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8443.760236459522,
8449.74296553799,
8460.433576104684
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 8652.976490064126,
"scoreError" : 176.0838175411048,
"scoreConfidence" : [
8476.892672523021,
8829.06030760523
],
"scorePercentiles" : {
"0.0" : 8645.648598667542,
"50.0" : 8649.368383148203,
"90.0" : 8663.912488376634,
"95.0" : 8663.912488376634,
"99.0" : 8663.912488376634,
"99.9" : 8663.912488376634,
"99.99" : 8663.912488376634,
"99.999" : 8663.912488376634,
"99.9999" : 8663.912488376634,
"100.0" : 8663.912488376634
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8649.368383148203,
8663.912488376634,
8645.648598667542
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindMapBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 434.28026274770474,
"scoreError" : 98.56507162129004,
"scoreConfidence" : [
335.7151911264147,
532.8453343689948
],
"scorePercentiles" : {
"0.0" : 428.0674020842017,
"50.0" : 436.8975427891693,
"90.0" : 437.8758433697434,
"95.0" : 437.8758433697434,
"99.0" : 437.8758433697434,
"99.9" : 437.8758433697434,
"99.99" : 437.8758433697434,
"99.999" : 437.8758433697434,
"99.9999" : 437.8758433697434,
"100.0" : 437.8758433697434
},
"scoreUnit" : "ops/s",
"rawData" : [
[
428.0674020842017,
437.8758433697434,
436.8975427891693
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindMapBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 410.4575457275112,
"scoreError" : 178.62425111943395,
"scoreConfidence" : [
231.83329460807727,
589.0817968469452
],
"scorePercentiles" : {
"0.0" : 399.84485939486507,
"50.0" : 412.38871373529787,
"90.0" : 419.1390640523707,
"95.0" : 419.1390640523707,
"99.0" : 419.1390640523707,
"99.9" : 419.1390640523707,
"99.99" : 419.1390640523707,
"99.999" : 419.1390640523707,
"99.9999" : 419.1390640523707,
"100.0" : 419.1390640523707
},
"scoreUnit" : "ops/s",
"rawData" : [
[
419.1390640523707,
412.38871373529787,
399.84485939486507
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.PingPongBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1082.3205511472681,
"scoreError" : 60.42700590583777,
"scoreConfidence" : [
1021.8935452414304,
1142.747557053106
],
"scorePercentiles" : {
"0.0" : 1079.2923662772198,
"50.0" : 1081.8114543270597,
"90.0" : 1085.857832837525,
"95.0" : 1085.857832837525,
"99.0" : 1085.857832837525,
"99.9" : 1085.857832837525,
"99.99" : 1085.857832837525,
"99.999" : 1085.857832837525,
"99.9999" : 1085.857832837525,
"100.0" : 1085.857832837525
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1085.857832837525,
1079.2923662772198,
1081.8114543270597
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.PingPongBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1073.586024135375,
"scoreError" : 56.593538575467505,
"scoreConfidence" : [
1016.9924855599075,
1130.1795627108427
],
"scorePercentiles" : {
"0.0" : 1070.0179022587163,
"50.0" : 1075.0975093957377,
"90.0" : 1075.6426607516717,
"95.0" : 1075.6426607516717,
"99.0" : 1075.6426607516717,
"99.9" : 1075.6426607516717,
"99.99" : 1075.6426607516717,
"99.999" : 1075.6426607516717,
"99.9999" : 1075.6426607516717,
"100.0" : 1075.6426607516717
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1075.0975093957377,
1075.6426607516717,
1070.0179022587163
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ProducerConsumerBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 887.6698876487994,
"scoreError" : 112.30898757768546,
"scoreConfidence" : [
775.360900071114,
999.9788752264849
],
"scorePercentiles" : {
"0.0" : 881.179846263989,
"50.0" : 888.4036768000216,
"90.0" : 893.4261398823876,
"95.0" : 893.4261398823876,
"99.0" : 893.4261398823876,
"99.9" : 893.4261398823876,
"99.99" : 893.4261398823876,
"99.999" : 893.4261398823876,
"99.9999" : 893.4261398823876,
"100.0" : 893.4261398823876
},
"scoreUnit" : "ops/s",
"rawData" : [
[
881.179846263989,
893.4261398823876,
888.4036768000216
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ProducerConsumerBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 871.1011000954487,
"scoreError" : 128.67014216269834,
"scoreConfidence" : [
742.4309579327504,
999.771242258147
],
"scorePercentiles" : {
"0.0" : 863.7383632849006,
"50.0" : 871.768302292385,
"90.0" : 877.7966347090605,
"95.0" : 877.7966347090605,
"99.0" : 877.7966347090605,
"99.9" : 877.7966347090605,
"99.99" : 877.7966347090605,
"99.999" : 877.7966347090605,
"99.9999" : 877.7966347090605,
"100.0" : 877.7966347090605
},
"scoreUnit" : "ops/s",
"rawData" : [
[
863.7383632849006,
871.768302292385,
877.7966347090605
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SemaphoreBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 504.2472614680694,
"scoreError" : 127.49495919768928,
"scoreConfidence" : [
376.7523022703801,
631.7422206657586
],
"scorePercentiles" : {
"0.0" : 496.68173925521046,
"50.0" : 505.59891293276064,
"90.0" : 510.46113221623705,
"95.0" : 510.46113221623705,
"99.0" : 510.46113221623705,
"99.9" : 510.46113221623705,
"99.99" : 510.46113221623705,
"99.999" : 510.46113221623705,
"99.9999" : 510.46113221623705,
"100.0" : 510.46113221623705
},
"scoreUnit" : "ops/s",
"rawData" : [
[
496.68173925521046,
505.59891293276064,
510.46113221623705
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SemaphoreBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 457.58798700004974,
"scoreError" : 8.982426732947413,
"scoreConfidence" : [
448.6055602671023,
466.57041373299717
],
"scorePercentiles" : {
"0.0" : 457.2281170945115,
"50.0" : 457.38675824649425,
"90.0" : 458.1490856591434,
"95.0" : 458.1490856591434,
"99.0" : 458.1490856591434,
"99.9" : 458.1490856591434,
"99.99" : 458.1490856591434,
"99.999" : 458.1490856591434,
"99.9999" : 458.1490856591434,
"100.0" : 458.1490856591434
},
"scoreUnit" : "ops/s",
"rawData" : [
[
458.1490856591434,
457.38675824649425,
457.2281170945115
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SuspensionBench.forkCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 59634.344417967455,
"scoreError" : 17522.705188450935,
"scoreConfidence" : [
42111.63922951652,
77157.04960641838
],
"scorePercentiles" : {
"0.0" : 58623.67362626062,
"50.0" : 59744.1705820438,
"90.0" : 60535.189045597945,
"95.0" : 60535.189045597945,
"99.0" : 60535.189045597945,
"99.9" : 60535.189045597945,
"99.99" : 60535.189045597945,
"99.999" : 60535.189045597945,
"99.9999" : 60535.189045597945,
"100.0" : 60535.189045597945
},
"scoreUnit" : "ops/s",
"rawData" : [
[
58623.67362626062,
59744.1705820438,
60535.189045597945
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SuspensionBench.syncCats",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/home/runner/.jabba/jdk/openjdk@1.17.0/bin/java",
"jvmArgs" : [
"-Dcats.effect.tracing.mode=DISABLED"
],
"jdkVersion" : "17",
"vmName" : "OpenJDK 64-Bit Server VM",
"vmVersion" : "17+35-2724",
"warmupIterations" : 10,
"warmupTime" : "1 s",
"warmupBatchSize" : 1,
"measurementIterations" : 3,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 57046.265806480085,
"scoreError" : 63779.65075169312,
"scoreConfidence" : [
-6733.384945213038,
120825.91655817321
],
"scorePercentiles" : {
"0.0" : 53598.001557570744,
"50.0" : 56952.71629290597,
"90.0" : 60588.079568963556,
"95.0" : 60588.079568963556,
"99.0" : 60588.079568963556,
"99.9" : 60588.079568963556,
"99.99" : 60588.079568963556,
"99.999" : 60588.079568963556,
"99.9999" : 60588.079568963556,
"100.0" : 60588.079568963556
},
"scoreUnit" : "ops/s",
"rawData" : [
[
60588.079568963556,
53598.001557570744,
56952.71629290597
]
]
},
"secondaryMetrics" : {
}
}
]
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,9460,3,'all')
f(1,0,8475,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,8475,1,'cats/effect/IOFiber.run')
f(3,0,6119,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,6119,1,'cats/effect/IOFiber.runLoop')
f(5,0,1645,1,'cats/effect/IOFiber.next$2')
f(6,0,1165,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b098.apply')
f(7,0,1165,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,0,538,1,'cats/effect/IO.flatMap')
f(9,0,538,1,'cats/effect/IO$FlatMap$.apply')
f(10,0,538,2,'cats.effect.IO$FlatMap')
f(8,538,314,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,538,314,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,538,314,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,538,314,2,'kyo.bench.BroadFlatMapBench$$Lambda$95+0x0000000800d5b668')
f(8,852,313,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,852,313,1,'cats/effect/IO$.pure')
f(10,852,313,1,'cats/effect/IO$Pure$.apply')
f(11,852,313,2,'cats.effect.IO$Pure')
f(6,1165,480,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,1165,480,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,1165,480,1,'cats/effect/IO$.pure')
f(9,1165,480,1,'cats/effect/IO$Pure$.apply')
f(10,1165,480,2,'cats.effect.IO$Pure')
f(5,1645,4474,1,'cats/effect/IOFiber.succeeded')
f(6,1645,10,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,1645,2,1,'cats/effect/IO$.pure')
f(8,1645,2,1,'cats/effect/IO$Pure$.apply')
f(9,1645,2,2,'cats.effect.IO$Pure')
f(7,1647,8,1,'cats/effect/IOFiber.done')
f(8,1647,5,1,'cats/effect/CallbackStack.apply')
f(9,1647,5,1,'scala/runtime/function/JProcedure1.apply')
f(10,1647,5,1,'scala/runtime/function/JProcedure1.apply')
f(11,1647,5,1,'cats/effect/IO$$Lambda$90.0x0000000800d58ba8.applyVoid')
f(12,1647,5,1,'cats/effect/IO.$anonfun$6')
f(13,1647,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,1647,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,1647,1,1,'cats/effect/kernel/Outcome.fold')
f(16,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,1647,1,1,'cats/effect/IO$$Lambda$98.0x0000000800d5e6c8.applyVoid')
f(19,1647,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,1647,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,1647,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,1647,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,1647,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55568.applyVoid')
f(27,1647,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,1647,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,1647,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,1647,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,1647,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,1647,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,1647,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,1647,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,1648,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,1648,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,1648,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,1648,3,2,'cats.effect.IO$$Lambda$97+0x0000000800d5e2c0')
f(16,1651,1,2,'cats.effect.IO$$Lambda$98+0x0000000800d5e6c8')
f(8,1652,3,1,'cats/effect/IO$.pure')
f(9,1652,3,1,'cats/effect/IO$Pure$.apply')
f(10,1652,3,2,'cats.effect.IO$Pure')
f(6,1655,4139,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b098.apply')
f(7,1655,4139,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,1655,839,1,'cats/effect/IO.flatMap')
f(9,1655,839,1,'cats/effect/IO$FlatMap$.apply')
f(10,1655,839,2,'cats.effect.IO$FlatMap')
f(8,2494,498,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,2494,498,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,2494,498,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,2494,498,2,'kyo.bench.BroadFlatMapBench$$Lambda$95+0x0000000800d5b668')
f(8,2992,2802,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,2992,231,1,'cats/effect/IO$.pure')
f(10,2992,231,1,'cats/effect/IO$Pure$.apply')
f(11,2992,231,2,'cats.effect.IO$Pure')
f(9,3223,507,1,'cats/effect/IO.flatMap')
f(10,3223,507,1,'cats/effect/IO$FlatMap$.apply')
f(11,3223,507,2,'cats.effect.IO$FlatMap')
f(9,3730,367,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,3730,367,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,3730,367,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,3730,367,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(9,4097,1697,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,4097,118,1,'cats/effect/IO$.pure')
f(11,4097,118,1,'cats/effect/IO$Pure$.apply')
f(12,4097,118,2,'cats.effect.IO$Pure')
f(10,4215,304,1,'cats/effect/IO.flatMap')
f(11,4215,304,1,'cats/effect/IO$FlatMap$.apply')
f(12,4215,304,2,'cats.effect.IO$FlatMap')
f(10,4519,226,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,4519,226,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,4519,226,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,4519,226,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(10,4745,1049,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,4745,79,1,'cats/effect/IO$.pure')
f(12,4745,79,1,'cats/effect/IO$Pure$.apply')
f(13,4745,79,2,'cats.effect.IO$Pure')
f(11,4824,188,1,'cats/effect/IO.flatMap')
f(12,4824,188,1,'cats/effect/IO$FlatMap$.apply')
f(13,4824,188,2,'cats.effect.IO$FlatMap')
f(11,5012,125,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,5012,125,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,5012,125,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,5012,125,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(11,5137,657,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,5137,38,1,'cats/effect/IO$.pure')
f(13,5137,38,1,'cats/effect/IO$Pure$.apply')
f(14,5137,38,2,'cats.effect.IO$Pure')
f(12,5175,118,1,'cats/effect/IO.flatMap')
f(13,5175,118,1,'cats/effect/IO$FlatMap$.apply')
f(14,5175,118,2,'cats.effect.IO$FlatMap')
f(12,5293,81,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,5293,81,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,5293,81,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,5293,81,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(12,5374,420,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,5374,32,1,'cats/effect/IO$.pure')
f(14,5374,32,1,'cats/effect/IO$Pure$.apply')
f(15,5374,32,2,'cats.effect.IO$Pure')
f(13,5406,102,1,'cats/effect/IO.flatMap')
f(14,5406,102,1,'cats/effect/IO$FlatMap$.apply')
f(15,5406,102,2,'cats.effect.IO$FlatMap')
f(13,5508,68,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,5508,68,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,5508,68,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,5508,68,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(13,5576,218,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,5576,20,1,'cats/effect/IO$.pure')
f(15,5576,20,1,'cats/effect/IO$Pure$.apply')
f(16,5576,20,2,'cats.effect.IO$Pure')
f(14,5596,43,1,'cats/effect/IO.flatMap')
f(15,5596,43,1,'cats/effect/IO$FlatMap$.apply')
f(16,5596,43,2,'cats.effect.IO$FlatMap')
f(14,5639,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,5639,25,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,5639,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,5639,25,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(14,5664,130,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,5664,10,1,'cats/effect/IO$.pure')
f(16,5664,10,1,'cats/effect/IO$Pure$.apply')
f(17,5664,10,2,'cats.effect.IO$Pure')
f(15,5674,30,1,'cats/effect/IO.flatMap')
f(16,5674,30,1,'cats/effect/IO$FlatMap$.apply')
f(17,5674,30,2,'cats.effect.IO$FlatMap')
f(15,5704,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,5704,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,5704,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,5704,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(15,5720,74,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,5720,13,1,'cats/effect/IO$.pure')
f(17,5720,13,1,'cats/effect/IO$Pure$.apply')
f(18,5720,13,2,'cats.effect.IO$Pure')
f(16,5733,17,1,'cats/effect/IO.flatMap')
f(17,5733,17,1,'cats/effect/IO$FlatMap$.apply')
f(18,5733,17,2,'cats.effect.IO$FlatMap')
f(16,5750,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,5750,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,5750,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,5750,12,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(16,5762,32,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,5762,4,1,'cats/effect/IO$.pure')
f(18,5762,4,1,'cats/effect/IO$Pure$.apply')
f(19,5762,4,2,'cats.effect.IO$Pure')
f(17,5766,2,1,'cats/effect/IO.flatMap')
f(18,5766,2,1,'cats/effect/IO$FlatMap$.apply')
f(19,5766,2,2,'cats.effect.IO$FlatMap')
f(17,5768,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,5768,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,5768,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,5768,4,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(17,5772,22,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,5772,8,1,'cats/effect/IO.flatMap')
f(19,5772,8,1,'cats/effect/IO$FlatMap$.apply')
f(20,5772,8,2,'cats.effect.IO$FlatMap')
f(18,5780,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,5780,5,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,5780,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,5780,5,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(18,5785,9,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,5785,4,1,'cats/effect/IO.flatMap')
f(20,5785,4,1,'cats/effect/IO$FlatMap$.apply')
f(21,5785,4,2,'cats.effect.IO$FlatMap')
f(19,5789,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,5789,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,5789,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,5789,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(19,5790,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,5790,1,1,'cats/effect/IO$.pure')
f(21,5790,1,1,'cats/effect/IO$Pure$.apply')
f(22,5790,1,2,'cats.effect.IO$Pure')
f(20,5791,2,1,'cats/effect/IO.flatMap')
f(21,5791,2,1,'cats/effect/IO$FlatMap$.apply')
f(22,5791,2,2,'cats.effect.IO$FlatMap')
f(20,5793,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,5793,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,5793,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,5793,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(6,5794,325,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,5794,325,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,5794,325,1,'cats/effect/IO$.pure')
f(9,5794,325,1,'cats/effect/IO$Pure$.apply')
f(10,5794,325,2,'cats.effect.IO$Pure')
f(3,6119,2226,1,'cats/effect/IOFiber.cedeR')
f(4,6119,2186,1,'cats/effect/IOFiber.runLoop')
f(5,6119,551,1,'cats/effect/IOFiber.next$2')
f(6,6119,393,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b098.apply')
f(7,6119,393,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,6119,161,1,'cats/effect/IO.flatMap')
f(9,6119,161,1,'cats/effect/IO$FlatMap$.apply')
f(10,6119,161,2,'cats.effect.IO$FlatMap')
f(8,6280,126,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6280,126,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6280,126,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6280,126,2,'kyo.bench.BroadFlatMapBench$$Lambda$95+0x0000000800d5b668')
f(8,6406,106,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,6406,106,1,'cats/effect/IO$.pure')
f(10,6406,106,1,'cats/effect/IO$Pure$.apply')
f(11,6406,106,2,'cats.effect.IO$Pure')
f(6,6512,158,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,6512,158,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,6512,158,1,'cats/effect/IO$.pure')
f(9,6512,158,1,'cats/effect/IO$Pure$.apply')
f(10,6512,158,2,'cats.effect.IO$Pure')
f(5,6670,1635,1,'cats/effect/IOFiber.succeeded')
f(6,6670,1523,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b098.apply')
f(7,6670,1523,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,6670,320,1,'cats/effect/IO.flatMap')
f(9,6670,320,1,'cats/effect/IO$FlatMap$.apply')
f(10,6670,320,2,'cats.effect.IO$FlatMap')
f(8,6990,177,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6990,177,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6990,177,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6990,177,2,'kyo.bench.BroadFlatMapBench$$Lambda$95+0x0000000800d5b668')
f(8,7167,1026,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,7167,65,1,'cats/effect/IO$.pure')
f(10,7167,65,1,'cats/effect/IO$Pure$.apply')
f(11,7167,65,2,'cats.effect.IO$Pure')
f(9,7232,189,1,'cats/effect/IO.flatMap')
f(10,7232,189,1,'cats/effect/IO$FlatMap$.apply')
f(11,7232,189,2,'cats.effect.IO$FlatMap')
f(9,7421,132,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7421,132,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,7421,132,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7421,132,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(9,7553,640,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,7553,55,1,'cats/effect/IO$.pure')
f(11,7553,55,1,'cats/effect/IO$Pure$.apply')
f(12,7553,55,2,'cats.effect.IO$Pure')
f(10,7608,125,1,'cats/effect/IO.flatMap')
f(11,7608,125,1,'cats/effect/IO$FlatMap$.apply')
f(12,7608,125,2,'cats.effect.IO$FlatMap')
f(10,7733,91,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,7733,91,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,7733,91,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,7733,91,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(10,7824,369,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,7824,28,1,'cats/effect/IO$.pure')
f(12,7824,28,1,'cats/effect/IO$Pure$.apply')
f(13,7824,28,2,'cats.effect.IO$Pure')
f(11,7852,66,1,'cats/effect/IO.flatMap')
f(12,7852,66,1,'cats/effect/IO$FlatMap$.apply')
f(13,7852,66,2,'cats.effect.IO$FlatMap')
f(11,7918,44,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,7918,44,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,7918,44,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,7918,44,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(11,7962,231,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,7962,7,1,'cats/effect/IO$.pure')
f(13,7962,7,1,'cats/effect/IO$Pure$.apply')
f(14,7962,7,2,'cats.effect.IO$Pure')
f(12,7969,50,1,'cats/effect/IO.flatMap')
f(13,7969,50,1,'cats/effect/IO$FlatMap$.apply')
f(14,7969,50,2,'cats.effect.IO$FlatMap')
f(12,8019,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,8019,25,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,8019,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,8019,25,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(12,8044,149,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,8044,10,1,'cats/effect/IO$.pure')
f(14,8044,10,1,'cats/effect/IO$Pure$.apply')
f(15,8044,10,2,'cats.effect.IO$Pure')
f(13,8054,28,1,'cats/effect/IO.flatMap')
f(14,8054,28,1,'cats/effect/IO$FlatMap$.apply')
f(15,8054,28,2,'cats.effect.IO$FlatMap')
f(13,8082,19,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,8082,19,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,8082,19,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,8082,19,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(13,8101,92,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,8101,5,1,'cats/effect/IO$.pure')
f(15,8101,5,1,'cats/effect/IO$Pure$.apply')
f(16,8101,5,2,'cats.effect.IO$Pure')
f(14,8106,17,1,'cats/effect/IO.flatMap')
f(15,8106,17,1,'cats/effect/IO$FlatMap$.apply')
f(16,8106,17,2,'cats.effect.IO$FlatMap')
f(14,8123,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,8123,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,8123,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,8123,17,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(14,8140,53,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,8140,6,1,'cats/effect/IO$.pure')
f(16,8140,6,1,'cats/effect/IO$Pure$.apply')
f(17,8140,6,2,'cats.effect.IO$Pure')
f(15,8146,13,1,'cats/effect/IO.flatMap')
f(16,8146,13,1,'cats/effect/IO$FlatMap$.apply')
f(17,8146,13,2,'cats.effect.IO$FlatMap')
f(15,8159,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8159,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8159,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8159,7,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(15,8166,27,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,8166,1,1,'cats/effect/IO$.pure')
f(17,8166,1,1,'cats/effect/IO$Pure$.apply')
f(18,8166,1,2,'cats.effect.IO$Pure')
f(16,8167,13,1,'cats/effect/IO.flatMap')
f(17,8167,13,1,'cats/effect/IO$FlatMap$.apply')
f(18,8167,13,2,'cats.effect.IO$FlatMap')
f(16,8180,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,8180,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,8180,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,8180,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(16,8183,10,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,8183,2,1,'cats/effect/IO.flatMap')
f(18,8183,2,1,'cats/effect/IO$FlatMap$.apply')
f(19,8183,2,2,'cats.effect.IO$FlatMap')
f(17,8185,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,8185,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,8185,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,8185,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(17,8188,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,8188,2,1,'cats/effect/IO$.pure')
f(19,8188,2,1,'cats/effect/IO$Pure$.apply')
f(20,8188,2,2,'cats.effect.IO$Pure')
f(18,8190,1,1,'cats/effect/IO.flatMap')
f(19,8190,1,1,'cats/effect/IO$FlatMap$.apply')
f(20,8190,1,2,'cats.effect.IO$FlatMap')
f(18,8191,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,8191,2,1,'cats/effect/IO$.pure')
f(20,8191,2,1,'cats/effect/IO$Pure$.apply')
f(21,8191,2,2,'cats.effect.IO$Pure')
f(6,8193,112,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,8193,112,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,8193,112,1,'cats/effect/IO$.pure')
f(9,8193,112,1,'cats/effect/IO$Pure$.apply')
f(10,8193,112,2,'cats.effect.IO$Pure')
f(4,8305,40,1,'cats/effect/IOFiber.succeeded')
f(5,8305,40,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8d588.apply')
f(6,8305,40,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,8305,40,1,'kyo/bench/BroadFlatMapBench.catsBench')
f(8,8305,40,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,8305,1,1,'cats/effect/IO.flatMap')
f(10,8305,1,1,'cats/effect/IO$FlatMap$.apply')
f(11,8305,1,2,'cats.effect.IO$FlatMap')
f(9,8306,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,8306,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,8306,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,8306,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(9,8309,36,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,8309,4,1,'cats/effect/IO.flatMap')
f(11,8309,4,1,'cats/effect/IO$FlatMap$.apply')
f(12,8309,4,2,'cats.effect.IO$FlatMap')
f(10,8313,32,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,8313,4,1,'cats/effect/IO.flatMap')
f(12,8313,4,1,'cats/effect/IO$FlatMap$.apply')
f(13,8313,4,2,'cats.effect.IO$FlatMap')
f(11,8317,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,8317,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,8317,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,8317,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(11,8319,26,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,8319,1,1,'cats/effect/IO.flatMap')
f(13,8319,1,1,'cats/effect/IO$FlatMap$.apply')
f(14,8319,1,2,'cats.effect.IO$FlatMap')
f(12,8320,25,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,8320,1,1,'cats/effect/IO.flatMap')
f(14,8320,1,1,'cats/effect/IO$FlatMap$.apply')
f(15,8320,1,2,'cats.effect.IO$FlatMap')
f(13,8321,24,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,8321,1,1,'cats/effect/IO.flatMap')
f(15,8321,1,1,'cats/effect/IO$FlatMap$.apply')
f(16,8321,1,2,'cats.effect.IO$FlatMap')
f(14,8322,23,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,8322,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8322,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8322,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8322,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(15,8323,22,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,8323,1,1,'cats/effect/IO.flatMap')
f(17,8323,1,1,'cats/effect/IO$FlatMap$.apply')
f(18,8323,1,2,'cats.effect.IO$FlatMap')
f(16,8324,21,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,8324,3,1,'cats/effect/IO.flatMap')
f(18,8324,3,1,'cats/effect/IO$FlatMap$.apply')
f(19,8324,3,2,'cats.effect.IO$FlatMap')
f(17,8327,18,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,8327,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,8327,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,8327,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,8327,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(18,8329,16,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,8329,2,1,'cats/effect/IO.flatMap')
f(20,8329,2,1,'cats/effect/IO$FlatMap$.apply')
f(21,8329,2,2,'cats.effect.IO$FlatMap')
f(19,8331,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,8331,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,8331,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,8331,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(19,8333,12,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,8333,3,1,'cats/effect/IO.flatMap')
f(21,8333,3,1,'cats/effect/IO$FlatMap$.apply')
f(22,8333,3,2,'cats.effect.IO$FlatMap')
f(20,8336,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,8336,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,8336,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,8336,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(20,8337,8,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,8337,1,1,'cats/effect/IO.flatMap')
f(22,8337,1,1,'cats/effect/IO$FlatMap$.apply')
f(23,8337,1,2,'cats.effect.IO$FlatMap')
f(21,8338,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,8338,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,8338,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,8338,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(21,8339,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(22,8339,3,1,'cats/effect/IO.flatMap')
f(23,8339,3,1,'cats/effect/IO$FlatMap$.apply')
f(24,8339,3,2,'cats.effect.IO$FlatMap')
f(22,8342,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,8342,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,8342,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,8342,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5b098')
f(22,8343,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(23,8343,2,1,'cats/effect/IO$.pure')
f(24,8343,2,1,'cats/effect/IO$Pure$.apply')
f(25,8343,2,2,'cats.effect.IO$Pure')
f(3,8345,130,1,'cats/effect/IOFiber.execR')
f(4,8345,10,1,'cats/effect/ArrayStack.init')
f(5,8345,10,2,'java.lang.Object[]')
f(4,8355,120,1,'cats/effect/ByteStack$.create')
f(5,8355,120,2,'int[]')
f(1,8475,982,1,'java/lang/Thread.run')
f(2,8475,982,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,8475,982,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,8475,982,1,'java/util/concurrent/FutureTask.run')
f(5,8475,982,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,8475,982,1,'java/util/concurrent/FutureTask.run')
f(7,8475,982,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,8475,982,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,8475,982,1,'java/lang/reflect/Method.invoke')
f(10,8475,982,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,8475,982,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,8475,982,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,8475,982,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,8475,982,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,8475,982,1,'kyo/bench/Bench.forkCats')
f(16,8475,30,1,'cats/effect/IO.flatMap')
f(17,8475,30,1,'cats/effect/IO$FlatMap$.apply')
f(18,8475,30,2,'cats.effect.IO$FlatMap')
f(16,8505,917,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,8505,883,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,8505,505,1,'cats/effect/IO.unsafeRunAsync')
f(19,8505,424,1,'cats/effect/IO.unsafeRunFiber')
f(20,8505,122,2,'cats.effect.IOFiber')
f(20,8627,238,1,'cats/effect/IOFiber.<init>')
f(21,8627,49,1,'cats/effect/ArrayStack$.apply')
f(22,8627,49,2,'cats.effect.ArrayStack')
f(21,8676,53,1,'cats/effect/CallbackStack$.apply')
f(22,8676,53,2,'cats.effect.CallbackStack')
f(21,8729,43,1,'cats/effect/IO$.async')
f(22,8729,11,2,'cats.effect.IO$$anon$3')
f(22,8740,32,1,'cats/effect/IO$IOCont$.apply')
f(23,8740,32,2,'cats.effect.IO$IOCont')
f(21,8772,43,1,'cats/effect/IO$.uncancelable')
f(22,8772,43,1,'cats/effect/IO$Uncancelable$.apply')
f(23,8772,43,2,'cats.effect.IO$Uncancelable')
f(21,8815,50,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,8815,50,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,8815,50,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,8815,26,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d599e0')
f(24,8841,24,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d59fd0')
f(20,8865,14,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,8865,14,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,8865,14,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,8865,14,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,8865,14,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,8879,50,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,8879,50,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,8879,50,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,8879,50,2,'cats.effect.IO$$Lambda$90+0x0000000800d58ba8')
f(19,8929,81,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,8929,81,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,8929,81,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,8929,37,2,'cats.effect.IO$$Lambda$87+0x0000000800d55970')
f(22,8966,21,2,'cats.effect.IO$$Lambda$88+0x0000000800d54800')
f(22,8987,23,2,'cats.effect.IO$$Lambda$89+0x0000000800d58000')
f(18,9010,81,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,9091,33,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,9091,33,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,9091,33,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,9091,33,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55568')
f(18,9124,158,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,9124,158,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,9124,46,2,'java.lang.Object[]')
f(20,9170,31,2,'java.util.concurrent.locks.ReentrantLock')
f(20,9201,21,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,9201,21,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,9222,60,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,9222,60,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,9222,60,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,9282,53,1,'scala/concurrent/package$.blocking')
f(19,9282,53,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,9282,53,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a9b0.apply')
f(21,9282,53,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,9282,53,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,9282,53,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,9282,53,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,9335,53,1,'scala/util/Either.fold')
f(19,9335,53,1,'cats/effect/IOPlatform$$Lambda$100.0x0000000800d5f450.apply')
f(20,9335,53,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,9335,53,1,'scala/Some$.apply')
f(22,9335,53,2,'scala.Some')
f(17,9388,34,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,9388,34,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,9388,34,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,9388,34,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,9388,34,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,9388,34,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,9388,34,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,9388,34,2,'scala.concurrent.duration.FiniteDuration')
f(16,9422,35,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,9422,35,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,9422,35,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,9422,35,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8d588')
f(1,9457,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,9457,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,9457,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,9457,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,9457,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,9457,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,9457,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,9457,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,9457,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,9457,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,9457,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,9457,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,9457,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,263,3,'all')
f(1,0,10,3,'[unknown_Java]')
f(2,0,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(2,3,2,6,'cats/effect/IO$Pure.tag',0,2,0)
f(2,5,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(1,10,229,1,'cats/effect/unsafe/WorkerThread.run')
f(2,11,218,1,'cats/effect/IOFiber.run',1,0,0)
f(3,11,164,1,'cats/effect/IOFiber.autoCedeR')
f(4,11,164,1,'cats/effect/IOFiber.runLoop')
f(5,27,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(5,29,6,2,'cats/effect/ByteStack$.push',6,0,0)
f(6,33,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(5,35,10,6,'cats/effect/IO$FlatMap.tag',0,10,0)
f(5,45,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,48,2,2,'cats/effect/IO$Pure.value',2,0,0)
f(5,50,18,1,'cats/effect/IOFiber.next$2')
f(6,51,17,2,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b2a0.apply',17,0,0)
f(7,55,13,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',13,0,0)
f(8,55,13,2,'kyo/bench/BroadFlatMapBench.catsFib$1',13,0,0)
f(9,57,5,2,'kyo/bench/BroadFlatMapBench.catsFib$1',5,0,0)
f(10,58,4,2,'scala/math/BigInt$.apply',4,0,0)
f(9,62,6,2,'scala/math/BigInt$.apply',6,0,0)
f(10,64,4,2,'scala/math/BigInt$.getCached',4,0,0)
f(11,66,2,2,'scala/math/BigInt.<init>',2,0,0)
f(5,68,100,1,'cats/effect/IOFiber.succeeded')
f(6,81,6,2,'cats/effect/ArrayStack.pop',6,0,0)
f(6,87,6,2,'cats/effect/ByteStack$.pop',6,0,0)
f(7,91,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,93,18,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,93,18,1,'cats/effect/IOFiber.done')
f(8,93,18,1,'cats/effect/CallbackStack.apply')
f(9,93,18,1,'scala/runtime/function/JProcedure1.apply')
f(10,93,18,1,'scala/runtime/function/JProcedure1.apply')
f(11,93,18,1,'cats/effect/IO$$Lambda$90.0x0000000800d58ba8.applyVoid')
f(12,93,18,1,'cats/effect/IO.$anonfun$6')
f(13,93,18,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,93,18,1,'cats/effect/kernel/Outcome.fold$',1,0,0)
f(15,93,18,1,'cats/effect/kernel/Outcome.fold',1,0,0)
f(16,93,18,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(17,93,18,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(18,93,18,1,'cats/effect/IO$$Lambda$98.0x0000000800d5e6c8.applyVoid',1,0,0)
f(19,93,18,1,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(20,93,1,2,'cats/effect/unsafe/StripedHashtable.remove',1,0,0)
f(20,94,17,1,'scala/runtime/function/JProcedure1.apply')
f(21,94,17,1,'scala/runtime/function/JProcedure1.apply')
f(22,94,17,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,94,17,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,94,17,1,'scala/runtime/function/JProcedure1.apply')
f(25,94,17,1,'scala/runtime/function/JProcedure1.apply')
f(26,94,17,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55568.applyVoid')
f(27,94,17,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,94,17,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,94,1,2,'java/util/concurrent/locks/ReentrantLock.lock',1,0,0)
f(29,95,16,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,95,16,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,95,16,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,95,16,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,95,16,1,'jdk/internal/misc/Unsafe.unpark')
f(34,95,1,3,'Unsafe_Unpark')
f(35,95,1,4,'ThreadsListHandle::cv_internal_thread_to_JavaThread(_jobject*, JavaThread**, oopDesc**)')
f(34,96,15,3,'pthread_cond_signal')
f(35,97,14,5,'entry_SYSCALL_64_after_hwframe')
f(36,97,14,5,'do_syscall_64')
f(37,97,14,5,'__x64_sys_futex')
f(38,97,14,5,'do_futex')
f(39,97,14,5,'futex_wake')
f(40,97,14,5,'wake_up_q')
f(41,97,13,5,'_raw_spin_unlock_irqrestore')
f(41,110,1,5,'try_to_wake_up')
f(6,111,14,3,'itable stub')
f(6,125,33,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,130,28,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',24,0,0)
f(8,131,4,2,'cats/effect/IO.flatMap',4,0,0)
f(9,131,4,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(8,135,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(9,135,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(10,135,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(8,136,22,2,'kyo/bench/BroadFlatMapBench.catsFib$1',18,0,0)
f(9,136,5,2,'cats/effect/IO.flatMap',5,0,0)
f(10,136,5,2,'cats/effect/IO$FlatMap$.apply',5,0,0)
f(9,141,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,141,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(11,141,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(9,142,6,2,'kyo/bench/BroadFlatMapBench.catsFib$1',2,0,0)
f(10,142,1,2,'cats/effect/IO.flatMap',1,0,0)
f(11,142,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(10,143,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(11,143,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(12,143,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(10,144,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,144,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(12,144,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(13,144,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,145,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,146,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,146,1,2,'scala/math/BigInt$.apply',1,0,0)
f(14,146,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(11,147,1,2,'scala/math/BigInt$.apply',1,0,0)
f(12,147,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,148,10,2,'scala/math/BigInt$.apply',10,0,0)
f(10,148,10,2,'scala/math/BigInt$.getCached',10,0,0)
f(6,158,10,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,162,6,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',6,0,0)
f(8,162,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,162,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(8,163,5,2,'scala/math/BigInt.$plus',5,0,0)
f(9,164,3,2,'scala/math/BigInt$.apply',3,0,0)
f(10,164,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(9,167,1,2,'scala/math/BigInt.longEncoding',1,0,0)
f(5,168,7,3,'vtable stub')
f(3,175,53,1,'cats/effect/IOFiber.cedeR')
f(4,175,52,1,'cats/effect/IOFiber.runLoop')
f(5,184,3,2,'cats/effect/ArrayStack.push',3,0,0)
f(6,185,2,2,'cats/effect/ArrayStack.checkAndGrow',2,0,0)
f(5,187,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(5,188,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(5,190,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,193,5,1,'cats/effect/IOFiber.next$2')
f(6,194,4,2,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b2a0.apply',4,0,0)
f(7,195,3,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',3,0,0)
f(8,195,3,2,'kyo/bench/BroadFlatMapBench.catsFib$1',3,0,0)
f(9,195,3,2,'scala/math/BigInt$.apply',3,0,0)
f(10,195,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(11,197,1,2,'scala/math/BigInt.<init>',1,0,0)
f(5,198,26,1,'cats/effect/IOFiber.succeeded')
f(6,200,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,201,2,2,'cats/effect/ByteStack$.pop',2,0,0)
f(6,203,4,3,'itable stub')
f(6,207,16,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,215,8,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',7,0,0)
f(8,215,8,2,'kyo/bench/BroadFlatMapBench.catsFib$1',7,0,0)
f(9,215,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,215,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(9,216,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,216,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(11,216,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(9,217,2,2,'kyo/bench/BroadFlatMapBench.catsFib$1',1,0,0)
f(10,217,1,2,'cats/effect/IO.flatMap',1,0,0)
f(11,217,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(10,218,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,218,1,2,'scala/math/BigInt$.apply',1,0,0)
f(12,218,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,219,4,2,'scala/math/BigInt$.apply',4,0,0)
f(10,219,4,2,'scala/math/BigInt$.getCached',4,0,0)
f(6,223,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$95.0x0000000800d5b668.apply')
f(7,223,1,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',1,0,0)
f(8,223,1,2,'scala/math/BigInt.$plus',1,0,0)
f(9,223,1,2,'scala/math/BigInt$.apply',1,0,0)
f(10,223,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(5,224,3,3,'vtable stub')
f(4,227,1,1,'cats/effect/IOFiber.succeeded')
f(5,227,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(3,228,1,2,'cats/effect/IOFiber.execR',1,0,0)
f(2,229,1,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,229,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(4,229,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(2,230,9,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,230,9,1,'java/util/concurrent/locks/LockSupport.park')
f(4,230,9,1,'jdk/internal/misc/Unsafe.park')
f(5,230,1,3,'Unsafe_Park')
f(5,231,8,3,'[unknown]')
f(6,231,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,231,8,5,'entry_SYSCALL_64_after_hwframe')
f(8,231,1,5,'__x64_sys_futex')
f(8,232,7,5,'do_syscall_64')
f(9,232,6,5,'__x64_sys_futex')
f(10,232,6,5,'do_futex')
f(11,232,6,5,'futex_wait')
f(12,232,1,5,'__get_user_nocheck_4')
f(12,233,5,5,'futex_wait_queue_me')
f(13,233,5,5,'schedule')
f(14,233,5,5,'__schedule')
f(15,233,5,5,'finish_task_switch.isra.0')
f(9,238,1,5,'syscall_exit_to_user_mode')
f(10,238,1,5,'exit_to_user_mode_prepare')
f(11,238,1,5,'exit_to_user_mode_loop')
f(12,238,1,5,'__rseq_handle_notify_resume')
f(13,238,1,5,'__put_user_8')
f(1,239,24,1,'java/lang/Thread.run')
f(2,239,24,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,239,24,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,239,24,1,'java/util/concurrent/FutureTask.run')
f(5,239,24,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,239,24,1,'java/util/concurrent/FutureTask.run')
f(7,239,24,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,239,24,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,239,24,1,'java/lang/reflect/Method.invoke')
f(10,239,24,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,239,24,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,239,24,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,239,24,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,239,24,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,239,24,1,'kyo/bench/Bench.forkCats')
f(16,239,24,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,239,23,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,239,12,1,'cats/effect/IO.unsafeRunAsync')
f(19,239,12,1,'cats/effect/IO.unsafeRunFiber')
f(20,239,1,1,'cats/effect/IOFiber.<init>')
f(21,239,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(22,239,1,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(20,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,240,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,240,11,1,'jdk/internal/misc/Unsafe.unpark')
f(25,240,11,3,'pthread_cond_signal')
f(26,242,9,5,'entry_SYSCALL_64_after_hwframe')
f(27,242,9,5,'do_syscall_64')
f(28,242,9,5,'__x64_sys_futex')
f(29,243,8,5,'do_futex')
f(30,243,8,5,'futex_wake')
f(31,243,1,5,'mark_wake_futex')
f(31,244,7,5,'wake_up_q')
f(32,244,7,5,'_raw_spin_unlock_irqrestore')
f(18,251,11,1,'scala/concurrent/package$.blocking')
f(19,251,11,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,251,11,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a9b0.apply')
f(21,251,11,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,251,11,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,251,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,251,11,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,251,11,1,'jdk/internal/misc/Unsafe.park')
f(26,252,1,3,'Unsafe_Park')
f(27,252,1,3,'clock_gettime')
f(28,252,1,3,'[vdso]')
f(26,253,9,3,'[unknown]')
f(27,253,9,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,253,9,5,'entry_SYSCALL_64_after_hwframe')
f(29,253,9,5,'do_syscall_64')
f(30,254,6,5,'__x64_sys_futex')
f(31,254,6,5,'do_futex')
f(32,254,6,5,'futex_wait')
f(33,255,5,5,'futex_wait_queue_me')
f(34,255,5,5,'schedule')
f(35,255,5,5,'__schedule')
f(36,255,5,5,'finish_task_switch.isra.0')
f(30,260,1,5,'syscall_exit_to_user_mode')
f(31,260,1,5,'exit_to_user_mode_prepare')
f(32,260,1,5,'exit_to_user_mode_loop')
f(33,260,1,5,'__rseq_handle_notify_resume')
f(34,260,1,5,'__put_user_nocheck_8')
f(30,261,1,5,'syscall_exit_to_user_mode_prepare')
f(17,262,1,2,'scala/concurrent/duration/package$DurationLong.nanos',1,0,0)
f(18,262,1,2,'scala/concurrent/duration/DurationConversions.nanos$',1,0,0)
f(19,262,1,2,'scala/concurrent/duration/DurationConversions.nanos',1,0,0)
f(20,262,1,2,'scala/concurrent/duration/package$DurationLong.nanoseconds',1,0,0)
f(21,262,1,2,'scala/concurrent/duration/DurationConversions.nanoseconds$',1,0,0)
f(22,262,1,2,'scala/concurrent/duration/DurationConversions.nanoseconds',1,0,0)
f(23,262,1,2,'scala/concurrent/duration/package$DurationLong.durationIn',1,0,0)
f(24,262,1,2,'scala/concurrent/duration/FiniteDuration.<init>',1,0,0)
f(25,262,1,2,'scala/concurrent/duration/Duration.<init>',1,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,12888,3,'all')
f(1,0,11538,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,11538,1,'cats/effect/IOFiber.run')
f(3,0,8395,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,8395,1,'cats/effect/IOFiber.runLoop')
f(5,0,2342,1,'cats/effect/IOFiber.next$2')
f(6,0,1649,1,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply')
f(7,0,1649,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,0,750,1,'cats/effect/IO.flatMap')
f(9,0,750,1,'cats/effect/IO$FlatMap$.apply')
f(10,0,750,2,'cats.effect.IO$FlatMap')
f(8,750,431,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,750,431,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,750,431,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,750,431,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5e800')
f(8,1181,468,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,1181,468,1,'cats/effect/IO$.pure')
f(10,1181,468,1,'cats/effect/IO$Pure$.apply')
f(11,1181,468,2,'cats.effect.IO$Pure')
f(6,1649,693,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5e800.apply')
f(7,1649,693,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,1649,693,1,'cats/effect/IO$.pure')
f(9,1649,693,1,'cats/effect/IO$Pure$.apply')
f(10,1649,693,2,'cats.effect.IO$Pure')
f(5,2342,6053,1,'cats/effect/IOFiber.succeeded')
f(6,2342,14,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,2342,13,1,'cats/effect/IOFiber.done')
f(8,2342,12,1,'cats/effect/CallbackStack.apply')
f(9,2342,12,1,'scala/runtime/function/JProcedure1.apply')
f(10,2342,12,1,'scala/runtime/function/JProcedure1.apply')
f(11,2342,12,1,'cats/effect/IO$$Lambda$90.0x0000000800d5c530.applyVoid')
f(12,2342,12,1,'cats/effect/IO.$anonfun$6')
f(13,2342,5,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,2342,5,1,'cats/effect/kernel/Outcome.fold$')
f(15,2342,5,1,'cats/effect/kernel/Outcome.fold')
f(16,2342,5,1,'scala/runtime/function/JProcedure1.apply')
f(17,2342,5,1,'scala/runtime/function/JProcedure1.apply')
f(18,2342,5,1,'cats/effect/IO$$Lambda$97.0x0000000800d5fbc0.applyVoid')
f(19,2342,5,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,2342,5,1,'scala/runtime/function/JProcedure1.apply')
f(21,2342,5,1,'scala/runtime/function/JProcedure1.apply')
f(22,2342,5,1,'cats/effect/IO$$Lambda$89.0x0000000800d57448.applyVoid')
f(23,2342,5,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,2342,3,1,'scala/runtime/function/JProcedure1.apply')
f(25,2342,3,1,'scala/runtime/function/JProcedure1.apply')
f(26,2342,3,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d56978.applyVoid')
f(27,2342,3,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,2342,3,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,2342,3,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,2342,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,2342,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,2342,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,2342,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,2342,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(24,2345,2,1,'scala/util/Right$.apply')
f(25,2345,2,2,'scala.util.Right')
f(13,2347,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,2347,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,2347,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,2347,4,2,'cats.effect.IO$$Lambda$95+0x0000000800d5f4f8')
f(16,2351,1,2,'cats.effect.IO$$Lambda$96+0x0000000800d5f7b8')
f(16,2352,2,2,'cats.effect.IO$$Lambda$97+0x0000000800d5fbc0')
f(8,2354,1,1,'cats/effect/IO$.pure')
f(9,2354,1,1,'cats/effect/IO$Pure$.apply')
f(10,2354,1,2,'cats.effect.IO$Pure')
f(7,2355,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,2355,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,2356,5556,1,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply')
f(7,2356,5556,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,2356,1142,1,'cats/effect/IO.flatMap')
f(9,2356,1142,1,'cats/effect/IO$FlatMap$.apply')
f(10,2356,1142,2,'cats.effect.IO$FlatMap')
f(8,3498,721,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,3498,721,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,3498,721,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,3498,721,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5e800')
f(8,4219,3693,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,4219,297,1,'cats/effect/IO$.pure')
f(10,4219,297,1,'cats/effect/IO$Pure$.apply')
f(11,4219,297,2,'cats.effect.IO$Pure')
f(9,4516,697,1,'cats/effect/IO.flatMap')
f(10,4516,697,1,'cats/effect/IO$FlatMap$.apply')
f(11,4516,697,2,'cats.effect.IO$FlatMap')
f(9,5213,448,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,5213,448,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,5213,448,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,5213,448,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(9,5661,2251,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,5661,162,1,'cats/effect/IO$.pure')
f(11,5661,162,1,'cats/effect/IO$Pure$.apply')
f(12,5661,162,2,'cats.effect.IO$Pure')
f(10,5823,422,1,'cats/effect/IO.flatMap')
f(11,5823,422,1,'cats/effect/IO$FlatMap$.apply')
f(12,5823,422,2,'cats.effect.IO$FlatMap')
f(10,6245,256,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6245,256,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,6245,256,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6245,256,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(10,6501,1411,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,6501,104,1,'cats/effect/IO$.pure')
f(12,6501,104,1,'cats/effect/IO$Pure$.apply')
f(13,6501,104,2,'cats.effect.IO$Pure')
f(11,6605,253,1,'cats/effect/IO.flatMap')
f(12,6605,253,1,'cats/effect/IO$FlatMap$.apply')
f(13,6605,253,2,'cats.effect.IO$FlatMap')
f(11,6858,184,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,6858,184,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,6858,184,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,6858,184,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(11,7042,870,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,7042,81,1,'cats/effect/IO$.pure')
f(13,7042,81,1,'cats/effect/IO$Pure$.apply')
f(14,7042,81,2,'cats.effect.IO$Pure')
f(12,7123,165,1,'cats/effect/IO.flatMap')
f(13,7123,165,1,'cats/effect/IO$FlatMap$.apply')
f(14,7123,165,2,'cats.effect.IO$FlatMap')
f(12,7288,96,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7288,96,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7288,96,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7288,96,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(12,7384,528,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,7384,44,1,'cats/effect/IO$.pure')
f(14,7384,44,1,'cats/effect/IO$Pure$.apply')
f(15,7384,44,2,'cats.effect.IO$Pure')
f(13,7428,120,1,'cats/effect/IO.flatMap')
f(14,7428,120,1,'cats/effect/IO$FlatMap$.apply')
f(15,7428,120,2,'cats.effect.IO$FlatMap')
f(13,7548,60,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,7548,60,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,7548,60,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,7548,60,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(13,7608,304,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,7608,28,1,'cats/effect/IO$.pure')
f(15,7608,28,1,'cats/effect/IO$Pure$.apply')
f(16,7608,28,2,'cats.effect.IO$Pure')
f(14,7636,53,1,'cats/effect/IO.flatMap')
f(15,7636,53,1,'cats/effect/IO$FlatMap$.apply')
f(16,7636,53,2,'cats.effect.IO$FlatMap')
f(14,7689,46,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,7689,46,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,7689,46,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,7689,46,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(14,7735,177,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,7735,15,1,'cats/effect/IO$.pure')
f(16,7735,15,1,'cats/effect/IO$Pure$.apply')
f(17,7735,15,2,'cats.effect.IO$Pure')
f(15,7750,36,1,'cats/effect/IO.flatMap')
f(16,7750,36,1,'cats/effect/IO$FlatMap$.apply')
f(17,7750,36,2,'cats.effect.IO$FlatMap')
f(15,7786,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7786,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7786,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7786,28,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(15,7814,98,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,7814,11,1,'cats/effect/IO$.pure')
f(17,7814,11,1,'cats/effect/IO$Pure$.apply')
f(18,7814,11,2,'cats.effect.IO$Pure')
f(16,7825,21,1,'cats/effect/IO.flatMap')
f(17,7825,21,1,'cats/effect/IO$FlatMap$.apply')
f(18,7825,21,2,'cats.effect.IO$FlatMap')
f(16,7846,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,7846,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,7846,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,7846,12,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(16,7858,54,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,7858,6,1,'cats/effect/IO$.pure')
f(18,7858,6,1,'cats/effect/IO$Pure$.apply')
f(19,7858,6,2,'cats.effect.IO$Pure')
f(17,7864,10,1,'cats/effect/IO.flatMap')
f(18,7864,10,1,'cats/effect/IO$FlatMap$.apply')
f(19,7864,10,2,'cats.effect.IO$FlatMap')
f(17,7874,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,7874,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,7874,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,7874,9,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(17,7883,29,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,7883,5,1,'cats/effect/IO$.pure')
f(19,7883,5,1,'cats/effect/IO$Pure$.apply')
f(20,7883,5,2,'cats.effect.IO$Pure')
f(18,7888,7,1,'cats/effect/IO.flatMap')
f(19,7888,7,1,'cats/effect/IO$FlatMap$.apply')
f(20,7888,7,2,'cats.effect.IO$FlatMap')
f(18,7895,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,7895,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,7895,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,7895,4,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(18,7899,13,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,7899,2,1,'cats/effect/IO$.pure')
f(20,7899,2,1,'cats/effect/IO$Pure$.apply')
f(21,7899,2,2,'cats.effect.IO$Pure')
f(19,7901,3,1,'cats/effect/IO.flatMap')
f(20,7901,3,1,'cats/effect/IO$FlatMap$.apply')
f(21,7901,3,2,'cats.effect.IO$FlatMap')
f(19,7904,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,7904,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,7904,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,7904,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(19,7905,7,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,7905,2,1,'cats/effect/IO$.pure')
f(21,7905,2,1,'cats/effect/IO$Pure$.apply')
f(22,7905,2,2,'cats.effect.IO$Pure')
f(20,7907,2,1,'cats/effect/IO.flatMap')
f(21,7907,2,1,'cats/effect/IO$FlatMap$.apply')
f(22,7907,2,2,'cats.effect.IO$FlatMap')
f(20,7909,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,7909,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,7909,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,7909,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(20,7911,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,7911,1,1,'cats/effect/IO$.pure')
f(22,7911,1,1,'cats/effect/IO$Pure$.apply')
f(23,7911,1,2,'cats.effect.IO$Pure')
f(6,7912,483,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5e800.apply')
f(7,7912,483,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,7912,483,1,'cats/effect/IO$.pure')
f(9,7912,483,1,'cats/effect/IO$Pure$.apply')
f(10,7912,483,2,'cats.effect.IO$Pure')
f(3,8395,3143,1,'cats/effect/IOFiber.execR')
f(4,8395,13,1,'cats/effect/ArrayStack.init')
f(5,8395,13,2,'java.lang.Object[]')
f(4,8408,173,1,'cats/effect/ByteStack$.create')
f(5,8408,173,2,'int[]')
f(4,8581,2957,1,'cats/effect/IOFiber.runLoop')
f(5,8581,836,1,'cats/effect/IOFiber.next$2')
f(6,8581,611,1,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply')
f(7,8581,611,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,8581,280,1,'cats/effect/IO.flatMap')
f(9,8581,280,1,'cats/effect/IO$FlatMap$.apply')
f(10,8581,280,2,'cats.effect.IO$FlatMap')
f(8,8861,173,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8861,173,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8861,173,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8861,173,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5e800')
f(8,9034,158,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,9034,158,1,'cats/effect/IO$.pure')
f(10,9034,158,1,'cats/effect/IO$Pure$.apply')
f(11,9034,158,2,'cats.effect.IO$Pure')
f(6,9192,225,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5e800.apply')
f(7,9192,225,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,9192,225,1,'cats/effect/IO$.pure')
f(9,9192,225,1,'cats/effect/IO$Pure$.apply')
f(10,9192,225,2,'cats.effect.IO$Pure')
f(5,9417,2121,1,'cats/effect/IOFiber.succeeded')
f(6,9417,1976,1,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply')
f(7,9417,1976,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,9417,385,1,'cats/effect/IO.flatMap')
f(9,9417,385,1,'cats/effect/IO$FlatMap$.apply')
f(10,9417,385,2,'cats.effect.IO$FlatMap')
f(8,9802,225,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9802,225,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9802,225,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9802,225,2,'kyo.bench.BroadFlatMapBench$$Lambda$94+0x0000000800d5e800')
f(8,10027,1366,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,10027,93,1,'cats/effect/IO$.pure')
f(10,10027,93,1,'cats/effect/IO$Pure$.apply')
f(11,10027,93,2,'cats.effect.IO$Pure')
f(9,10120,252,1,'cats/effect/IO.flatMap')
f(10,10120,252,1,'cats/effect/IO$FlatMap$.apply')
f(11,10120,252,2,'cats.effect.IO$FlatMap')
f(9,10372,189,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,10372,189,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,10372,189,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,10372,189,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(9,10561,832,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,10561,67,1,'cats/effect/IO$.pure')
f(11,10561,67,1,'cats/effect/IO$Pure$.apply')
f(12,10561,67,2,'cats.effect.IO$Pure')
f(10,10628,159,1,'cats/effect/IO.flatMap')
f(11,10628,159,1,'cats/effect/IO$FlatMap$.apply')
f(12,10628,159,2,'cats.effect.IO$FlatMap')
f(10,10787,83,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,10787,83,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,10787,83,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,10787,83,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(10,10870,523,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,10870,32,1,'cats/effect/IO$.pure')
f(12,10870,32,1,'cats/effect/IO$Pure$.apply')
f(13,10870,32,2,'cats.effect.IO$Pure')
f(11,10902,93,1,'cats/effect/IO.flatMap')
f(12,10902,93,1,'cats/effect/IO$FlatMap$.apply')
f(13,10902,93,2,'cats.effect.IO$FlatMap')
f(11,10995,72,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,10995,72,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,10995,72,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,10995,72,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(11,11067,326,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,11067,40,1,'cats/effect/IO$.pure')
f(13,11067,40,1,'cats/effect/IO$Pure$.apply')
f(14,11067,40,2,'cats.effect.IO$Pure')
f(12,11107,49,1,'cats/effect/IO.flatMap')
f(13,11107,49,1,'cats/effect/IO$FlatMap$.apply')
f(14,11107,49,2,'cats.effect.IO$FlatMap')
f(12,11156,51,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,11156,51,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,11156,51,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,11156,51,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(12,11207,186,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,11207,17,1,'cats/effect/IO$.pure')
f(14,11207,17,1,'cats/effect/IO$Pure$.apply')
f(15,11207,17,2,'cats.effect.IO$Pure')
f(13,11224,36,1,'cats/effect/IO.flatMap')
f(14,11224,36,1,'cats/effect/IO$FlatMap$.apply')
f(15,11224,36,2,'cats.effect.IO$FlatMap')
f(13,11260,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,11260,25,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,11260,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,11260,25,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(13,11285,108,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,11285,16,1,'cats/effect/IO$.pure')
f(15,11285,16,1,'cats/effect/IO$Pure$.apply')
f(16,11285,16,2,'cats.effect.IO$Pure')
f(14,11301,33,1,'cats/effect/IO.flatMap')
f(15,11301,33,1,'cats/effect/IO$FlatMap$.apply')
f(16,11301,33,2,'cats.effect.IO$FlatMap')
f(14,11334,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,11334,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,11334,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,11334,10,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(14,11344,49,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,11344,1,1,'cats/effect/IO$.pure')
f(16,11344,1,1,'cats/effect/IO$Pure$.apply')
f(17,11344,1,2,'cats.effect.IO$Pure')
f(15,11345,14,1,'cats/effect/IO.flatMap')
f(16,11345,14,1,'cats/effect/IO$FlatMap$.apply')
f(17,11345,14,2,'cats.effect.IO$FlatMap')
f(15,11359,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,11359,8,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,11359,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,11359,8,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(15,11367,26,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,11367,3,1,'cats/effect/IO$.pure')
f(17,11367,3,1,'cats/effect/IO$Pure$.apply')
f(18,11367,3,2,'cats.effect.IO$Pure')
f(16,11370,5,1,'cats/effect/IO.flatMap')
f(17,11370,5,1,'cats/effect/IO$FlatMap$.apply')
f(18,11370,5,2,'cats.effect.IO$FlatMap')
f(16,11375,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,11375,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,11375,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,11375,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(16,11378,15,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,11378,2,1,'cats/effect/IO$.pure')
f(18,11378,2,1,'cats/effect/IO$Pure$.apply')
f(19,11378,2,2,'cats.effect.IO$Pure')
f(17,11380,8,1,'cats/effect/IO.flatMap')
f(18,11380,8,1,'cats/effect/IO$FlatMap$.apply')
f(19,11380,8,2,'cats.effect.IO$FlatMap')
f(17,11388,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,11388,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,11388,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,11388,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(17,11390,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,11390,2,1,'cats/effect/IO.flatMap')
f(19,11390,2,1,'cats/effect/IO$FlatMap$.apply')
f(20,11390,2,2,'cats.effect.IO$FlatMap')
f(18,11392,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,11392,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,11392,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,11392,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(6,11393,145,1,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5e800.apply')
f(7,11393,145,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,11393,145,1,'cats/effect/IO$.pure')
f(9,11393,145,1,'cats/effect/IO$Pure$.apply')
f(10,11393,145,2,'cats.effect.IO$Pure')
f(1,11538,1347,1,'java/lang/Thread.run')
f(2,11538,1347,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,11538,1347,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,11538,1347,1,'java/util/concurrent/FutureTask.run')
f(5,11538,1347,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,11538,1347,1,'java/util/concurrent/FutureTask.run')
f(7,11538,1347,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,11538,1347,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,11538,1347,1,'java/lang/reflect/Method.invoke')
f(10,11538,1347,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,11538,1347,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,11538,1347,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,11538,1347,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,11538,1347,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,11538,1347,1,'kyo/bench/Bench.syncCats')
f(16,11538,696,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,11538,684,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,11538,383,1,'cats/effect/IO.unsafeRunAsync')
f(19,11538,322,1,'cats/effect/IO.unsafeRunFiber')
f(20,11538,89,2,'cats.effect.IOFiber')
f(20,11627,162,1,'cats/effect/IOFiber.<init>')
f(21,11627,43,1,'cats/effect/ArrayStack$.apply')
f(22,11627,43,2,'cats.effect.ArrayStack')
f(21,11670,27,1,'cats/effect/CallbackStack$.apply')
f(22,11670,27,2,'cats.effect.CallbackStack')
f(21,11697,38,1,'cats/effect/IO$.async')
f(22,11697,12,2,'cats.effect.IO$$anon$3')
f(22,11709,26,1,'cats/effect/IO$IOCont$.apply')
f(23,11709,26,2,'cats.effect.IO$IOCont')
f(21,11735,26,1,'cats/effect/IO$.uncancelable')
f(22,11735,26,1,'cats/effect/IO$Uncancelable$.apply')
f(23,11735,26,2,'cats.effect.IO$Uncancelable')
f(21,11761,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,11761,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,11761,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,11761,14,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d368')
f(24,11775,14,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5d958')
f(20,11789,24,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,11789,24,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,11789,24,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,11789,24,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,11789,24,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,11813,47,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,11813,47,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,11813,47,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,11813,47,2,'cats.effect.IO$$Lambda$90+0x0000000800d5c530')
f(19,11860,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,11860,61,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,11860,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11860,14,2,'cats.effect.IO$$Lambda$87+0x0000000800d56d80')
f(22,11874,32,2,'cats.effect.IO$$Lambda$88+0x0000000800d57040')
f(22,11906,15,2,'cats.effect.IO$$Lambda$89+0x0000000800d57448')
f(18,11921,99,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,12020,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,12020,25,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,12020,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12020,25,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d56978')
f(18,12045,118,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,12045,118,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,12045,24,2,'java.lang.Object[]')
f(20,12069,9,2,'java.util.concurrent.locks.ReentrantLock')
f(20,12078,34,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,12078,34,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,12112,51,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,12112,51,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,12112,51,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,12163,29,1,'scala/concurrent/package$.blocking')
f(19,12163,29,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,12163,29,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e338.apply')
f(21,12163,29,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,12163,29,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,12163,29,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,12163,29,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,12192,30,1,'scala/util/Either.fold')
f(19,12192,30,1,'cats/effect/IOPlatform$$Lambda$99.0x0000000800d5a980.apply')
f(20,12192,30,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,12192,30,1,'scala/Some$.apply')
f(22,12192,30,2,'scala.Some')
f(17,12222,12,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,12222,12,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,12222,12,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,12222,12,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,12222,12,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,12222,12,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,12222,12,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,12222,12,2,'scala.concurrent.duration.FiniteDuration')
f(16,12234,651,1,'kyo/bench/BroadFlatMapBench.catsBench')
f(17,12234,651,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,12234,21,1,'cats/effect/IO.flatMap')
f(19,12234,21,1,'cats/effect/IO$FlatMap$.apply')
f(20,12234,21,2,'cats.effect.IO$FlatMap')
f(18,12255,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,12255,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,12255,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12255,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(18,12270,615,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,12270,55,1,'cats/effect/IO.flatMap')
f(20,12270,55,1,'cats/effect/IO$FlatMap$.apply')
f(21,12270,55,2,'cats.effect.IO$FlatMap')
f(19,12325,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,12325,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,12325,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,12325,4,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(19,12329,556,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,12329,17,1,'cats/effect/IO.flatMap')
f(21,12329,17,1,'cats/effect/IO$FlatMap$.apply')
f(22,12329,17,2,'cats.effect.IO$FlatMap')
f(20,12346,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,12346,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,12346,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,12346,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(20,12362,523,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,12362,27,1,'cats/effect/IO.flatMap')
f(22,12362,27,1,'cats/effect/IO$FlatMap$.apply')
f(23,12362,27,2,'cats.effect.IO$FlatMap')
f(21,12389,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,12389,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,12389,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,12389,10,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(21,12399,486,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(22,12399,37,1,'cats/effect/IO.flatMap')
f(23,12399,37,1,'cats/effect/IO$FlatMap$.apply')
f(24,12399,37,2,'cats.effect.IO$FlatMap')
f(22,12436,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,12436,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,12436,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,12436,24,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(22,12460,425,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(23,12460,27,1,'cats/effect/IO.flatMap')
f(24,12460,27,1,'cats/effect/IO$FlatMap$.apply')
f(25,12460,27,2,'cats.effect.IO$FlatMap')
f(23,12487,45,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,12487,45,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,12487,45,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,12487,45,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(23,12532,353,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(24,12532,23,1,'cats/effect/IO.flatMap')
f(25,12532,23,1,'cats/effect/IO$FlatMap$.apply')
f(26,12532,23,2,'cats.effect.IO$FlatMap')
f(24,12555,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,12555,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,12555,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,12555,10,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(24,12565,320,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(25,12565,24,1,'cats/effect/IO.flatMap')
f(26,12565,24,1,'cats/effect/IO$FlatMap$.apply')
f(27,12565,24,2,'cats.effect.IO$FlatMap')
f(25,12589,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(26,12589,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(27,12589,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(28,12589,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(25,12604,281,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(26,12604,17,1,'cats/effect/IO.flatMap')
f(27,12604,17,1,'cats/effect/IO$FlatMap$.apply')
f(28,12604,17,2,'cats.effect.IO$FlatMap')
f(26,12621,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(27,12621,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(28,12621,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(29,12621,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(26,12637,248,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(27,12637,17,1,'cats/effect/IO.flatMap')
f(28,12637,17,1,'cats/effect/IO$FlatMap$.apply')
f(29,12637,17,2,'cats.effect.IO$FlatMap')
f(27,12654,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(28,12654,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(29,12654,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(30,12654,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(27,12670,215,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(28,12670,29,1,'cats/effect/IO.flatMap')
f(29,12670,29,1,'cats/effect/IO$FlatMap$.apply')
f(30,12670,29,2,'cats.effect.IO$FlatMap')
f(28,12699,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(29,12699,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(30,12699,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,12699,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(28,12714,171,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(29,12714,26,1,'cats/effect/IO.flatMap')
f(30,12714,26,1,'cats/effect/IO$FlatMap$.apply')
f(31,12714,26,2,'cats.effect.IO$FlatMap')
f(29,12740,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,12740,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,12740,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,12740,24,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(29,12764,121,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(30,12764,26,1,'cats/effect/IO.flatMap')
f(31,12764,26,1,'cats/effect/IO$FlatMap$.apply')
f(32,12764,26,2,'cats.effect.IO$FlatMap')
f(30,12790,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(31,12790,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(32,12790,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(33,12790,12,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(30,12802,83,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(31,12802,49,1,'cats/effect/IO.flatMap')
f(32,12802,49,1,'cats/effect/IO$FlatMap$.apply')
f(33,12802,49,2,'cats.effect.IO$FlatMap')
f(31,12851,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,12851,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,12851,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,12851,17,2,'kyo.bench.BroadFlatMapBench$$Lambda$41+0x0000000800cbf198')
f(31,12868,17,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(32,12868,17,1,'cats/effect/IO$.pure')
f(33,12868,17,1,'cats/effect/IO$Pure$.apply')
f(34,12868,17,2,'cats.effect.IO$Pure')
f(1,12885,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,12885,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,12885,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,12885,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,12885,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,12885,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,12885,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,12885,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,12885,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,12885,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,12885,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,12885,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,12885,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,252,3,'all')
f(1,0,219,1,'cats/effect/unsafe/WorkerThread.run')
f(2,2,202,1,'cats/effect/IOFiber.run',3,0,0)
f(3,3,157,1,'cats/effect/IOFiber.autoCedeR')
f(4,3,157,1,'cats/effect/IOFiber.runLoop')
f(5,23,7,2,'cats/effect/ArrayStack.push',7,0,0)
f(6,28,2,2,'cats/effect/ArrayStack.checkAndGrow',2,0,0)
f(5,30,6,2,'cats/effect/ByteStack$.push',6,0,0)
f(6,34,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(5,36,3,2,'cats/effect/IO$FlatMap.f',3,0,0)
f(5,39,7,2,'cats/effect/IO$FlatMap.ioe',7,0,0)
f(5,46,3,2,'cats/effect/IO$Pure.value',3,0,0)
f(5,49,20,1,'cats/effect/IOFiber.next$2')
f(6,49,20,2,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply',20,0,0)
f(7,54,15,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',15,0,0)
f(8,54,15,2,'kyo/bench/BroadFlatMapBench.catsFib$1',15,0,0)
f(9,54,7,2,'kyo/bench/BroadFlatMapBench.catsFib$1',7,0,0)
f(10,55,6,2,'scala/math/BigInt$.apply',6,0,0)
f(9,61,8,2,'scala/math/BigInt$.apply',8,0,0)
f(10,64,5,2,'scala/math/BigInt$.getCached',5,0,0)
f(11,67,2,2,'scala/math/BigInt.<init>',2,0,0)
f(5,69,3,2,'cats/effect/IOFiber.shouldFinalize',3,0,0)
f(5,72,88,1,'cats/effect/IOFiber.succeeded')
f(6,79,8,2,'cats/effect/ByteStack$.pop',8,0,0)
f(7,82,5,2,'cats/effect/ByteStack$.peek',5,0,0)
f(6,87,26,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,87,26,1,'cats/effect/IOFiber.done')
f(8,87,26,1,'cats/effect/CallbackStack.apply')
f(9,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(10,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(11,87,26,1,'cats/effect/IO$$Lambda$90.0x0000000800d5c530.applyVoid')
f(12,87,26,1,'cats/effect/IO.$anonfun$6')
f(13,87,26,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,87,26,1,'cats/effect/kernel/Outcome.fold$')
f(15,87,26,1,'cats/effect/kernel/Outcome.fold')
f(16,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(17,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(18,87,26,1,'cats/effect/IO$$Lambda$97.0x0000000800d5fbc0.applyVoid')
f(19,87,26,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(21,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(22,87,26,1,'cats/effect/IO$$Lambda$89.0x0000000800d57448.applyVoid')
f(23,87,26,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(25,87,26,1,'scala/runtime/function/JProcedure1.apply')
f(26,87,26,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d56978.applyVoid')
f(27,87,26,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1',1,0,0)
f(28,87,26,1,'java/util/concurrent/ArrayBlockingQueue.offer',1,0,0)
f(29,87,1,2,'java/util/concurrent/locks/ReentrantLock.lock',1,0,0)
f(30,87,1,2,'java/util/concurrent/locks/ReentrantLock$Sync.lock',1,0,0)
f(31,87,1,2,'java/util/concurrent/locks/ReentrantLock$NonfairSync.initialTryLock',1,0,0)
f(32,87,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer.compareAndSetState',1,0,0)
f(29,88,25,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,88,25,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,88,25,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,88,25,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,88,25,1,'jdk/internal/misc/Unsafe.unpark')
f(34,88,1,3,'Unsafe_Unpark')
f(35,88,1,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(34,89,1,3,'__tls_get_addr')
f(34,90,23,3,'pthread_cond_signal')
f(35,91,22,5,'entry_SYSCALL_64_after_hwframe')
f(36,91,22,5,'do_syscall_64')
f(37,91,22,5,'__x64_sys_futex')
f(38,91,22,5,'do_futex')
f(39,91,22,5,'futex_wake')
f(40,93,20,5,'wake_up_q')
f(41,93,20,5,'_raw_spin_unlock_irqrestore')
f(6,113,18,2,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply',12,0,0)
f(7,113,18,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',12,0,0)
f(8,113,1,1,'cats/effect/IO.flatMap')
f(9,113,1,1,'cats/effect/IO$FlatMap$.apply')
f(10,113,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(11,113,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(12,113,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(8,114,17,2,'kyo/bench/BroadFlatMapBench.catsFib$1',12,0,0)
f(9,116,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,116,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,116,2,2,'cats/effect/IO.flatMap',2,0,0)
f(12,116,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(11,118,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,118,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(13,118,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(14,118,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(12,119,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,119,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,119,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,119,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,119,1,2,'cats/effect/IO.flatMap',1,0,0)
f(17,119,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(11,120,1,2,'scala/math/BigInt$.apply',1,0,0)
f(12,120,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,121,10,2,'scala/math/BigInt$.apply',10,0,0)
f(10,123,8,2,'scala/math/BigInt$.getCached',8,0,0)
f(11,128,3,2,'scala/math/BigInt.<init>',3,0,0)
f(12,128,3,2,'scala/math/ScalaNumber.<init>',3,0,0)
f(13,129,2,2,'java/lang/Number.<init>',2,0,0)
f(6,131,29,2,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5ec28.apply',29,0,0)
f(7,132,28,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',28,0,0)
f(8,141,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,141,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(8,142,18,2,'scala/math/BigInt.$plus',18,0,0)
f(9,151,6,2,'scala/math/BigInt$.apply',6,0,0)
f(9,157,3,2,'scala/math/BigInt.longEncoding',3,0,0)
f(3,160,44,1,'cats/effect/IOFiber.execR',2,0,0)
f(4,161,1,2,'cats/effect/ArrayStack.init',1,0,0)
f(4,162,42,1,'cats/effect/IOFiber.runLoop')
f(5,168,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(5,170,2,2,'cats/effect/ByteStack$.push',2,0,0)
f(6,171,1,2,'cats/effect/ByteStack$.growIfNeeded',1,0,0)
f(5,172,1,2,'cats/effect/IO$FlatMap.f',1,0,0)
f(5,173,1,2,'cats/effect/IO$FlatMap.ioe',1,0,0)
f(5,174,6,1,'cats/effect/IOFiber.next$2')
f(6,174,6,2,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply',6,0,0)
f(7,175,5,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',5,0,0)
f(8,175,5,2,'kyo/bench/BroadFlatMapBench.catsFib$1',5,0,0)
f(9,175,1,2,'kyo/bench/BroadFlatMapBench.catsFib$1',1,0,0)
f(10,175,1,2,'scala/math/BigInt$.apply',1,0,0)
f(11,175,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,176,4,2,'scala/math/BigInt$.apply',4,0,0)
f(10,178,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(5,180,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,181,23,1,'cats/effect/IOFiber.succeeded')
f(6,184,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,184,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,185,11,1,'kyo/bench/BroadFlatMapBench$$Lambda$41.0x0000000800cbf198.apply',3,0,0)
f(7,185,11,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',3,0,0)
f(8,185,11,1,'kyo/bench/BroadFlatMapBench.catsFib$1',3,0,0)
f(9,185,8,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,185,8,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,185,2,2,'cats/effect/IO.flatMap',2,0,0)
f(12,185,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(11,187,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(12,187,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(13,187,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,188,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,189,1,2,'cats/effect/IO.flatMap',1,0,0)
f(13,189,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(12,190,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,190,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,190,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,190,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(16,190,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(17,190,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,191,2,2,'scala/math/BigInt$.apply',2,0,0)
f(12,191,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(9,193,3,2,'scala/math/BigInt$.apply',3,0,0)
f(10,193,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(11,194,2,2,'scala/math/BigInt.<init>',2,0,0)
f(12,194,2,2,'scala/math/ScalaNumber.<init>',2,0,0)
f(13,195,1,2,'java/lang/Number.<init>',1,0,0)
f(6,196,8,2,'kyo/bench/BroadFlatMapBench$$Lambda$94.0x0000000800d5ec28.apply',8,0,0)
f(7,197,7,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',7,0,0)
f(8,198,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,198,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,198,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(8,199,5,2,'scala/math/BigInt.$plus',5,0,0)
f(9,201,2,2,'scala/math/BigInt$.apply',2,0,0)
f(9,203,1,2,'scala/math/BigInt.longEncoding',1,0,0)
f(2,204,14,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,204,14,1,'java/util/concurrent/locks/LockSupport.park')
f(4,204,14,1,'jdk/internal/misc/Unsafe.park')
f(5,204,1,4,'JavaThread::threadObj() const')
f(5,205,1,3,'Unsafe_Park')
f(6,205,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,205,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,205,1,5,'do_syscall_64')
f(9,205,1,5,'__x64_sys_futex')
f(10,205,1,5,'do_futex')
f(11,205,1,5,'hash_futex')
f(5,206,11,3,'[unknown]')
f(6,206,9,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,206,9,5,'entry_SYSCALL_64_after_hwframe')
f(8,206,8,5,'do_syscall_64')
f(9,206,8,5,'__x64_sys_futex')
f(10,206,8,5,'do_futex')
f(11,206,8,5,'futex_wait')
f(12,206,8,5,'futex_wait_queue_me')
f(13,207,7,5,'schedule')
f(14,207,7,5,'__schedule')
f(15,207,7,5,'finish_task_switch.isra.0')
f(8,214,1,5,'syscall_exit_to_user_mode')
f(6,215,2,3,'pthread_cond_wait')
f(5,217,1,4,'java_lang_Thread::set_thread_status(oopDesc*, JavaThreadStatus)')
f(2,218,1,2,'java/util/concurrent/atomic/AtomicBoolean.lazySet',1,0,0)
f(1,219,33,1,'java/lang/Thread.run')
f(2,219,33,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,219,33,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,219,33,1,'java/util/concurrent/FutureTask.run')
f(5,219,33,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,219,33,1,'java/util/concurrent/FutureTask.run')
f(7,219,33,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,219,33,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,219,33,1,'java/lang/reflect/Method.invoke')
f(10,219,33,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,219,33,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,219,33,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,219,33,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,219,33,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,219,33,1,'kyo/bench/Bench.syncCats')
f(16,219,33,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,219,33,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,219,14,1,'cats/effect/IO.unsafeRunAsync')
f(19,219,14,1,'cats/effect/IO.unsafeRunFiber')
f(20,219,1,1,'cats/effect/IOFiber.<init>')
f(20,220,13,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,220,13,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,220,13,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,220,13,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,220,13,1,'jdk/internal/misc/Unsafe.unpark')
f(25,220,1,3,'Unsafe_Unpark')
f(26,220,1,3,'pthread_mutex_lock')
f(25,221,12,3,'pthread_cond_signal')
f(26,222,11,5,'entry_SYSCALL_64_after_hwframe')
f(27,222,11,5,'do_syscall_64')
f(28,222,11,5,'__x64_sys_futex')
f(29,222,11,5,'do_futex')
f(30,222,11,5,'futex_wake')
f(31,222,1,5,'wake_q_add_safe')
f(31,223,10,5,'wake_up_q')
f(32,223,10,5,'_raw_spin_unlock_irqrestore')
f(18,233,19,1,'scala/concurrent/package$.blocking')
f(19,233,19,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,233,19,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e338.apply',3,0,0)
f(21,233,19,1,'cats/effect/IOPlatform.$anonfun$1',3,0,0)
f(22,233,19,1,'java/util/concurrent/ArrayBlockingQueue.poll',3,0,0)
f(23,233,18,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos',2,0,0)
f(24,234,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.enableWait',1,0,0)
f(25,234,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer$Node.setStatusRelaxed',1,0,0)
f(24,235,16,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,235,16,1,'jdk/internal/misc/Unsafe.park')
f(26,235,3,3,'Unsafe_Park')
f(27,235,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,235,2,5,'entry_SYSCALL_64_after_hwframe')
f(29,235,2,5,'do_syscall_64')
f(30,235,2,5,'syscall_enter_from_user_mode')
f(27,237,1,3,'clock_gettime')
f(28,237,1,3,'[vdso]')
f(26,238,13,3,'[unknown]')
f(27,238,13,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,238,13,5,'entry_SYSCALL_64_after_hwframe')
f(29,238,13,5,'do_syscall_64')
f(30,238,13,5,'__x64_sys_futex')
f(31,238,12,5,'do_futex')
f(32,238,12,5,'futex_wait')
f(33,240,10,5,'futex_wait_queue_me')
f(34,240,10,5,'schedule')
f(35,240,10,5,'__schedule')
f(36,240,10,5,'finish_task_switch.isra.0')
f(31,250,1,5,'get_timespec64')
f(32,250,1,5,'copy_user_generic_unrolled')
f(23,251,1,2,'java/util/concurrent/locks/ReentrantLock.lockInterruptibly',1,0,0)
f(24,251,1,2,'java/util/concurrent/locks/ReentrantLock$Sync.lockInterruptibly',1,0,0)
f(25,251,1,2,'java/util/concurrent/locks/ReentrantLock$NonfairSync.initialTryLock',1,0,0)
f(26,251,1,2,'java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread',1,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,18944,3,'all')
f(1,0,18141,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18141,1,'cats/effect/IOFiber.run')
f(3,0,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,1,1,'cats/effect/IOFiber.succeeded')
f(5,0,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,0,1,1,'cats/effect/IO$.pure')
f(7,0,1,1,'cats/effect/IO$Pure$.apply')
f(8,0,1,2,'cats.effect.IO$Pure')
f(3,1,3,1,'cats/effect/IOFiber.cedeR')
f(4,1,3,1,'cats/effect/IOFiber.runLoop')
f(5,1,1,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,1,1,2,'cats.effect.IO$IOCont$Get')
f(5,2,1,1,'cats/effect/IOFiber.<init>')
f(6,2,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,2,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,2,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,2,1,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5d750')
f(5,3,1,1,'cats/effect/IOFiber.succeeded')
f(6,3,1,1,'kyo/bench/ChainedForkBench$$Lambda$98.0x0000000800d5a5f0.apply')
f(7,3,1,1,'kyo/bench/ChainedForkBench.catsBench$$anonfun$1$$anonfun$1')
f(8,3,1,1,'cats/effect/IO.map')
f(9,3,1,1,'cats/effect/IO$Map$.apply')
f(10,3,1,2,'cats.effect.IO$Map')
f(3,4,18137,1,'cats/effect/IOFiber.execR')
f(4,4,5222,1,'cats/effect/ArrayStack.init')
f(5,4,5222,2,'java.lang.Object[]')
f(4,5226,1058,1,'cats/effect/ByteStack$.create')
f(5,5226,1058,2,'int[]')
f(4,6284,11857,1,'cats/effect/IOFiber.runLoop')
f(5,6284,2450,2,'cats.effect.IOFiber')
f(5,8734,5623,1,'cats/effect/IOFiber.<init>')
f(6,8734,1620,1,'cats/effect/ArrayStack$.apply')
f(7,8734,1620,2,'cats.effect.ArrayStack')
f(6,10354,854,1,'cats/effect/CallbackStack$.apply')
f(7,10354,854,2,'cats.effect.CallbackStack')
f(6,11208,1087,1,'cats/effect/IO$.async')
f(7,11208,442,2,'cats.effect.IO$$anon$3')
f(7,11650,645,1,'cats/effect/IO$IOCont$.apply')
f(8,11650,645,2,'cats.effect.IO$IOCont')
f(6,12295,1104,1,'cats/effect/IO$.uncancelable')
f(7,12295,1104,1,'cats/effect/IO$Uncancelable$.apply')
f(8,12295,1104,2,'cats.effect.IO$Uncancelable')
f(6,13399,958,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,13399,958,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,13399,958,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,13399,480,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d160')
f(9,13879,478,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5d750')
f(5,14357,2038,1,'cats/effect/IOFiber.next$2')
f(6,14357,2038,1,'kyo/bench/ChainedForkBench$$Lambda$97.0x0000000800d5a000.apply')
f(7,14357,2038,1,'kyo/bench/ChainedForkBench.iterate$1$$anonfun$1')
f(8,14357,516,1,'cats/effect/IO.start')
f(9,14357,516,1,'cats/effect/IO$Start$.apply')
f(10,14357,516,2,'cats.effect.IO$Start')
f(8,14873,1522,1,'kyo/bench/ChainedForkBench.iterate$1')
f(9,14873,730,1,'cats/effect/IO.flatMap')
f(10,14873,730,1,'cats/effect/IO$FlatMap$.apply')
f(11,14873,730,2,'cats.effect.IO$FlatMap')
f(9,15603,792,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,15603,792,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59400.newInvokeSpecial')
f(11,15603,792,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,15603,792,2,'kyo.bench.ChainedForkBench$$Lambda$97+0x0000000800d5a000')
f(5,16395,1746,1,'cats/effect/IOFiber.succeeded')
f(6,16395,1746,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,16395,866,1,'cats/effect/IO$.pure')
f(8,16395,866,1,'cats/effect/IO$Pure$.apply')
f(9,16395,866,2,'cats.effect.IO$Pure')
f(7,17261,420,1,'cats/effect/IOFiber.done')
f(8,17261,420,1,'cats/effect/IO$.pure')
f(9,17261,420,1,'cats/effect/IO$Pure$.apply')
f(10,17261,420,2,'cats.effect.IO$Pure')
f(7,17681,460,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,17681,460,2,'cats.effect.kernel.Outcome$Succeeded')
f(1,18141,800,1,'java/lang/Thread.run')
f(2,18141,800,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18141,800,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18141,800,1,'java/util/concurrent/FutureTask.run')
f(5,18141,800,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18141,800,1,'java/util/concurrent/FutureTask.run')
f(7,18141,800,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18141,800,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18141,800,1,'java/lang/reflect/Method.invoke')
f(10,18141,800,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18141,800,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18141,800,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18141,800,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_Throughput')
f(14,18141,799,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,18141,799,1,'kyo/bench/Bench.forkCats')
f(16,18141,3,1,'cats/effect/IO.flatMap')
f(17,18141,3,1,'cats/effect/IO$FlatMap$.apply')
f(18,18141,3,2,'cats.effect.IO$FlatMap')
f(16,18144,795,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18144,704,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18144,416,1,'cats/effect/IO.unsafeRunAsync')
f(19,18144,329,1,'cats/effect/IO.unsafeRunFiber')
f(20,18144,86,2,'cats.effect.IOFiber')
f(20,18230,2,5,'cats.effect.IOFiber')
f(20,18232,179,1,'cats/effect/IOFiber.<init>')
f(21,18232,96,1,'cats/effect/ArrayStack$.apply')
f(22,18232,96,2,'cats.effect.ArrayStack')
f(21,18328,2,1,'cats/effect/CallbackStack$.apply')
f(22,18328,2,2,'cats.effect.CallbackStack')
f(21,18330,10,1,'cats/effect/IO$.async')
f(22,18330,2,2,'cats.effect.IO$$anon$3')
f(22,18332,8,1,'cats/effect/IO$IOCont$.apply')
f(23,18332,8,2,'cats.effect.IO$IOCont')
f(21,18340,64,1,'cats/effect/IO$.uncancelable')
f(22,18340,64,1,'cats/effect/IO$Uncancelable$.apply')
f(23,18340,64,2,'cats.effect.IO$Uncancelable')
f(21,18404,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,18404,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,18404,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,18404,7,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d160')
f(20,18411,60,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,18411,60,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,18411,60,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,18411,60,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,18411,60,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,18471,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,18471,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,18471,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,18471,2,2,'cats.effect.IO$$Lambda$90+0x0000000800d5c530')
f(19,18473,87,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,18473,87,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,18473,87,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,18473,8,2,'cats.effect.IO$$Lambda$87+0x0000000800d56b78')
f(22,18481,77,2,'cats.effect.IO$$Lambda$88+0x0000000800d56e38')
f(22,18558,2,2,'cats.effect.IO$$Lambda$89+0x0000000800d57240')
f(18,18560,7,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,18567,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,18567,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,18567,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,18567,5,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d56770')
f(21,18572,2,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5df28')
f(18,18574,171,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,18574,171,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,18574,79,2,'java.lang.Object[]')
f(20,18653,6,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,18653,6,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,18659,86,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,18659,86,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,18659,86,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,18745,26,1,'scala/concurrent/package$.blocking')
f(19,18745,26,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,18745,26,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5df28.apply')
f(21,18745,26,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,18745,26,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,18745,26,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,18745,26,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,18771,77,1,'scala/util/Either.fold')
f(19,18771,77,1,'cats/effect/IOPlatform$$Lambda$113.0x0000000800d7f170.apply')
f(20,18771,77,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,18771,77,1,'scala/Some$.apply')
f(22,18771,77,2,'scala.Some')
f(17,18848,91,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,18848,91,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,18848,91,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,18848,91,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,18848,91,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,18848,91,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,18848,91,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,18848,91,2,'scala.concurrent.duration.FiniteDuration')
f(16,18939,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,18939,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,18939,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,18939,1,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8db88')
f(14,18940,1,2,'org.openjdk.jmh.results.RawResults')
f(1,18941,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,18941,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,18941,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,18941,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,18941,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,18941,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,18941,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,18941,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,18941,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,18941,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,18941,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,18941,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,18941,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 592px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(37);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,429,3,'all')
f(1,0,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,8,3,'thread_native_entry(Thread*)')
f(3,0,8,4,'Thread::call_run()')
f(4,0,7,4,'JavaThread::thread_main_inner()')
f(5,0,7,4,'CompileBroker::compiler_thread_loop()')
f(6,0,7,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,7,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,7,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,7,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseCFG::do_global_code_motion()')
f(11,0,1,4,'PhaseCFG::global_code_motion()')
f(12,0,1,4,'PhaseCFG::schedule_late(VectorSet&, Node_Stack&)')
f(13,0,1,4,'Node_Backward_Iterator::next()')
f(10,1,5,4,'PhaseChaitin::Register_Allocate()')
f(11,1,1,4,'PhaseAggressiveCoalesce::insert_copies(Matcher&)')
f(11,2,1,4,'PhaseChaitin::Select()')
f(12,2,1,4,'PhaseIFG::re_insert(unsigned int)')
f(11,3,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,3,1,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(13,3,1,4,'IndexSetIterator::advance_and_next()')
f(11,4,1,4,'PhaseChaitin::gather_lrg_masks(bool)')
f(11,5,1,4,'PhaseIFG::Compute_Effective_Degree()')
f(12,5,1,4,'PhaseIFG::effective_degree(unsigned int) const')
f(13,5,1,4,'IndexSetIterator::advance_and_next()')
f(10,6,1,4,'PhaseOutput::fill_buffer(CodeBuffer*, unsigned int*)')
f(11,6,1,4,'NonSafepointEmitter::emit_non_safepoint()')
f(12,6,1,4,'DebugInformationRecorder::describe_scope(int, methodHandle const&, ciMethod*, int, bool, bool, bool, bool, bool, bool, bool, DebugToken*, DebugToken*, DebugToken*)')
f(13,6,1,4,'DebugInformationRecorder::find_sharable_decode_offset(int)')
f(4,7,1,4,'VMThread::run()')
f(5,7,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,7,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,7,1,4,'VM_Operation::evaluate()')
f(8,7,1,4,'VM_G1CollectForAllocation::doit()')
f(9,7,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,7,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,7,1,4,'G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo&, G1RedirtyCardsQueueSet*, G1ParScanThreadStateSet*)')
f(12,7,1,4,'G1CollectedHeap::post_evacuate_cleanup_1(G1ParScanThreadStateSet*, G1RedirtyCardsQueueSet*)')
f(13,7,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(14,7,1,3,'sem_post')
f(15,7,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,7,1,5,'do_syscall_64')
f(17,7,1,5,'__x64_sys_futex')
f(18,7,1,5,'do_futex')
f(19,7,1,5,'futex_wake')
f(20,7,1,5,'wake_up_q')
f(21,7,1,5,'_raw_spin_unlock_irqrestore')
f(1,8,2,3,'[unknown_Java]')
f(2,8,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,9,1,1,'cats/effect/IOFiber.succeeded')
f(1,10,417,1,'cats/effect/unsafe/WorkerThread.run')
f(2,19,259,1,'cats/effect/IOFiber.run',12,0,0)
f(3,23,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,23,1,1,'cats/effect/IOFiber.succeeded')
f(5,23,1,2,'cats/effect/IOFiber.runTerminusSuccessK',1,0,0)
f(3,24,2,2,'cats/effect/IOFiber.cedeR',1,0,0)
f(4,25,1,1,'cats/effect/IOFiber.runLoop')
f(5,25,1,3,'vtable stub')
f(3,26,252,1,'cats/effect/IOFiber.execR',9,0,0)
f(4,37,4,2,'cats/effect/ArrayStack.init',3,0,0)
f(4,41,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(4,42,236,1,'cats/effect/IOFiber.runLoop')
f(5,64,1,2,'cats/effect/ContState.<init>',1,0,0)
f(5,65,6,6,'cats/effect/IO$FlatMap.tag',0,6,0)
f(5,71,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(5,73,53,1,'cats/effect/IOFiber.<init>')
f(6,111,4,2,'cats/effect/CallbackStack$.apply',4,0,0)
f(6,115,5,2,'cats/effect/IO$.async',5,0,0)
f(7,118,2,2,'cats/effect/IO$IOCont$.apply',2,0,0)
f(6,120,2,2,'cats/effect/IO$.uncancelable',2,0,0)
f(7,120,2,2,'cats/effect/IO$Uncancelable$.apply',2,0,0)
f(6,122,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(7,122,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(8,122,4,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',4,0,0)
f(5,126,108,1,'cats/effect/IOFiber.scheduleFiber',32,0,0)
f(6,126,108,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',32,0,0)
f(7,126,108,1,'cats/effect/unsafe/WorkerThread.schedule',32,0,0)
f(8,126,18,2,'cats/effect/unsafe/LocalQueue.enqueue',18,0,0)
f(9,136,3,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',3,0,0)
f(9,139,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',5,0,0)
f(8,144,90,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',14,0,0)
f(9,154,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(10,154,1,2,'java/util/Random.nextInt',1,0,0)
f(9,155,79,1,'java/util/concurrent/locks/LockSupport.unpark',3,0,0)
f(10,158,76,1,'jdk/internal/misc/Unsafe.unpark')
f(11,159,2,3,'Unsafe_Unpark')
f(12,159,1,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(12,160,1,3,'pthread_mutex_lock')
f(11,161,73,3,'pthread_cond_signal')
f(12,166,68,5,'entry_SYSCALL_64_after_hwframe')
f(13,166,68,5,'do_syscall_64')
f(14,166,67,5,'__x64_sys_futex')
f(15,166,67,5,'do_futex')
f(16,166,67,5,'futex_wake')
f(17,171,2,5,'mark_wake_futex')
f(17,173,1,5,'wake_q_add_safe')
f(17,174,59,5,'wake_up_q')
f(18,174,59,5,'_raw_spin_unlock_irqrestore')
f(14,233,1,5,'syscall_enter_from_user_mode')
f(5,234,39,1,'cats/effect/IOFiber.succeeded')
f(6,246,27,2,'cats/effect/IOFiber.runTerminusSuccessK',27,0,0)
f(7,252,5,2,'cats/effect/IO$.pure',5,0,0)
f(7,257,7,2,'cats/effect/IOFiber.done',7,0,0)
f(7,264,9,2,'cats/effect/kernel/Outcome$Succeeded$.apply',9,0,0)
f(5,273,5,3,'vtable stub')
f(2,278,9,2,'cats/effect/unsafe/LocalQueue.dequeue',3,0,0)
f(3,285,2,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet')
f(4,286,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck')
f(2,287,23,1,'cats/effect/unsafe/ScalQueue.poll',6,0,0)
f(3,294,12,1,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(4,305,1,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',1,0,0)
f(5,305,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,305,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(3,306,4,1,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,306,4,1,'java/util/Random.nextInt',1,0,0)
f(2,310,21,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,311,4,1,'cats/effect/unsafe/LocalQueue.nonEmpty')
f(4,312,3,1,'cats/effect/unsafe/LocalQueue.isEmpty')
f(5,312,3,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get')
f(6,314,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck')
f(3,315,16,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,315,16,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,315,16,1,'jdk/internal/misc/Unsafe.unpark')
f(6,315,1,3,'Unsafe_Unpark')
f(6,316,15,3,'pthread_cond_signal')
f(7,317,14,5,'entry_SYSCALL_64_after_hwframe')
f(8,317,14,5,'do_syscall_64')
f(9,317,14,5,'__x64_sys_futex')
f(10,317,14,5,'do_futex')
f(11,317,14,5,'futex_wake')
f(12,317,14,5,'wake_up_q')
f(13,317,14,5,'_raw_spin_unlock_irqrestore')
f(2,331,14,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,332,3,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,332,3,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',3,0,0)
f(5,333,2,2,'cats/effect/unsafe/LocalQueue.lsb',2,0,0)
f(3,335,10,2,'cats/effect/unsafe/ScalQueue.poll',10,0,0)
f(4,339,6,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',6,0,0)
f(2,345,80,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,345,80,1,'java/util/concurrent/locks/LockSupport.park')
f(4,345,80,1,'jdk/internal/misc/Unsafe.park')
f(5,347,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(5,348,8,3,'Unsafe_Park')
f(6,349,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,349,4,5,'entry_SYSCALL_64_after_hwframe')
f(8,349,4,5,'do_syscall_64')
f(9,349,4,5,'__x64_sys_futex')
f(10,349,4,5,'do_futex')
f(11,349,2,5,'futex_wake')
f(11,351,2,5,'hash_futex')
f(6,353,2,4,'Parker::park(bool, long)')
f(6,355,1,3,'pthread_mutex_unlock')
f(5,356,67,3,'[unknown]')
f(6,356,64,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,362,58,5,'entry_SYSCALL_64_after_hwframe')
f(8,362,58,5,'do_syscall_64')
f(9,363,51,5,'__x64_sys_futex')
f(10,363,51,5,'do_futex')
f(11,363,51,5,'futex_wait')
f(12,366,1,5,'__get_user_nocheck_4')
f(12,367,46,5,'futex_wait_queue_me')
f(13,367,46,5,'schedule')
f(14,367,46,5,'__schedule')
f(15,368,45,5,'finish_task_switch.isra.0')
f(12,413,1,5,'futex_wait_setup')
f(9,414,2,5,'syscall_enter_from_user_mode')
f(9,416,4,5,'syscall_exit_to_user_mode')
f(10,416,4,5,'exit_to_user_mode_prepare')
f(11,416,4,5,'exit_to_user_mode_loop')
f(12,416,2,5,'__rseq_handle_notify_resume')
f(13,417,1,5,'__put_user_nocheck_8')
f(12,418,1,5,'blkcg_maybe_throttle_current')
f(12,419,1,5,'mem_cgroup_handle_over_high')
f(6,420,3,3,'pthread_cond_wait')
f(5,423,2,4,'java_lang_Thread::get_thread_status(oopDesc*)')
f(2,425,2,2,'java/util/concurrent/atomic/AtomicBoolean.lazySet',2,0,0)
f(3,425,2,2,'java/lang/invoke/VarHandleGuards.guard_LI_V',2,0,0)
f(1,427,2,1,'java/lang/Thread.run')
f(2,427,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,427,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,427,2,1,'java/util/concurrent/FutureTask.run')
f(5,427,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,427,2,1,'java/util/concurrent/FutureTask.run')
f(7,427,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,427,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,427,2,1,'java/lang/reflect/Method.invoke')
f(10,427,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,427,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,427,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,427,2,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_Throughput')
f(14,427,2,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,427,2,1,'kyo/bench/Bench.forkCats')
f(16,427,2,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,427,2,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,427,2,1,'scala/concurrent/package$.blocking')
f(19,427,2,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,427,2,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e130.apply')
f(21,427,2,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,427,2,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,427,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,427,2,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,427,2,1,'jdk/internal/misc/Unsafe.park')
f(26,427,2,3,'[unknown]')
f(27,427,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,427,2,5,'entry_SYSCALL_64_after_hwframe')
f(29,427,2,5,'do_syscall_64')
f(30,427,2,5,'__x64_sys_futex')
f(31,427,2,5,'do_futex')
f(32,427,2,5,'futex_wait')
f(33,427,2,5,'futex_wait_queue_me')
f(34,427,2,5,'schedule')
f(35,427,2,5,'__schedule')
f(36,427,2,5,'finish_task_switch.isra.0')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,19499,3,'all')
f(1,0,18548,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18548,1,'cats/effect/IOFiber.run')
f(3,0,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,1,1,'cats/effect/IOFiber.succeeded')
f(5,0,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,0,1,1,'cats/effect/IOFiber.done')
f(7,0,1,1,'cats/effect/CallbackStack.apply')
f(8,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,0,1,1,'cats/effect/IO$$Lambda$92.0x0000000800d5cfc0.applyVoid')
f(11,0,1,1,'cats/effect/IO.$anonfun$6')
f(12,0,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,0,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,0,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,0,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(16,0,1,2,'cats.effect.IO$$Lambda$108+0x0000000800d7b9b0')
f(3,1,18547,1,'cats/effect/IOFiber.execR')
f(4,1,5405,1,'cats/effect/ArrayStack.init')
f(5,1,5405,2,'java.lang.Object[]')
f(4,5406,1102,1,'cats/effect/ByteStack$.create')
f(5,5406,1102,2,'int[]')
f(4,6508,12040,1,'cats/effect/IOFiber.runLoop')
f(5,6508,1,2,'cats.effect.ContState')
f(5,6509,2408,2,'cats.effect.IOFiber')
f(5,8917,1,1,'cats/effect/IODeferred$$anon$1$$Lambda$101.0x0000000800d60500.apply')
f(6,8917,1,1,'cats/effect/IODeferred$$anon$1.apply$$anonfun$1')
f(7,8917,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,8917,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,8917,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,8917,1,2,'cats.effect.IODeferred$$anon$1$$Lambda$102+0x0000000800d611d0')
f(5,8918,5566,1,'cats/effect/IOFiber.<init>')
f(6,8918,1519,1,'cats/effect/ArrayStack$.apply')
f(7,8918,1519,2,'cats.effect.ArrayStack')
f(6,10437,933,1,'cats/effect/CallbackStack$.apply')
f(7,10437,933,2,'cats.effect.CallbackStack')
f(6,11370,1128,1,'cats/effect/IO$.async')
f(7,11370,422,2,'cats.effect.IO$$anon$3')
f(7,11792,706,1,'cats/effect/IO$IOCont$.apply')
f(8,11792,706,2,'cats.effect.IO$IOCont')
f(6,12498,1075,1,'cats/effect/IO$.uncancelable')
f(7,12498,1075,1,'cats/effect/IO$Uncancelable$.apply')
f(8,12498,1075,2,'cats.effect.IO$Uncancelable')
f(6,13573,911,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,13573,911,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,13573,911,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,13573,503,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5ddf8')
f(9,14076,408,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5e3e8')
f(5,14484,2179,1,'cats/effect/IOFiber.next$2')
f(6,14484,2179,1,'kyo/bench/ChainedForkBench$$Lambda$96.0x0000000800d5fb28.apply')
f(7,14484,2179,1,'kyo/bench/ChainedForkBench.iterate$1$$anonfun$1')
f(8,14484,591,1,'cats/effect/IO.start')
f(9,14484,591,1,'cats/effect/IO$Start$.apply')
f(10,14484,591,2,'cats.effect.IO$Start')
f(8,15075,1588,1,'kyo/bench/ChainedForkBench.iterate$1')
f(9,15075,756,1,'cats/effect/IO.flatMap')
f(10,15075,756,1,'cats/effect/IO$FlatMap$.apply')
f(11,15075,756,2,'cats.effect.IO$FlatMap')
f(9,15831,832,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,15831,832,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59400.newInvokeSpecial')
f(11,15831,832,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,15831,832,2,'kyo.bench.ChainedForkBench$$Lambda$96+0x0000000800d5fb28')
f(5,16663,1884,1,'cats/effect/IOFiber.succeeded')
f(6,16663,1884,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,16663,997,1,'cats/effect/IO$.pure')
f(8,16663,997,1,'cats/effect/IO$Pure$.apply')
f(9,16663,997,2,'cats.effect.IO$Pure')
f(7,17660,438,1,'cats/effect/IOFiber.done')
f(8,17660,438,1,'cats/effect/IO$.pure')
f(9,17660,438,1,'cats/effect/IO$Pure$.apply')
f(10,17660,438,2,'cats.effect.IO$Pure')
f(7,18098,449,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,18098,449,2,'cats.effect.kernel.Outcome$Succeeded')
f(5,18547,1,1,'kyo/bench/ChainedForkBench$$Lambda$41.0x0000000800c8eaa8.apply')
f(6,18547,1,1,'kyo/bench/ChainedForkBench.catsBench$$anonfun$1')
f(7,18547,1,1,'cats/effect/IO.flatMap')
f(8,18547,1,1,'cats/effect/IO$FlatMap$.apply')
f(9,18547,1,2,'cats.effect.IO$FlatMap')
f(1,18548,947,1,'java/lang/Thread.run')
f(2,18548,947,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18548,947,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18548,946,1,'java/util/concurrent/FutureTask.run')
f(5,18548,946,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18548,946,1,'java/util/concurrent/FutureTask.run')
f(7,18548,946,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18548,946,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18548,946,1,'java/lang/reflect/Method.invoke')
f(10,18548,946,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18548,946,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18548,946,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18548,946,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_Throughput')
f(14,18548,946,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,18548,946,1,'kyo/bench/Bench.syncCats')
f(16,18548,934,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18548,932,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18548,824,1,'cats/effect/IO.unsafeRunAsync')
f(19,18548,824,1,'cats/effect/IO.unsafeRunFiber')
f(20,18548,355,2,'cats.effect.IOFiber')
f(20,18903,92,5,'cats.effect.IOFiber')
f(20,18995,287,1,'cats/effect/IOFiber.<init>')
f(21,18995,142,1,'cats/effect/ArrayStack$.apply')
f(22,18995,142,2,'cats.effect.ArrayStack')
f(21,19137,48,1,'cats/effect/CallbackStack$.apply')
f(22,19137,48,2,'cats.effect.CallbackStack')
f(21,19185,46,1,'cats/effect/IO$.async')
f(22,19185,2,2,'cats.effect.IO$$anon$3')
f(22,19187,44,1,'cats/effect/IO$IOCont$.apply')
f(23,19187,44,2,'cats.effect.IO$IOCont')
f(21,19231,42,1,'cats/effect/IO$.uncancelable')
f(22,19231,42,1,'cats/effect/IO$Uncancelable$.apply')
f(23,19231,42,2,'cats.effect.IO$Uncancelable')
f(21,19273,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,19273,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,19273,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,19273,2,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5ddf8')
f(24,19275,7,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5e3e8')
f(20,19282,2,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,19282,2,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,19282,2,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,19282,2,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,19282,2,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,19284,88,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,19284,88,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,19284,88,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,19284,88,2,'cats.effect.IO$$Lambda$92+0x0000000800d5cfc0')
f(18,19372,2,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,19374,48,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,19374,48,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,19374,48,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,19374,48,2,'cats.effect.IOPlatform$$Lambda$95+0x0000000800d5edc8')
f(18,19422,2,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,19422,2,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,19422,1,2,'java.lang.Object[]')
f(20,19423,1,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,19423,1,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(18,19424,1,1,'scala/concurrent/package$.blocking')
f(19,19424,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,19424,1,1,'cats/effect/IOPlatform$$Lambda$95.0x0000000800d5edc8.apply')
f(21,19424,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,19424,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,19424,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,19424,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,19425,55,1,'scala/util/Either.fold')
f(19,19425,55,1,'cats/effect/IOPlatform$$Lambda$112.0x0000000800d7ebd8.apply')
f(20,19425,55,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,19425,55,1,'scala/Some$.apply')
f(22,19425,55,2,'scala.Some')
f(17,19480,2,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,19480,2,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,19480,2,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,19480,2,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,19480,2,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,19480,2,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,19480,2,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,19480,2,2,'scala.concurrent.duration.FiniteDuration')
f(16,19482,12,1,'kyo/bench/ChainedForkBench.catsBench')
f(17,19482,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,19482,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,19482,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,19482,12,2,'kyo.bench.ChainedForkBench$$Lambda$41+0x0000000800c8eaa8')
f(4,19494,1,1,'java/util/concurrent/ThreadPoolExecutor.getTask')
f(5,19494,1,1,'java/util/concurrent/LinkedBlockingQueue.take')
f(6,19494,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await')
f(7,19494,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(1,19495,4,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,19495,4,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,19495,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,19495,4,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,19495,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,19495,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,19495,4,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,19495,1,1,'java/util/concurrent/ExecutorCompletionService.poll')
f(9,19495,1,1,'java/util/concurrent/LinkedBlockingQueue.poll')
f(10,19495,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(11,19495,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(8,19496,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,19496,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,19496,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,19496,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,19496,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,19496,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 1024px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(64);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,433,3,'all')
f(1,0,10,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,10,3,'thread_native_entry(Thread*)')
f(3,0,10,4,'Thread::call_run()')
f(4,0,10,4,'JavaThread::thread_main_inner()')
f(5,0,10,4,'CompileBroker::compiler_thread_loop()')
f(6,0,10,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,10,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,10,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,6,4,'Compile::Code_Gen()')
f(10,0,1,4,'Matcher::match()')
f(11,0,1,4,'Arena::contains(void const*) const')
f(10,1,5,4,'PhaseChaitin::Register_Allocate()')
f(11,1,1,4,'PhaseChaitin::Simplify()')
f(12,1,1,4,'PhaseIFG::remove_node(unsigned int)')
f(11,2,1,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(12,2,1,4,'CreateExceptionNode::rule() const')
f(11,3,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(11,4,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,4,1,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(11,5,1,4,'PhaseLive::compute(unsigned int)')
f(12,5,1,4,'PhaseLive::add_liveout(Block*, IndexSet*, VectorSet&)')
f(9,6,3,4,'Compile::Optimize()')
f(10,6,2,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,6,2,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,6,1,4,'PhaseIdealLoop::Dominators()')
f(13,6,1,4,'NTarjan::DFS(NTarjan*, VectorSet&, PhaseIdealLoop*, unsigned int*)')
f(12,7,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(10,8,1,4,'PhaseRenumberLive::PhaseRenumberLive(PhaseGVN*, Unique_Node_List*, Unique_Node_List*, Phase::PhaseNumber)')
f(11,8,1,4,'Compile::remove_useless_nodes(Unique_Node_List&)')
f(12,8,1,4,'AddLNode::Opcode() const')
f(9,9,1,4,'ParseGenerator::generate(JVMState*)')
f(10,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,9,1,4,'Parse::do_all_blocks()')
f(12,9,1,4,'Parse::do_one_block()')
f(13,9,1,4,'Parse::do_call()')
f(14,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,9,1,4,'ParseGenerator::generate(JVMState*)')
f(16,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,9,1,4,'Parse::do_all_blocks()')
f(18,9,1,4,'Parse::do_one_block()')
f(19,9,1,4,'Parse::do_call()')
f(20,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,9,1,4,'ParseGenerator::generate(JVMState*)')
f(22,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,9,1,4,'Parse::do_all_blocks()')
f(24,9,1,4,'Parse::do_one_block()')
f(25,9,1,4,'Parse::do_call()')
f(26,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,9,1,4,'ParseGenerator::generate(JVMState*)')
f(28,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,9,1,4,'Parse::do_all_blocks()')
f(30,9,1,4,'Parse::do_one_block()')
f(31,9,1,4,'Parse::do_call()')
f(32,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(33,9,1,4,'ParseGenerator::generate(JVMState*)')
f(34,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(35,9,1,4,'Parse::do_all_blocks()')
f(36,9,1,4,'Parse::do_one_block()')
f(37,9,1,4,'Parse::do_call()')
f(38,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(39,9,1,4,'ParseGenerator::generate(JVMState*)')
f(40,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(41,9,1,4,'Parse::do_all_blocks()')
f(42,9,1,4,'Parse::do_one_block()')
f(43,9,1,4,'Parse::do_call()')
f(44,9,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(45,9,1,4,'ParseGenerator::generate(JVMState*)')
f(46,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(47,9,1,4,'Parse::do_all_blocks()')
f(48,9,1,4,'Parse::do_one_block()')
f(49,9,1,4,'Parse::do_call()')
f(50,9,1,4,'ParseGenerator::generate(JVMState*)')
f(51,9,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(52,9,1,4,'Parse::do_all_blocks()')
f(53,9,1,4,'Parse::do_one_block()')
f(54,9,1,4,'Parse::do_call()')
f(55,9,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(56,9,1,4,'InlineTree::ok_to_inline(ciMethod*, JVMState*, ciCallProfile&, bool&)')
f(57,9,1,4,'InlineTree::try_to_inline(ciMethod*, ciMethod*, int, JVMState*, ciCallProfile&, bool&)')
f(58,9,1,4,'InlineTree::should_not_inline(ciMethod*, ciMethod*, JVMState*)')
f(59,9,1,4,'DirectiveSet::should_not_inline(ciMethod*)')
f(60,9,1,4,'CompilerOracle::should_not_inline(methodHandle const&)')
f(61,9,1,4,'bool CompilerOracle::has_option_value<bool>(methodHandle const&, CompileCommand, bool&)')
f(62,9,1,4,'MethodMatcher::matches(methodHandle const&) const')
f(63,9,1,4,'MethodMatcher::match(Symbol*, Symbol*, MethodMatcher::Mode) const [clone .part.0]')
f(1,10,1,3,'[unknown]')
f(2,10,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(3,10,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(4,10,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(1,11,2,3,'[unknown_Java]')
f(2,11,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,12,1,6,'cats/effect/IO$Start.tag',0,1,0)
f(1,13,418,1,'cats/effect/unsafe/WorkerThread.run')
f(2,20,264,1,'cats/effect/IOFiber.run',15,0,0)
f(3,23,4,2,'cats/effect/IOFiber.asyncContinueSuccessfulR',3,0,0)
f(4,24,3,2,'cats/effect/ArrayStack.pop',2,0,0)
f(3,27,257,1,'cats/effect/IOFiber.execR',11,0,0)
f(4,46,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(5,46,1,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(6,46,1,4,'MemAllocator::allocate() const')
f(7,46,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(8,46,1,4,'ThreadLocalAllocBuffer::retire_before_allocation()')
f(9,46,1,4,'CollectedHeap::fill_with_dummy_object(HeapWordImpl**, HeapWordImpl**, bool)')
f(4,47,3,2,'cats/effect/ArrayStack.init',1,0,0)
f(5,49,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(6,49,1,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(7,49,1,4,'MemAllocator::allocate() const')
f(8,49,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(9,49,1,4,'G1Allocator::unsafe_max_tlab_alloc()')
f(4,50,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(4,51,233,1,'cats/effect/IOFiber.runLoop')
f(5,78,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(6,78,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(7,78,1,4,'MemAllocator::allocate() const')
f(8,78,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(9,78,1,4,'G1Allocator::unsafe_max_tlab_alloc()')
f(5,79,2,2,'cats/effect/ContState.<init>',2,0,0)
f(5,81,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,82,1,2,'cats/effect/IO$Start.ioa',1,0,0)
f(5,83,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(5,85,1,1,'cats/effect/IODeferred$$Lambda$107.0x0000000800d7b6f0.apply')
f(6,85,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,85,1,1,'cats/effect/CallbackStack.apply')
f(8,85,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,85,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,85,1,1,'cats/effect/IOFiber$$Lambda$100.0x0000000800d59800.applyVoid')
f(11,85,1,1,'cats/effect/IOFiber.$anonfun$2')
f(12,85,1,1,'cats/effect/IOFiber.stateLoop$1')
f(13,85,1,1,'cats/effect/IOFiber.loop$1')
f(14,85,1,1,'cats/effect/IOFiber.scheduleFiber')
f(15,85,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,85,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,85,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,85,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,85,1,1,'jdk/internal/misc/Unsafe.unpark')
f(20,85,1,3,'Unsafe_Unpark')
f(21,85,1,3,'pthread_mutex_lock')
f(5,86,60,1,'cats/effect/IOFiber.<init>')
f(6,133,3,2,'cats/effect/CallbackStack$.apply',3,0,0)
f(6,136,2,2,'cats/effect/IO$.async',2,0,0)
f(7,137,1,2,'cats/effect/IO$IOCont$.apply',1,0,0)
f(6,138,2,2,'cats/effect/IO$.uncancelable',2,0,0)
f(7,138,2,2,'cats/effect/IO$Uncancelable$.apply',2,0,0)
f(6,140,6,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',5,0,0)
f(7,140,6,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',5,0,0)
f(8,140,6,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',5,0,0)
f(9,145,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(10,145,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(11,145,1,3,'__tls_get_addr')
f(5,146,88,1,'cats/effect/IOFiber.scheduleFiber',28,0,0)
f(6,146,88,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',28,0,0)
f(7,147,87,1,'cats/effect/unsafe/WorkerThread.schedule',27,0,0)
f(8,154,10,2,'cats/effect/unsafe/LocalQueue.enqueue',10,0,0)
f(9,160,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',2,0,0)
f(10,161,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(9,162,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',2,0,0)
f(10,162,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',2,0,0)
f(8,164,70,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',10,0,0)
f(9,169,1,2,'java/util/concurrent/atomic/AtomicBoolean.get',1,0,0)
f(9,170,4,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',4,0,0)
f(9,174,60,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,174,60,1,'jdk/internal/misc/Unsafe.unpark')
f(11,175,6,3,'Unsafe_Unpark')
f(12,178,1,4,'java_lang_Thread::thread(oopDesc*)')
f(12,179,2,3,'pthread_mutex_lock')
f(11,181,53,3,'pthread_cond_signal')
f(12,185,49,5,'entry_SYSCALL_64_after_hwframe')
f(13,185,49,5,'do_syscall_64')
f(14,185,48,5,'__x64_sys_futex')
f(15,185,48,5,'do_futex')
f(16,185,48,5,'futex_wake')
f(17,187,2,5,'mark_wake_futex')
f(17,189,2,5,'wake_q_add_safe')
f(17,191,42,5,'wake_up_q')
f(18,191,42,5,'_raw_spin_unlock_irqrestore')
f(14,233,1,5,'do_futex')
f(5,234,44,1,'cats/effect/IOFiber.succeeded')
f(6,256,22,2,'cats/effect/IOFiber.runTerminusSuccessK',22,0,0)
f(7,258,4,2,'cats/effect/IO$.pure',4,0,0)
f(8,258,4,2,'cats/effect/IO$Pure$.apply',4,0,0)
f(9,259,3,2,'cats/effect/IO$Pure.<init>',3,0,0)
f(10,259,3,2,'cats/effect/IO.<init>',3,0,0)
f(11,259,3,2,'cats/effect/IOPlatform.<init>',3,0,0)
f(12,259,3,2,'java/lang/Object.<init>',3,0,0)
f(7,262,10,2,'cats/effect/IOFiber.done',10,0,0)
f(8,270,1,2,'cats/effect/CallbackStack.apply',1,0,0)
f(8,271,1,2,'cats/effect/IO$.pure',1,0,0)
f(7,272,6,2,'cats/effect/kernel/Outcome$Succeeded$.apply',6,0,0)
f(8,273,5,2,'cats/effect/kernel/Outcome$Succeeded.<init>',5,0,0)
f(9,273,5,2,'java/lang/Object.<init>',5,0,0)
f(5,278,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(6,279,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,279,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,279,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(9,279,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(10,279,1,4,'MemAllocator::allocate() const')
f(11,279,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(12,279,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(5,280,4,3,'vtable stub')
f(2,284,12,2,'cats/effect/unsafe/LocalQueue.dequeue',5,0,0)
f(3,295,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',1,0,0)
f(2,296,22,1,'cats/effect/unsafe/ScalQueue.poll',7,0,0)
f(3,306,11,1,'java/util/concurrent/ConcurrentLinkedQueue.poll',3,0,0)
f(4,310,3,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',3,0,0)
f(5,310,3,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',3,0,0)
f(4,313,4,1,'java/util/concurrent/ConcurrentLinkedQueue.updateHead')
f(5,313,4,1,'java/lang/invoke/VarHandleGuards.guard_LLL_Z')
f(6,313,4,1,'java/lang/invoke/VarForm.getMemberName')
f(3,317,1,1,'java/util/concurrent/ThreadLocalRandom.nextInt')
f(4,317,1,1,'java/util/Random.nextInt')
f(5,317,1,1,'java/util/concurrent/ThreadLocalRandom.next')
f(6,317,1,1,'java/util/concurrent/ThreadLocalRandom.nextInt')
f(7,317,1,1,'java/util/concurrent/ThreadLocalRandom.mix32')
f(2,318,24,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,318,3,1,'cats/effect/unsafe/LocalQueue.nonEmpty')
f(4,319,2,1,'cats/effect/unsafe/LocalQueue.isEmpty')
f(5,320,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get')
f(6,320,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck')
f(3,321,21,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,321,21,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,321,21,1,'jdk/internal/misc/Unsafe.unpark')
f(6,321,1,4,'Parker::unpark()')
f(6,322,20,3,'pthread_cond_signal')
f(7,323,19,5,'entry_SYSCALL_64_after_hwframe')
f(8,323,19,5,'do_syscall_64')
f(9,323,19,5,'__x64_sys_futex')
f(10,323,19,5,'do_futex')
f(11,323,19,5,'futex_wake')
f(12,325,1,5,'wake_q_add_safe')
f(12,326,16,5,'wake_up_q')
f(13,326,16,5,'_raw_spin_unlock_irqrestore')
f(2,342,9,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,343,4,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,343,2,2,'cats/effect/unsafe/LocalQueue.msb',2,0,0)
f(4,345,2,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',2,0,0)
f(5,346,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(3,347,4,2,'cats/effect/unsafe/ScalQueue.poll',4,0,0)
f(4,348,2,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',2,0,0)
f(4,350,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(5,350,1,2,'java/util/Random.nextInt',1,0,0)
f(2,351,1,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerFromSearching')
f(2,352,1,2,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToParkedWhenSearching',1,0,0)
f(2,353,78,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,353,78,1,'java/util/concurrent/locks/LockSupport.park')
f(4,353,78,1,'jdk/internal/misc/Unsafe.park')
f(5,358,6,3,'Unsafe_Park')
f(6,360,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,360,3,5,'entry_SYSCALL_64_after_hwframe')
f(8,360,3,5,'do_syscall_64')
f(9,360,1,5,'__x64_sys_futex')
f(10,360,1,5,'do_futex')
f(11,360,1,5,'hash_futex')
f(9,361,1,5,'do_futex')
f(9,362,1,5,'syscall_enter_from_user_mode')
f(6,363,1,4,'Parker::park(bool, long)')
f(7,363,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<544868ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 544868ul>::oop_access_barrier(void*)')
f(5,364,67,3,'[unknown]')
f(6,364,64,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,373,55,5,'entry_SYSCALL_64_after_hwframe')
f(8,373,55,5,'do_syscall_64')
f(9,374,50,5,'__x64_sys_futex')
f(10,374,50,5,'do_futex')
f(11,375,49,5,'futex_wait')
f(12,378,44,5,'futex_wait_queue_me')
f(13,379,1,5,'__raw_callee_save___pv_queued_spin_unlock')
f(13,380,42,5,'schedule')
f(14,380,42,5,'__schedule')
f(15,380,42,5,'finish_task_switch.isra.0')
f(12,422,2,5,'futex_wait_setup')
f(9,424,1,5,'syscall_enter_from_user_mode')
f(9,425,3,5,'syscall_exit_to_user_mode')
f(10,425,3,5,'exit_to_user_mode_prepare')
f(11,425,3,5,'exit_to_user_mode_loop')
f(12,426,1,5,'__rseq_handle_notify_resume')
f(13,426,1,5,'rseq_ip_fixup')
f(14,426,1,5,'rseq_get_rseq_cs.isra.0')
f(12,427,1,5,'mem_cgroup_handle_over_high')
f(6,428,3,3,'pthread_cond_wait')
f(1,431,2,1,'java/lang/Thread.run')
f(2,431,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,431,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,431,2,1,'java/util/concurrent/FutureTask.run')
f(5,431,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,431,2,1,'java/util/concurrent/FutureTask.run')
f(7,431,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,431,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,431,2,1,'java/lang/reflect/Method.invoke')
f(10,431,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,431,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,431,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,431,2,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_Throughput')
f(14,431,2,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,431,2,1,'kyo/bench/Bench.syncCats')
f(16,431,2,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,431,2,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,431,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,431,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,431,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,431,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,431,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,431,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,431,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,431,1,3,'pthread_cond_signal')
f(26,431,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,431,1,5,'do_syscall_64')
f(28,431,1,5,'__x64_sys_futex')
f(29,431,1,5,'do_futex')
f(30,431,1,5,'futex_wake')
f(31,431,1,5,'wake_up_q')
f(32,431,1,5,'_raw_spin_unlock_irqrestore')
f(18,432,1,1,'scala/concurrent/package$.blocking')
f(19,432,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,432,1,1,'cats/effect/IOPlatform$$Lambda$95.0x0000000800d5edc8.apply')
f(21,432,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,432,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,432,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,432,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,432,1,1,'jdk/internal/misc/Unsafe.park')
f(26,432,1,3,'[unknown]')
f(27,432,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,432,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,432,1,5,'do_syscall_64')
f(30,432,1,5,'__x64_sys_futex')
f(31,432,1,5,'do_futex')
f(32,432,1,5,'futex_wait')
f(33,432,1,5,'futex_wait_queue_me')
f(34,432,1,5,'hrtimer_sleeper_start_expires')
f(35,432,1,5,'_raw_spin_unlock_irqrestore')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,17780,3,'all')
f(1,0,15921,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,15921,1,'cats/effect/IOFiber.run')
f(3,0,7203,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,7203,1,'cats/effect/IOFiber.runLoop')
f(5,0,96,1,'cats/data/Chain$$$Lambda$114.0x0000000800dc5f70.apply')
f(6,0,96,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,0,96,1,'scala/collection/immutable/List.$colon$colon')
f(8,0,96,2,'scala.collection.immutable.$colon$colon')
f(5,96,3536,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(6,96,3536,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,96,2123,1,'cats/Eval$Defer.value')
f(8,96,2123,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,96,1765,1,'cats/Eval$.loop$1')
f(10,96,1765,1,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply')
f(11,96,1765,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,96,1365,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,96,1365,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,96,358,1,'cats/Eval$.now')
f(15,96,358,1,'cats/Now$.apply')
f(16,96,358,2,'cats.Now')
f(14,454,479,1,'cats/effect/IO.flatMap')
f(15,454,479,1,'cats/effect/IO$FlatMap$.apply')
f(16,454,479,2,'cats.effect.IO$FlatMap')
f(14,933,528,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,933,528,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,933,528,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,933,528,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(12,1461,400,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,1461,400,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,1461,400,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,1461,400,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(9,1861,358,1,'cats/Eval$Ident$.apply')
f(10,1861,358,2,'cats.Eval$Ident')
f(7,2219,183,1,'cats/Later.value')
f(8,2219,183,1,'cats/data/Chain$$$Lambda$100.0x0000000800dbe300.apply')
f(9,2219,183,1,'cats/data/Chain$.$anonfun$1')
f(10,2219,103,1,'cats/effect/IO$$anon$2.map')
f(11,2219,103,1,'cats/effect/IO$$anon$2.map')
f(12,2219,103,1,'cats/effect/IO.map')
f(13,2219,103,1,'cats/effect/IO$Map$.apply')
f(14,2219,103,2,'cats.effect.IO$Map')
f(10,2322,80,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,2322,80,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,2322,80,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,2322,80,2,'cats.data.Chain$$$Lambda$114+0x0000000800dc5f70')
f(7,2402,633,1,'cats/effect/IO.map')
f(8,2402,633,1,'cats/effect/IO$Map$.apply')
f(9,2402,633,2,'cats.effect.IO$Map')
f(7,3035,597,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3035,597,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,3035,597,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3035,597,2,'cats.effect.IO$$$Lambda$113+0x0000000800dc5ba0')
f(5,3632,3571,1,'cats/effect/IOFiber.succeeded')
f(6,3632,66,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc45b0.apply')
f(7,3632,66,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,3632,66,1,'cats/data/Chain$.fromSeq')
f(9,3632,66,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,3632,66,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,3632,66,1,'cats/data/Chain$Wrap$.apply')
f(12,3632,66,2,'cats.data.Chain$Wrap')
f(6,3698,738,1,'cats/effect/IO$$$Lambda$113.0x0000000800dc5ba0.apply')
f(7,3698,738,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,3698,635,1,'cats/data/Chain$$$Lambda$106.0x0000000800dc4000.apply')
f(9,3698,635,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,3698,635,1,'scala/collection/immutable/List.$colon$colon')
f(11,3698,635,2,'scala.collection.immutable.$colon$colon')
f(8,4333,103,1,'cats/data/Chain$$$Lambda$110.0x0000000800dc4e60.apply')
f(9,4333,103,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,4333,103,1,'cats/data/Chain.concat')
f(11,4333,103,1,'cats/data/Chain$.concat')
f(12,4333,103,1,'cats/data/Chain$Append$.apply')
f(13,4333,103,2,'cats.data.Chain$Append')
f(6,4436,860,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(7,4436,860,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,4436,646,1,'cats/Eval$FlatMap.value')
f(9,4436,646,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,4436,580,1,'cats/Eval$.loop$1')
f(11,4436,250,1,'cats/Eval$$Lambda$103.0x0000000800dbec50.apply')
f(12,4436,250,1,'cats/Eval.map$$anonfun$1')
f(13,4436,81,1,'cats/Now$.apply')
f(14,4436,81,2,'cats.Now')
f(13,4517,169,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbe880.apply')
f(14,4517,169,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,4517,106,1,'cats/effect/IO$$anon$2.map')
f(16,4517,106,1,'cats/effect/IO$$anon$2.map')
f(17,4517,106,1,'cats/effect/IO.map')
f(18,4517,106,1,'cats/effect/IO$Map$.apply')
f(19,4517,106,2,'cats.effect.IO$Map')
f(15,4623,63,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,4623,63,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,4623,63,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,4623,63,2,'cats.data.Chain$$$Lambda$108+0x0000000800dc45b0')
f(11,4686,330,1,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply')
f(12,4686,330,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,4686,260,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,4686,260,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,4686,58,1,'cats/Eval$.now')
f(16,4686,58,1,'cats/Now$.apply')
f(17,4686,58,2,'cats.Now')
f(15,4744,106,1,'cats/effect/IO.flatMap')
f(16,4744,106,1,'cats/effect/IO$FlatMap$.apply')
f(17,4744,106,2,'cats.effect.IO$FlatMap')
f(15,4850,96,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,4850,96,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,4850,96,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,4850,96,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(13,4946,70,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,4946,70,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,4946,70,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,4946,70,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(10,5016,66,1,'cats/Eval$Ident$.apply')
f(11,5016,66,2,'cats.Eval$Ident')
f(8,5082,105,1,'cats/effect/IO.map')
f(9,5082,105,1,'cats/effect/IO$Map$.apply')
f(10,5082,105,2,'cats.effect.IO$Map')
f(8,5187,109,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5187,109,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5187,109,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5187,109,2,'cats.effect.IO$$$Lambda$113+0x0000000800dc5ba0')
f(6,5296,6,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,5296,1,1,'cats/effect/IO$.pure')
f(8,5296,1,1,'cats/effect/IO$Pure$.apply')
f(9,5296,1,2,'cats.effect.IO$Pure')
f(7,5297,5,1,'cats/effect/IOFiber.done')
f(8,5297,5,1,'cats/effect/CallbackStack.apply')
f(9,5297,5,1,'scala/runtime/function/JProcedure1.apply')
f(10,5297,5,1,'scala/runtime/function/JProcedure1.apply')
f(11,5297,5,1,'cats/effect/IO$$Lambda$90.0x0000000800d58530.applyVoid')
f(12,5297,5,1,'cats/effect/IO.$anonfun$6')
f(13,5297,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,5297,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,5297,1,1,'cats/effect/kernel/Outcome.fold')
f(16,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,5297,1,1,'cats/effect/IO$$Lambda$118.0x0000000800dc3408.applyVoid')
f(19,5297,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,5297,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d55ad0.applyVoid')
f(23,5297,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,5297,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,5297,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55000.applyVoid')
f(27,5297,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,5297,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,5297,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,5297,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,5297,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,5297,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,5297,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,5297,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,5298,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,5298,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,5298,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,5298,2,2,'cats.effect.IO$$Lambda$116+0x0000000800dc2d40')
f(16,5300,2,2,'cats.effect.IO$$Lambda$118+0x0000000800dc3408')
f(6,5302,1318,1,'cats/instances/ListInstances$$anon$1$$Lambda$111.0x0000000800dc5410.apply')
f(7,5302,1318,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,5302,1318,1,'cats/data/Chain.toList')
f(9,5302,1,2,'cats.data.Chain$ChainIterator')
f(9,5303,1317,1,'cats/data/Chain$ChainIterator.toList')
f(10,5303,1317,1,'scala/collection/IterableOnceOps.toList$')
f(11,5303,1317,1,'scala/collection/IterableOnceOps.toList')
f(12,5303,1317,1,'scala/collection/immutable/List.prependedAll')
f(13,5303,253,1,'cats/data/Chain$ChainIterator.next')
f(14,5303,253,1,'cats/data/Chain$ChainIterator.go$3')
f(15,5303,145,1,'scala/collection/immutable/List.$colon$colon')
f(16,5303,145,2,'scala.collection.immutable.$colon$colon')
f(15,5448,108,1,'scala/collection/immutable/List.iterator')
f(16,5448,108,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator$')
f(17,5448,108,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator')
f(18,5448,108,2,'scala.collection.StrictOptimizedLinearSeqOps$$anon$1')
f(13,5556,1064,2,'scala.collection.immutable.$colon$colon')
f(6,6620,583,1,'kyo/bench/CollectAllBench$$Lambda$112.0x0000000800dc57d8.apply')
f(7,6620,3,1,'java/lang/Long.valueOf')
f(8,6620,3,2,'java.lang.Long')
f(7,6623,580,1,'kyo/bench/CollectAllBench.catsBench$$anonfun$1')
f(8,6623,580,1,'scala/collection/AbstractIterable.sum')
f(9,6623,580,1,'scala/collection/IterableOnceOps.sum$')
f(10,6623,580,1,'scala/collection/IterableOnceOps.sum')
f(11,6623,580,1,'scala/collection/AbstractIterable.reduce')
f(12,6623,580,1,'scala/collection/IterableOnceOps.reduce$')
f(13,6623,580,1,'scala/collection/IterableOnceOps.reduce')
f(14,6623,580,1,'scala/collection/AbstractIterable.reduceLeft')
f(15,6623,580,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(16,6623,580,1,'scala/collection/IterableOnceOps.reduceLeft')
f(17,6623,580,1,'scala/collection/IterableOnceOps$$Lambda$115.0x0000000800dc2290.apply')
f(18,6623,580,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(19,6623,580,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(20,6623,580,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(21,6623,580,1,'java/lang/Integer.valueOf')
f(22,6623,580,2,'java.lang.Integer')
f(3,7203,8487,1,'cats/effect/IOFiber.cedeR')
f(4,7203,2133,1,'cats/effect/IOFiber.runLoop')
f(5,7203,32,1,'cats/data/Chain$$$Lambda$114.0x0000000800dc5f70.apply')
f(6,7203,32,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,7203,32,1,'scala/collection/immutable/List.$colon$colon')
f(8,7203,32,2,'scala.collection.immutable.$colon$colon')
f(5,7235,80,1,'cats/effect/ArrayStack.push')
f(6,7235,80,1,'cats/effect/ArrayStack.checkAndGrow')
f(7,7235,80,2,'java.lang.Object[]')
f(5,7315,8,1,'cats/effect/ByteStack$.push')
f(6,7315,8,1,'cats/effect/ByteStack$.growIfNeeded')
f(7,7315,8,2,'int[]')
f(5,7323,1387,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(6,7323,1387,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,7323,860,1,'cats/Eval$Defer.value')
f(8,7323,860,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,7323,701,1,'cats/Eval$.loop$1')
f(10,7323,701,1,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply')
f(11,7323,701,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,7323,558,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,7323,558,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,7323,136,1,'cats/Eval$.now')
f(15,7323,136,1,'cats/Now$.apply')
f(16,7323,136,2,'cats.Now')
f(14,7459,201,1,'cats/effect/IO.flatMap')
f(15,7459,201,1,'cats/effect/IO$FlatMap$.apply')
f(16,7459,201,2,'cats.effect.IO$FlatMap')
f(14,7660,221,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,7660,221,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,7660,221,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,7660,221,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(12,7881,143,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7881,143,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7881,143,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7881,143,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(9,8024,159,1,'cats/Eval$Ident$.apply')
f(10,8024,159,2,'cats.Eval$Ident')
f(7,8183,61,1,'cats/Later.value')
f(8,8183,61,1,'cats/data/Chain$$$Lambda$100.0x0000000800dbe300.apply')
f(9,8183,61,1,'cats/data/Chain$.$anonfun$1')
f(10,8183,27,1,'cats/effect/IO$$anon$2.map')
f(11,8183,27,1,'cats/effect/IO$$anon$2.map')
f(12,8183,27,1,'cats/effect/IO.map')
f(13,8183,27,1,'cats/effect/IO$Map$.apply')
f(14,8183,27,2,'cats.effect.IO$Map')
f(10,8210,34,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,8210,34,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,8210,34,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,8210,34,2,'cats.data.Chain$$$Lambda$114+0x0000000800dc5f70')
f(7,8244,234,1,'cats/effect/IO.map')
f(8,8244,234,1,'cats/effect/IO$Map$.apply')
f(9,8244,234,2,'cats.effect.IO$Map')
f(7,8478,232,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,8478,232,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,8478,232,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,8478,232,2,'cats.effect.IO$$$Lambda$113+0x0000000800dc5ba0')
f(5,8710,626,1,'cats/effect/IOFiber.succeeded')
f(6,8710,29,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc45b0.apply')
f(7,8710,29,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,8710,29,1,'cats/data/Chain$.fromSeq')
f(9,8710,29,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,8710,29,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,8710,29,1,'cats/data/Chain$Wrap$.apply')
f(12,8710,29,2,'cats.data.Chain$Wrap')
f(6,8739,259,1,'cats/effect/IO$$$Lambda$113.0x0000000800dc5ba0.apply')
f(7,8739,259,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,8739,223,1,'cats/data/Chain$$$Lambda$106.0x0000000800dc4000.apply')
f(9,8739,223,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,8739,223,1,'scala/collection/immutable/List.$colon$colon')
f(11,8739,223,2,'scala.collection.immutable.$colon$colon')
f(8,8962,36,1,'cats/data/Chain$$$Lambda$110.0x0000000800dc4e60.apply')
f(9,8962,36,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,8962,36,1,'cats/data/Chain.concat')
f(11,8962,36,1,'cats/data/Chain$.concat')
f(12,8962,36,1,'cats/data/Chain$Append$.apply')
f(13,8962,36,2,'cats.data.Chain$Append')
f(6,8998,338,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(7,8998,338,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,8998,260,1,'cats/Eval$FlatMap.value')
f(9,8998,260,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,8998,232,1,'cats/Eval$.loop$1')
f(11,8998,99,1,'cats/Eval$$Lambda$103.0x0000000800dbec50.apply')
f(12,8998,99,1,'cats/Eval.map$$anonfun$1')
f(13,8998,27,1,'cats/Now$.apply')
f(14,8998,27,2,'cats.Now')
f(13,9025,72,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbe880.apply')
f(14,9025,72,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,9025,46,1,'cats/effect/IO$$anon$2.map')
f(16,9025,46,1,'cats/effect/IO$$anon$2.map')
f(17,9025,46,1,'cats/effect/IO.map')
f(18,9025,46,1,'cats/effect/IO$Map$.apply')
f(19,9025,46,2,'cats.effect.IO$Map')
f(15,9071,26,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,9071,26,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,9071,26,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,9071,26,2,'cats.data.Chain$$$Lambda$108+0x0000000800dc45b0')
f(11,9097,133,1,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply')
f(12,9097,133,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,9097,103,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,9097,103,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,9097,21,1,'cats/Eval$.now')
f(16,9097,21,1,'cats/Now$.apply')
f(17,9097,21,2,'cats.Now')
f(15,9118,30,1,'cats/effect/IO.flatMap')
f(16,9118,30,1,'cats/effect/IO$FlatMap$.apply')
f(17,9118,30,2,'cats.effect.IO$FlatMap')
f(15,9148,52,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,9148,52,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,9148,52,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,9148,52,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(13,9200,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,9200,30,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,9200,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,9200,30,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(10,9230,28,1,'cats/Eval$Ident$.apply')
f(11,9230,28,2,'cats.Eval$Ident')
f(8,9258,39,1,'cats/effect/IO.map')
f(9,9258,39,1,'cats/effect/IO$Map$.apply')
f(10,9258,39,2,'cats.effect.IO$Map')
f(8,9297,39,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9297,39,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9297,39,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9297,39,2,'cats.effect.IO$$$Lambda$113+0x0000000800dc5ba0')
f(4,9336,6354,1,'cats/effect/IOFiber.succeeded')
f(5,9336,6354,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8db90.apply')
f(6,9336,6354,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,9336,6354,1,'kyo/bench/CollectAllBench.catsBench')
f(8,9336,4065,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(9,9336,4065,1,'cats/Traverse$Ops.sequence$')
f(10,9336,4065,1,'cats/Traverse$Ops.sequence')
f(11,9336,4065,1,'cats/instances/ListInstances$$anon$1.sequence')
f(12,9336,4065,1,'cats/Traverse.sequence$')
f(13,9336,4065,1,'cats/Traverse.sequence')
f(14,9336,4065,1,'cats/instances/ListInstances$$anon$1.traverse')
f(15,9336,4065,1,'cats/instances/ListInstances$$anon$1.traverse')
f(16,9336,3726,1,'cats/data/Chain$.traverseViaChain')
f(17,9336,939,1,'cats/Eval$FlatMap.value')
f(18,9336,939,1,'cats/Eval$.cats$Eval$$$evaluate')
f(19,9336,937,1,'cats/Eval$.loop$1')
f(20,9336,4,1,'cats/Eval$$Lambda$103.0x0000000800dbec50.apply')
f(21,9336,4,1,'cats/Eval.map$$anonfun$1')
f(22,9336,1,1,'cats/Now$.apply')
f(23,9336,1,2,'cats.Now')
f(22,9337,3,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbe880.apply')
f(23,9337,3,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(24,9337,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9337,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9337,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9337,3,2,'cats.data.Chain$$$Lambda$108+0x0000000800dc45b0')
f(20,9340,3,1,'cats/Eval$$anon$1$$Lambda$105.0x0000000800dbf3f0.apply')
f(21,9340,3,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(22,9340,1,2,'cats.Eval$$anon$2')
f(22,9341,2,1,'cats/Eval$$anon$2.<init>')
f(23,9341,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,9341,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,9341,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,9341,2,2,'cats.Eval$$anon$2$$Lambda$109+0x0000000800dc4ba0')
f(20,9343,301,1,'cats/Eval$$anon$2$$Lambda$109.0x0000000800dc4ba0.apply')
f(21,9343,301,1,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2')
f(22,9343,296,1,'cats/Eval$$anon$1$$Lambda$105.0x0000000800dbf3f0.apply')
f(23,9343,296,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(24,9343,156,2,'cats.Eval$$anon$2')
f(24,9499,140,1,'cats/Eval$$anon$2.<init>')
f(25,9499,140,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(26,9499,140,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(27,9499,140,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(28,9499,140,2,'cats.Eval$$anon$2$$Lambda$109+0x0000000800dc4ba0')
f(22,9639,5,1,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply')
f(23,9639,5,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(24,9639,4,1,'cats/effect/IO$$anon$2.map2Eval')
f(25,9639,4,1,'cats/effect/IO$$anon$2.map2Eval')
f(26,9639,2,1,'cats/effect/IO.flatMap')
f(27,9639,2,1,'cats/effect/IO$FlatMap$.apply')
f(28,9639,2,2,'cats.effect.IO$FlatMap')
f(26,9641,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(27,9641,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(28,9641,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(29,9641,2,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(24,9643,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9643,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9643,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9643,1,2,'cats.data.Chain$$$Lambda$110+0x0000000800dc4e60')
f(20,9644,132,1,'cats/Eval$Many$.apply')
f(21,9644,132,2,'cats.Eval$Many')
f(20,9776,7,1,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply')
f(21,9776,7,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(22,9776,6,1,'cats/effect/IO$$anon$2.map2Eval')
f(23,9776,6,1,'cats/effect/IO$$anon$2.map2Eval')
f(24,9776,1,1,'cats/Eval$.now')
f(25,9776,1,1,'cats/Now$.apply')
f(26,9776,1,2,'cats.Now')
f(24,9777,3,1,'cats/effect/IO.flatMap')
f(25,9777,3,1,'cats/effect/IO$FlatMap$.apply')
f(26,9777,3,2,'cats.effect.IO$FlatMap')
f(24,9780,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9780,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9780,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9780,2,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(22,9782,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,9782,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,9782,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,9782,1,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(20,9783,464,1,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply')
f(21,9783,464,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(22,9783,362,1,'cats/effect/IO$$anon$2.map2Eval')
f(23,9783,362,1,'cats/effect/IO$$anon$2.map2Eval')
f(24,9783,79,1,'cats/Eval$.now')
f(25,9783,79,1,'cats/Now$.apply')
f(26,9783,79,2,'cats.Now')
f(24,9862,134,1,'cats/effect/IO.flatMap')
f(25,9862,134,1,'cats/effect/IO$FlatMap$.apply')
f(26,9862,134,2,'cats.effect.IO$FlatMap')
f(24,9996,149,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9996,149,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9996,149,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9996,149,2,'cats.effect.IO$$anon$2$$Lambda$107+0x0000000800dbfc00')
f(22,10145,102,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,10145,102,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,10145,102,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,10145,102,2,'cats.data.Chain$$$Lambda$110+0x0000000800dc4e60')
f(20,10247,26,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbbae8.apply')
f(21,10247,26,1,'cats/data/Chain$.$anonfun$2')
f(22,10247,26,1,'cats/data/Chain$.loop$4')
f(23,10247,6,1,'cats/Eval$.defer')
f(24,10247,6,2,'cats.Eval$$anon$5')
f(23,10253,2,1,'cats/Eval$.later')
f(24,10253,2,2,'cats.Later')
f(23,10255,2,1,'cats/Eval.map')
f(24,10255,1,1,'cats/Eval.flatMap')
f(25,10255,1,2,'cats.Eval$$anon$3')
f(24,10256,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,10256,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,10256,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,10256,1,2,'cats.Eval$$Lambda$103+0x0000000800dbec50')
f(23,10257,14,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,10257,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,10257,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,10257,1,2,'cats.data.Chain$$$Lambda$102+0x0000000800dbe880')
f(24,10258,13,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc0000.newInvokeSpecial')
f(25,10258,13,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,10258,13,2,'cats.data.Chain$$$Lambda$101+0x0000000800dbe5c0')
f(23,10271,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800dbdc00.linkToTargetMethod')
f(24,10271,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dbd400.newInvokeSpecial')
f(25,10271,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,10271,2,2,'cats.data.Chain$$$Lambda$100+0x0000000800dbe300')
f(19,10273,2,1,'cats/Eval$Ident$.apply')
f(20,10273,2,2,'cats.Eval$Ident')
f(17,10275,2787,1,'cats/data/Chain$.loop$4')
f(18,10275,267,1,'cats/Eval.flatMap')
f(19,10275,136,2,'cats.Eval$$anon$1')
f(19,10411,131,1,'cats/Eval$$anon$1.<init>')
f(20,10411,131,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10411,131,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,10411,131,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10411,131,2,'cats.Eval$$anon$1$$Lambda$105+0x0000000800dbf3f0')
f(18,10542,2392,1,'cats/data/Chain$.loop$4')
f(19,10542,563,1,'cats/Eval$.defer')
f(20,10542,563,2,'cats.Eval$$anon$5')
f(19,11105,200,1,'cats/Eval$.later')
f(20,11105,200,2,'cats.Later')
f(19,11305,241,1,'cats/Eval.map')
f(20,11305,142,1,'cats/Eval.flatMap')
f(21,11305,142,2,'cats.Eval$$anon$3')
f(20,11447,99,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,11447,99,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,11447,99,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,11447,99,2,'cats.Eval$$Lambda$103+0x0000000800dbec50')
f(19,11546,1223,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,11546,135,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,11546,135,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11546,135,2,'cats.data.Chain$$$Lambda$102+0x0000000800dbe880')
f(20,11681,1088,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc0000.newInvokeSpecial')
f(21,11681,1088,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11681,1088,2,'cats.data.Chain$$$Lambda$101+0x0000000800dbe5c0')
f(19,12769,165,1,'java/lang/invoke/LambdaForm$MH.0x0000000800dbdc00.linkToTargetMethod')
f(20,12769,165,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dbd400.newInvokeSpecial')
f(21,12769,165,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,12769,165,2,'cats.data.Chain$$$Lambda$100+0x0000000800dbe300')
f(18,12934,126,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,12934,126,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,12934,126,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12934,126,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf020')
f(18,13060,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800dbcc00.linkToTargetMethod')
f(19,13060,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dbc400.newInvokeSpecial')
f(20,13060,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,13060,2,2,'cats.data.Chain$$$Lambda$99+0x0000000800dbbae8')
f(16,13062,1,1,'cats/effect/IO$$anon$2.map')
f(17,13062,1,1,'cats/effect/IO$$anon$2.map')
f(18,13062,1,1,'cats/effect/IO.map')
f(19,13062,1,1,'cats/effect/IO$Map$.apply')
f(20,13062,1,2,'cats.effect.IO$Map')
f(16,13063,28,1,'cats/kernel/instances/StaticMethods$.wrapMutableIndexedSeq')
f(17,13063,28,2,'cats.kernel.instances.StaticMethods$WrappedIndexedSeq')
f(16,13091,309,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq')
f(17,13091,309,1,'scala/collection/mutable/Growable.$plus$plus$eq$')
f(18,13091,309,1,'scala/collection/mutable/Growable.$plus$plus$eq')
f(19,13091,309,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(20,13091,309,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(21,13091,309,1,'scala/collection/mutable/Growable.addAll$')
f(22,13091,309,1,'scala/collection/mutable/Growable.addAll')
f(23,13091,309,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(24,13091,309,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(25,13091,309,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(26,13091,309,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(27,13091,266,2,'java.lang.Object[]')
f(27,13357,43,5,'java.lang.Object[]')
f(16,13400,1,1,'scala/runtime/ScalaRunTime$.genericWrapArray')
f(17,13400,1,1,'scala/collection/immutable/ArraySeq$.unsafeWrapArray')
f(18,13400,1,2,'scala.collection.immutable.ArraySeq$ofRef')
f(8,13401,1,1,'cats/effect/IO.map')
f(9,13401,1,1,'cats/effect/IO$Map$.apply')
f(10,13401,1,2,'cats.effect.IO$Map')
f(8,13402,961,1,'scala/collection/AbstractIterable.toList')
f(9,13402,961,1,'scala/collection/IterableOnceOps.toList$')
f(10,13402,961,1,'scala/collection/IterableOnceOps.toList')
f(11,13402,961,1,'scala/collection/immutable/List.prependedAll')
f(12,13402,955,2,'scala.collection.immutable.$colon$colon')
f(12,14357,6,1,'scala/collection/immutable/Vector.iterator')
f(13,14357,6,2,'scala.collection.immutable.NewVectorIterator')
f(8,14363,1327,1,'scala/collection/immutable/Range.map')
f(9,14363,1088,1,'kyo/bench/CollectAllBench$$Lambda$94.0x0000000800d5b030.apply')
f(10,14363,1088,1,'kyo/bench/CollectAllBench.$anonfun$adapted$2')
f(11,14363,1088,1,'kyo/bench/CollectAllBench.$anonfun$3')
f(12,14363,1088,1,'cats/effect/IO$.apply')
f(13,14363,1088,1,'cats/effect/IO$.delay')
f(14,14363,1088,1,'cats/effect/IO$Delay$.apply')
f(15,14363,1088,2,'cats.effect.IO$Delay')
f(9,15451,9,1,'scala/collection/SeqFactory$Delegate.newBuilder')
f(10,15451,9,1,'scala/collection/immutable/Vector$.newBuilder')
f(11,15451,9,1,'scala/collection/immutable/Vector$.newBuilder')
f(12,15451,2,2,'scala.collection.immutable.VectorBuilder')
f(12,15453,7,1,'scala/collection/immutable/VectorBuilder.<init>')
f(13,15453,7,2,'java.lang.Object[]')
f(9,15460,221,1,'scala/collection/immutable/VectorBuilder.addOne')
f(10,15460,221,1,'scala/collection/immutable/VectorBuilder.addOne')
f(11,15460,221,1,'scala/collection/immutable/VectorBuilder.advance')
f(12,15460,221,1,'scala/collection/immutable/VectorBuilder.advance1')
f(13,15460,3,2,'java.lang.Object[][]')
f(13,15463,218,2,'java.lang.Object[]')
f(9,15681,9,1,'scala/collection/immutable/VectorBuilder.result')
f(10,15681,9,1,'scala/collection/immutable/VectorBuilder.result')
f(11,15681,1,1,'java/util/Arrays.copyOf')
f(12,15681,1,2,'java.lang.Object[]')
f(11,15682,7,1,'java/util/Arrays.copyOfRange')
f(12,15682,7,2,'java.lang.Object[][]')
f(11,15689,1,2,'scala.collection.immutable.Vector2')
f(3,15690,231,1,'cats/effect/IOFiber.execR')
f(4,15690,10,1,'cats/effect/ArrayStack.init')
f(5,15690,10,2,'java.lang.Object[]')
f(4,15700,221,1,'cats/effect/ByteStack$.create')
f(5,15700,221,2,'int[]')
f(1,15921,1856,1,'java/lang/Thread.run')
f(2,15921,1856,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,15921,1856,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,15921,1856,1,'java/util/concurrent/FutureTask.run')
f(5,15921,1856,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,15921,1856,1,'java/util/concurrent/FutureTask.run')
f(7,15921,1856,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,15921,1856,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,15921,1856,1,'java/lang/reflect/Method.invoke')
f(10,15921,1856,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,15921,1856,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,15921,1856,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,15921,1856,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_Throughput')
f(14,15921,1856,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,15921,1856,1,'kyo/bench/Bench.forkCats')
f(16,15921,44,1,'cats/effect/IO.flatMap')
f(17,15921,44,1,'cats/effect/IO$FlatMap$.apply')
f(18,15921,44,2,'cats.effect.IO$FlatMap')
f(16,15965,1770,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,15965,1718,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,15965,989,1,'cats/effect/IO.unsafeRunAsync')
f(19,15965,838,1,'cats/effect/IO.unsafeRunFiber')
f(20,15965,206,2,'cats.effect.IOFiber')
f(20,16171,489,1,'cats/effect/IOFiber.<init>')
f(21,16171,95,1,'cats/effect/ArrayStack$.apply')
f(22,16171,95,2,'cats.effect.ArrayStack')
f(21,16266,90,1,'cats/effect/CallbackStack$.apply')
f(22,16266,90,2,'cats.effect.CallbackStack')
f(21,16356,128,1,'cats/effect/IO$.async')
f(22,16356,75,2,'cats.effect.IO$$anon$3')
f(22,16431,53,1,'cats/effect/IO$IOCont$.apply')
f(23,16431,53,2,'cats.effect.IO$IOCont')
f(21,16484,81,1,'cats/effect/IO$.uncancelable')
f(22,16484,81,1,'cats/effect/IO$Uncancelable$.apply')
f(23,16484,81,2,'cats.effect.IO$Uncancelable')
f(21,16565,95,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,16565,95,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,16565,95,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,16565,63,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d59368')
f(24,16628,32,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d59958')
f(20,16660,57,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,16660,57,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,16660,57,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,16660,57,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,16660,57,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,16717,86,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,16717,86,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,16717,86,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,16717,86,2,'cats.effect.IO$$Lambda$90+0x0000000800d58530')
f(19,16803,151,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,16803,151,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,16803,151,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,16803,65,2,'cats.effect.IO$$Lambda$87+0x0000000800d55408')
f(22,16868,27,2,'cats.effect.IO$$Lambda$88+0x0000000800d556c8')
f(22,16895,59,2,'cats.effect.IO$$Lambda$89+0x0000000800d55ad0')
f(18,16954,140,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17094,31,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17094,31,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17094,31,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17094,31,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55000')
f(18,17125,378,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17125,378,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17125,62,2,'java.lang.Object[]')
f(20,17187,67,2,'java.util.concurrent.locks.ReentrantLock')
f(20,17254,89,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,17254,89,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,17343,160,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,17343,160,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,17343,160,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17503,119,1,'scala/concurrent/package$.blocking')
f(19,17503,119,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17503,119,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a338.apply')
f(21,17503,119,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17503,119,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17503,119,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17503,119,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17622,61,1,'scala/util/Either.fold')
f(19,17622,61,1,'cats/effect/IOPlatform$$Lambda$120.0x0000000800dc13c8.apply')
f(20,17622,61,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17622,61,1,'scala/Some$.apply')
f(22,17622,61,2,'scala.Some')
f(17,17683,52,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17683,52,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17683,52,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17683,52,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17683,52,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17683,52,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17683,52,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17683,52,2,'scala.concurrent.duration.FiniteDuration')
f(16,17735,42,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,17735,42,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,17735,42,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,17735,42,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,17735,42,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8db90')
f(1,17777,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17777,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17777,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17777,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17777,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17777,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17777,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17777,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17777,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17777,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,279,3,'all')
f(1,0,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,4,3,'thread_native_entry(Thread*)')
f(3,0,4,4,'Thread::call_run()')
f(4,0,4,4,'JavaThread::thread_main_inner()')
f(5,0,4,4,'CompileBroker::compiler_thread_loop()')
f(6,0,4,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,4,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,4,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,3,4,'Compile::Code_Gen()')
f(10,0,1,4,'Matcher::match()')
f(11,0,1,4,'Matcher::xform(Node*, int)')
f(12,0,1,4,'Matcher::match_tree(Node const*)')
f(13,0,1,4,'Matcher::ReduceInst(State*, int, Node*&)')
f(14,0,1,4,'State::MachNodeGenerator(int)')
f(15,0,1,4,'Node::Node(unsigned int)')
f(10,1,2,4,'PhaseChaitin::Register_Allocate()')
f(11,1,1,4,'PhaseChaitin::Select()')
f(12,1,1,4,'PhaseIFG::re_insert(unsigned int)')
f(11,2,1,4,'PhaseChaitin::Simplify()')
f(12,2,1,4,'PhaseIFG::remove_node(unsigned int)')
f(9,3,1,4,'Compile::Optimize()')
f(10,3,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,3,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(1,4,4,3,'[unknown_Java]')
f(2,4,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,5,3,6,'cats/effect/IO$Map.tag',0,3,0)
f(1,8,255,1,'cats/effect/unsafe/WorkerThread.run')
f(2,8,247,1,'cats/effect/IOFiber.run')
f(3,8,139,1,'cats/effect/IOFiber.autoCedeR')
f(4,8,139,1,'cats/effect/IOFiber.runLoop')
f(5,10,3,2,'cats/effect/ArrayStack.push',3,0,0)
f(6,12,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,13,24,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(6,13,24,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,13,20,1,'cats/Eval$Defer.value')
f(8,16,17,1,'cats/Eval$.cats$Eval$$$evaluate',2,0,0)
f(9,16,15,1,'cats/Eval$.loop$1')
f(10,18,5,2,'cats/Eval$$anon$2$$Lambda$109.0x0000000800dc4ba0.apply',5,0,0)
f(11,18,5,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',5,0,0)
f(12,18,2,2,'cats/Eval$$anon$1$$Lambda$105.0x0000000800dbf3f0.apply',2,0,0)
f(13,18,2,2,'cats/Eval$$anon$1.$init$$$anonfun$1',2,0,0)
f(14,18,2,2,'cats/Eval$$anon$2.<init>',2,0,0)
f(12,20,3,2,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply',3,0,0)
f(13,20,3,2,'cats/data/Chain$.loop$4$$anonfun$3',3,0,0)
f(14,20,3,2,'cats/effect/IO$$anon$2.map2Eval',3,0,0)
f(10,23,8,2,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply',8,0,0)
f(11,23,8,2,'cats/data/Chain$.loop$4$$anonfun$1',8,0,0)
f(12,24,7,2,'cats/effect/IO$$anon$2.map2Eval',7,0,0)
f(13,26,5,2,'cats/effect/IO$$anon$2.map2Eval',5,0,0)
f(9,31,2,2,'cats/Eval$Ident$.apply',2,0,0)
f(7,33,4,1,'cats/Later.value')
f(8,34,3,2,'scala/runtime/LazyVals$.CAS',3,0,0)
f(9,34,3,2,'sun/misc/Unsafe.compareAndSwapLong',3,0,0)
f(5,37,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(5,39,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(5,42,7,6,'cats/effect/IO$Map.tag',0,7,0)
f(5,49,79,1,'cats/effect/IOFiber.succeeded')
f(6,51,1,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc45b0.apply')
f(6,52,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,53,4,2,'cats/effect/ByteStack$.pop',4,0,0)
f(7,53,4,2,'cats/effect/ByteStack$.peek',4,0,0)
f(6,57,5,1,'cats/effect/IO$$$Lambda$113.0x0000000800dc5ba0.apply')
f(7,59,3,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',3,0,0)
f(8,61,1,2,'cats/data/Chain$$$Lambda$106.0x0000000800dc4000.apply',1,0,0)
f(9,61,1,2,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1',1,0,0)
f(10,61,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(11,61,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(6,62,13,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(7,62,13,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,62,13,1,'cats/Eval$FlatMap.value')
f(9,62,13,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,62,13,1,'cats/Eval$.loop$1')
f(11,62,6,2,'cats/Eval$$anon$2$$Lambda$109.0x0000000800dc4ba0.apply',6,0,0)
f(12,62,6,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',6,0,0)
f(13,62,1,2,'cats/Eval$$anon$1$$Lambda$105.0x0000000800dbf3f0.apply',1,0,0)
f(14,62,1,2,'cats/Eval$$anon$1.$init$$$anonfun$1',1,0,0)
f(15,62,1,2,'cats/Eval$$anon$2.<init>',1,0,0)
f(16,62,1,2,'cats/Eval$FlatMap.<init>',1,0,0)
f(17,62,1,2,'cats/Eval.<init>',1,0,0)
f(18,62,1,2,'java/lang/Object.<init>',1,0,0)
f(13,63,5,2,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply',5,0,0)
f(14,63,5,2,'cats/data/Chain$.loop$4$$anonfun$3',5,0,0)
f(15,63,5,2,'cats/effect/IO$$anon$2.map2Eval',5,0,0)
f(16,64,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(17,64,4,2,'cats/effect/IO.flatMap',4,0,0)
f(18,64,4,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(19,64,4,2,'cats/effect/IO$FlatMap.<init>',4,0,0)
f(20,66,2,2,'cats/effect/IO.<init>',2,0,0)
f(21,66,2,2,'cats/effect/IOPlatform.<init>',2,0,0)
f(11,68,2,6,'cats/Eval$$anon$3.start',0,2,0)
f(11,70,2,2,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply',1,0,0)
f(12,70,2,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(13,70,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(14,70,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(15,71,1,2,'cats/Eval$.now',1,0,0)
f(16,71,1,2,'cats/Now$.apply',1,0,0)
f(11,72,3,3,'itable stub')
f(6,75,5,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,75,5,1,'cats/effect/IOFiber.done')
f(8,75,5,1,'cats/effect/CallbackStack.apply')
f(9,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(10,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(11,75,5,1,'cats/effect/IO$$Lambda$90.0x0000000800d58530.applyVoid')
f(12,75,5,1,'cats/effect/IO.$anonfun$6')
f(13,75,5,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,75,5,1,'cats/effect/kernel/Outcome.fold$')
f(15,75,5,1,'cats/effect/kernel/Outcome.fold')
f(16,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(17,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(18,75,5,1,'cats/effect/IO$$Lambda$118.0x0000000800dc3408.applyVoid')
f(19,75,5,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(21,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(22,75,5,1,'cats/effect/IO$$Lambda$89.0x0000000800d55ad0.applyVoid')
f(23,75,5,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(25,75,5,1,'scala/runtime/function/JProcedure1.apply')
f(26,75,5,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55000.applyVoid')
f(27,75,5,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,75,5,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,76,4,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,76,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,76,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,76,4,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,76,4,1,'jdk/internal/misc/Unsafe.unpark')
f(34,76,1,4,'SafeThreadsListPtr::release_stable_list()')
f(34,77,3,3,'pthread_cond_signal')
f(35,77,3,5,'entry_SYSCALL_64_after_hwframe')
f(36,77,3,5,'do_syscall_64')
f(37,77,3,5,'__x64_sys_futex')
f(38,77,3,5,'do_futex')
f(39,77,3,5,'futex_wake')
f(40,77,3,5,'wake_up_q')
f(41,77,3,5,'_raw_spin_unlock_irqrestore')
f(6,80,22,1,'cats/instances/ListInstances$$anon$1$$Lambda$111.0x0000000800dc5410.apply')
f(7,80,22,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,80,22,1,'cats/data/Chain.toList')
f(9,80,22,1,'cats/data/Chain$ChainIterator.toList')
f(10,80,22,1,'scala/collection/IterableOnceOps.toList$')
f(11,80,22,1,'scala/collection/IterableOnceOps.toList')
f(12,80,22,1,'scala/collection/immutable/List.prependedAll')
f(13,85,1,2,'cats/data/Chain$ChainIterator.hasNext',1,0,0)
f(14,85,1,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',1,0,0)
f(15,85,1,2,'scala/collection/immutable/List.isEmpty',1,0,0)
f(13,86,14,1,'cats/data/Chain$ChainIterator.next')
f(14,89,11,2,'cats/data/Chain$ChainIterator.go$3',11,0,0)
f(15,92,8,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',8,0,0)
f(13,100,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(14,100,1,2,'scala/runtime/Statics.releaseFence',1,0,0)
f(13,101,1,2,'scala/collection/immutable/NewVectorIterator.next',1,0,0)
f(6,102,12,3,'itable stub')
f(6,114,14,1,'kyo/bench/CollectAllBench$$Lambda$112.0x0000000800dc57d8.apply')
f(7,114,14,2,'kyo/bench/CollectAllBench.catsBench$$anonfun$1',13,0,0)
f(8,114,14,2,'scala/collection/AbstractIterable.sum',13,0,0)
f(9,114,14,2,'scala/collection/IterableOnceOps.sum$',13,0,0)
f(10,114,14,2,'scala/collection/IterableOnceOps.sum',13,0,0)
f(11,114,14,2,'scala/collection/AbstractIterable.reduce',13,0,0)
f(12,114,14,2,'scala/collection/IterableOnceOps.reduce$',13,0,0)
f(13,114,14,2,'scala/collection/IterableOnceOps.reduce',13,0,0)
f(14,114,14,2,'scala/collection/AbstractIterable.reduceLeft',13,0,0)
f(15,114,14,2,'scala/collection/IterableOnceOps.reduceLeft$',13,0,0)
f(16,114,14,2,'scala/collection/IterableOnceOps.reduceLeft',13,0,0)
f(17,114,12,2,'scala/collection/IterableOnceOps$$Lambda$115.0x0000000800dc2290.apply',11,0,0)
f(18,114,12,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',11,0,0)
f(19,114,12,2,'scala/math/Numeric$IntIsIntegral$.plus',11,0,0)
f(20,114,12,2,'scala/runtime/BoxesRunTime.boxToInteger',11,0,0)
f(21,123,3,2,'java/lang/Integer.valueOf',2,0,0)
f(22,125,1,1,'java/lang/Integer.<init>')
f(23,125,1,1,'java/lang/Number.<init>')
f(17,126,2,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',2,0,0)
f(18,127,1,2,'scala/collection/immutable/$colon$colon.tail',1,0,0)
f(19,127,1,2,'scala/collection/immutable/$colon$colon.tail',1,0,0)
f(20,127,1,2,'scala/collection/immutable/$colon$colon.next',1,0,0)
f(5,128,17,2,'kyo/bench/CollectAllBench$$Lambda$95.0x0000000800d67b70.apply',17,0,0)
f(5,145,2,3,'vtable stub')
f(3,147,108,1,'cats/effect/IOFiber.cedeR')
f(4,147,45,1,'cats/effect/IOFiber.runLoop')
f(5,149,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,150,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(5,151,13,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(6,151,13,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,151,12,1,'cats/Eval$Defer.value')
f(8,153,10,1,'cats/Eval$.cats$Eval$$$evaluate',1,0,0)
f(9,154,9,1,'cats/Eval$.loop$1')
f(10,155,3,2,'cats/Eval$$anon$2$$Lambda$109.0x0000000800dc4ba0.apply',3,0,0)
f(11,155,3,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',3,0,0)
f(12,155,3,2,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply',3,0,0)
f(13,155,3,2,'cats/data/Chain$.loop$4$$anonfun$3',3,0,0)
f(14,155,3,2,'cats/effect/IO$$anon$2.map2Eval',3,0,0)
f(15,156,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(16,156,2,2,'cats/effect/IO.flatMap',2,0,0)
f(17,156,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(18,156,2,2,'cats/effect/IO$FlatMap.<init>',2,0,0)
f(19,156,2,2,'cats/effect/IO.<init>',2,0,0)
f(20,156,2,2,'cats/effect/IOPlatform.<init>',2,0,0)
f(10,158,5,2,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply',5,0,0)
f(11,158,5,2,'cats/data/Chain$.loop$4$$anonfun$1',5,0,0)
f(12,158,5,2,'cats/effect/IO$$anon$2.map2Eval',5,0,0)
f(13,161,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(7,163,1,1,'cats/Later.value')
f(5,164,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,165,4,6,'cats/effect/IO$Map.tag',0,4,0)
f(5,169,1,1,'cats/effect/IOFiber.rescheduleFiber')
f(6,169,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(7,169,1,2,'cats/effect/unsafe/WorkerThread.reschedule',1,0,0)
f(8,169,1,2,'cats/effect/unsafe/LocalQueue.isEmpty',1,0,0)
f(9,169,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(5,170,7,1,'cats/effect/IOFiber.succeeded')
f(6,170,2,2,'cats/effect/ByteStack$.pop',2,0,0)
f(7,171,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,172,1,1,'cats/effect/IO$$$Lambda$113.0x0000000800dc5ba0.apply')
f(6,173,3,1,'cats/effect/IO$$anon$2$$Lambda$107.0x0000000800dbfc00.apply')
f(7,173,3,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,173,3,1,'cats/Eval$FlatMap.value')
f(9,173,3,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,173,3,1,'cats/Eval$.loop$1')
f(11,173,1,2,'cats/Eval$$anon$2$$Lambda$109.0x0000000800dc4ba0.apply',1,0,0)
f(12,173,1,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',1,0,0)
f(13,173,1,2,'cats/data/Chain$$$Lambda$104.0x0000000800dbf020.apply',1,0,0)
f(14,173,1,2,'cats/data/Chain$.loop$4$$anonfun$3',1,0,0)
f(15,173,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(16,173,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(17,173,1,2,'cats/effect/IO.flatMap',1,0,0)
f(18,173,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(19,173,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(20,173,1,2,'cats/effect/IO.<init>',1,0,0)
f(11,174,2,3,'itable stub')
f(6,176,1,3,'itable stub')
f(5,177,12,2,'kyo/bench/CollectAllBench$$Lambda$95.0x0000000800d67b70.apply',12,0,0)
f(5,189,3,3,'vtable stub')
f(4,192,63,1,'cats/effect/IOFiber.succeeded')
f(5,192,63,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8db90.apply')
f(6,192,63,1,'kyo/bench/Bench.forkCats$$anonfun$1',5,0,0)
f(7,192,63,1,'kyo/bench/CollectAllBench.catsBench',5,0,0)
f(8,193,41,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(9,193,41,1,'cats/Traverse$Ops.sequence$')
f(10,193,41,1,'cats/Traverse$Ops.sequence')
f(11,193,41,1,'cats/instances/ListInstances$$anon$1.sequence')
f(12,193,41,1,'cats/Traverse.sequence$')
f(13,193,41,1,'cats/Traverse.sequence')
f(14,193,41,1,'cats/instances/ListInstances$$anon$1.traverse')
f(15,193,41,1,'cats/instances/ListInstances$$anon$1.traverse')
f(16,193,29,1,'cats/data/Chain$.traverseViaChain')
f(17,193,7,1,'cats/Eval$FlatMap.value')
f(18,193,7,1,'cats/Eval$.cats$Eval$$$evaluate')
f(19,193,7,1,'cats/Eval$.loop$1')
f(20,193,1,6,'cats/Eval$$anon$2.start',0,1,0)
f(20,194,1,2,'cats/data/Chain$$$Lambda$101.0x0000000800dbe5c0.apply',1,0,0)
f(21,194,1,2,'cats/data/Chain$.loop$4$$anonfun$1',1,0,0)
f(22,194,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(23,194,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(24,194,1,2,'cats/effect/IO.flatMap',1,0,0)
f(25,194,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(26,194,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(27,194,1,2,'cats/effect/IO.<init>',1,0,0)
f(28,194,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(20,195,4,3,'itable stub')
f(20,199,1,3,'vtable stub')
f(17,200,22,1,'cats/data/Chain$.loop$4')
f(18,202,1,2,'cats/Eval$.defer',1,0,0)
f(19,202,1,2,'cats/Eval$$anon$5.<init>',1,0,0)
f(20,202,1,2,'cats/Eval$Defer.<init>',1,0,0)
f(18,203,7,2,'cats/Eval.map',7,0,0)
f(19,203,5,2,'cats/Eval.flatMap',5,0,0)
f(19,208,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(20,208,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(21,208,2,2,'cats/Eval$$Lambda$103.0x0000000800dbec50.<init>',2,0,0)
f(18,210,11,1,'cats/data/Chain$.loop$4')
f(19,210,1,2,'cats/Eval$.later',1,0,0)
f(20,210,1,2,'cats/Later.<init>',1,0,0)
f(19,211,10,2,'cats/Eval.flatMap',10,0,0)
f(20,211,10,2,'cats/Eval$$anon$1.<init>',10,0,0)
f(18,221,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(19,221,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(20,221,1,2,'cats/data/Chain$$$Lambda$102.0x0000000800dbe880.<init>',1,0,0)
f(16,222,12,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq')
f(17,222,12,1,'scala/collection/mutable/Growable.$plus$plus$eq$')
f(18,222,12,1,'scala/collection/mutable/Growable.$plus$plus$eq')
f(19,222,12,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(20,222,12,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(21,222,12,1,'scala/collection/mutable/Growable.addAll$')
f(22,222,12,1,'scala/collection/mutable/Growable.addAll')
f(23,222,1,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',1,0,0)
f(23,223,11,2,'scala/collection/mutable/ArrayBuffer.addOne',11,0,0)
f(24,223,11,2,'scala/collection/mutable/ArrayBuffer.addOne',11,0,0)
f(25,223,4,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',4,0,0)
f(26,223,1,2,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize',1,0,0)
f(27,223,1,3,'jint_disjoint_arraycopy')
f(26,224,2,2,'scala/collection/mutable/ArrayBuffer.array_$eq',2,0,0)
f(26,226,1,2,'scala/collection/mutable/ArrayBuffer.size0',1,0,0)
f(25,227,7,2,'scala/collection/mutable/ArrayBuffer.update',7,0,0)
f(8,234,17,1,'scala/collection/AbstractIterable.toList')
f(9,234,17,1,'scala/collection/IterableOnceOps.toList$')
f(10,234,17,1,'scala/collection/IterableOnceOps.toList')
f(11,234,17,1,'scala/collection/immutable/List.prependedAll')
f(12,239,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,239,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(14,239,1,4,'MemAllocator::allocate() const')
f(15,239,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(16,239,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(17,239,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(18,239,1,4,'MutatorAllocRegion::retire(bool)')
f(19,239,1,4,'G1CollectedHeap::retire_mutator_alloc_region(HeapRegion*, unsigned long)')
f(20,239,1,4,'G1CollectionSet::add_eden_region(HeapRegion*)')
f(12,240,4,2,'cats/data/Chain$ChainIterator.hasNext',4,0,0)
f(13,240,4,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',4,0,0)
f(12,244,5,2,'scala/collection/immutable/$colon$colon.<init>',5,0,0)
f(12,249,2,2,'scala/collection/immutable/NewVectorIterator.next',2,0,0)
f(13,250,1,2,'scala/collection/immutable/NewVectorIterator.advance',1,0,0)
f(8,251,3,2,'scala/collection/immutable/Range.map',3,0,0)
f(9,251,2,2,'kyo/bench/CollectAllBench$$Lambda$94.0x0000000800d5b030.apply',2,0,0)
f(10,251,2,2,'kyo/bench/CollectAllBench.$anonfun$adapted$2',2,0,0)
f(11,251,2,2,'kyo/bench/CollectAllBench.$anonfun$3',2,0,0)
f(12,251,2,2,'cats/effect/IO$.apply',2,0,0)
f(13,251,2,2,'cats/effect/IO$.delay',2,0,0)
f(14,251,2,2,'cats/effect/IO$Delay$.apply',2,0,0)
f(9,253,1,2,'scala/collection/SeqFactory$Delegate.newBuilder',1,0,0)
f(10,253,1,2,'scala/collection/immutable/Vector$.newBuilder',1,0,0)
f(8,254,1,2,'scala/runtime/RichInt$.until$extension',1,0,0)
f(9,254,1,2,'scala/collection/immutable/Range$Exclusive.<init>',1,0,0)
f(10,254,1,2,'scala/collection/immutable/Range.<init>',1,0,0)
f(11,254,1,2,'scala/collection/immutable/Range.longLength',1,0,0)
f(12,254,1,2,'scala/collection/immutable/Range.hasStub',1,0,0)
f(13,254,1,2,'scala/collection/immutable/Range.isExact',1,0,0)
f(2,255,1,1,'cats/effect/unsafe/ScalQueue.poll')
f(3,255,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(2,256,7,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,256,7,1,'java/util/concurrent/locks/LockSupport.park')
f(4,256,7,1,'jdk/internal/misc/Unsafe.park')
f(5,256,1,3,'Unsafe_Park')
f(5,257,6,3,'[unknown]')
f(6,257,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,258,5,5,'entry_SYSCALL_64_after_hwframe')
f(8,258,5,5,'do_syscall_64')
f(9,258,5,5,'__x64_sys_futex')
f(10,258,5,5,'do_futex')
f(11,258,5,5,'futex_wait')
f(12,258,4,5,'futex_wait_queue_me')
f(13,258,4,5,'schedule')
f(14,258,4,5,'__schedule')
f(15,258,4,5,'finish_task_switch.isra.0')
f(12,262,1,5,'futex_wait_setup')
f(13,262,1,5,'get_futex_key')
f(1,263,15,1,'java/lang/Thread.run')
f(2,263,15,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,263,15,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,263,15,1,'java/util/concurrent/FutureTask.run')
f(5,263,15,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,263,15,1,'java/util/concurrent/FutureTask.run')
f(7,263,15,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,263,15,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,263,15,1,'java/lang/reflect/Method.invoke')
f(10,263,15,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,263,15,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,263,15,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,263,15,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_Throughput')
f(14,263,15,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_thrpt_jmhStub',0,1,0)
f(15,264,14,1,'kyo/bench/Bench.forkCats')
f(16,264,14,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,264,14,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,264,7,1,'cats/effect/IO.unsafeRunAsync')
f(19,264,6,1,'cats/effect/IO.unsafeRunFiber')
f(20,264,6,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,264,6,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,264,6,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,264,6,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,264,6,1,'jdk/internal/misc/Unsafe.unpark')
f(25,264,6,3,'pthread_cond_signal')
f(26,264,6,5,'entry_SYSCALL_64_after_hwframe')
f(27,264,6,5,'do_syscall_64')
f(28,264,6,5,'__x64_sys_futex')
f(29,264,6,5,'do_futex')
f(30,264,6,5,'futex_wake')
f(31,265,5,5,'wake_up_q')
f(32,265,5,5,'_raw_spin_unlock_irqrestore')
f(19,270,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(20,270,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(21,270,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(18,271,7,1,'scala/concurrent/package$.blocking')
f(19,271,7,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,271,7,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a338.apply')
f(21,271,7,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,271,7,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,271,7,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,271,1,2,'java/lang/Thread.interrupted',1,0,0)
f(24,272,6,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,272,6,1,'jdk/internal/misc/Unsafe.park')
f(26,272,6,3,'[unknown]')
f(27,272,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,272,6,5,'entry_SYSCALL_64_after_hwframe')
f(29,272,6,5,'do_syscall_64')
f(30,272,5,5,'__x64_sys_futex')
f(31,272,5,5,'do_futex')
f(32,272,5,5,'futex_wait')
f(33,272,5,5,'futex_wait_queue_me')
f(34,272,5,5,'schedule')
f(35,272,5,5,'__schedule')
f(36,272,5,5,'finish_task_switch.isra.0')
f(30,277,1,5,'syscall_exit_to_user_mode')
f(31,277,1,5,'exit_to_user_mode_prepare')
f(32,277,1,5,'exit_to_user_mode_loop')
f(33,277,1,5,'__rseq_handle_notify_resume')
f(34,277,1,5,'rseq_ip_fixup')
f(35,277,1,5,'__get_user_8')
f(1,278,1,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8db90.apply')
f(2,278,1,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(3,278,1,1,'kyo/bench/CollectAllBench.catsBench')
f(4,278,1,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(5,278,1,1,'cats/Traverse$Ops.sequence$')
f(6,278,1,1,'cats/Traverse$Ops.sequence')
f(7,278,1,1,'cats/instances/ListInstances$$anon$1.sequence')
f(8,278,1,1,'cats/Traverse.sequence$')
f(9,278,1,1,'cats/Traverse.sequence')
f(10,278,1,1,'cats/instances/ListInstances$$anon$1.traverse')
f(11,278,1,1,'cats/instances/ListInstances$$anon$1.traverse')
f(12,278,1,1,'cats/effect/IO$$anon$2.map')
f(13,278,1,1,'cats/effect/IO$$anon$2.map')
f(14,278,1,1,'cats/effect/IO.map')
f(15,278,1,1,'cats/effect/IO$Map$.apply')
f(16,278,1,1,'cats/effect/IO$Map.<init>')
f(17,278,1,1,'cats/effect/IO.<init>')
f(18,278,1,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc45b0.apply')
f(19,278,1,2,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1',1,0,0)
f(20,278,1,2,'cats/data/Chain$.fromSeq',1,0,0)
f(21,278,1,2,'cats/data/ChainCompanionCompat.fromSeq$',1,0,0)
f(22,278,1,2,'cats/data/ChainCompanionCompat.fromSeq',1,0,0)
f(23,278,1,2,'cats/data/Chain$Wrap$.apply',1,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 608px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(38);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,17284,3,'all')
f(1,0,14983,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,14983,1,'cats/effect/IOFiber.run')
f(3,0,11235,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,11235,1,'cats/effect/IOFiber.runLoop')
f(5,0,166,1,'cats/data/Chain$$$Lambda$113.0x0000000800dc66b0.apply')
f(6,0,166,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,0,166,1,'scala/collection/immutable/List.$colon$colon')
f(8,0,166,2,'scala.collection.immutable.$colon$colon')
f(5,166,5529,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(6,166,5529,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,166,3350,1,'cats/Eval$Defer.value')
f(8,166,3350,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,166,2794,1,'cats/Eval$.loop$1')
f(10,166,2794,1,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply')
f(11,166,2794,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,166,2166,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,166,2166,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,166,627,1,'cats/Eval$.now')
f(15,166,627,1,'cats/Now$.apply')
f(16,166,627,2,'cats.Now')
f(14,793,822,1,'cats/effect/IO.flatMap')
f(15,793,822,1,'cats/effect/IO$FlatMap$.apply')
f(16,793,822,2,'cats.effect.IO$FlatMap')
f(14,1615,717,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,1615,717,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,1615,717,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,1615,717,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97000')
f(12,2332,628,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,2332,628,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,2332,628,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,2332,628,2,'cats.data.Chain$$$Lambda$54+0x0000000800d93820')
f(9,2960,556,1,'cats/Eval$Ident$.apply')
f(10,2960,556,2,'cats.Eval$Ident')
f(7,3516,294,1,'cats/Later.value')
f(8,3516,294,1,'cats/data/Chain$$$Lambda$47.0x0000000800d8eff8.apply')
f(9,3516,294,1,'cats/data/Chain$.$anonfun$1')
f(10,3516,173,1,'cats/effect/IO$$anon$2.map')
f(11,3516,173,1,'cats/effect/IO$$anon$2.map')
f(12,3516,173,1,'cats/effect/IO.map')
f(13,3516,173,1,'cats/effect/IO$Map$.apply')
f(14,3516,173,2,'cats.effect.IO$Map')
f(10,3689,121,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,3689,121,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,3689,121,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,3689,121,2,'cats.data.Chain$$$Lambda$113+0x0000000800dc66b0')
f(7,3810,995,1,'cats/effect/IO.map')
f(8,3810,995,1,'cats/effect/IO$Map$.apply')
f(9,3810,995,2,'cats.effect.IO$Map')
f(7,4805,890,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,4805,890,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,4805,890,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,4805,890,2,'cats.effect.IO$$$Lambda$112+0x0000000800dc62e0')
f(5,5695,5540,1,'cats/effect/IOFiber.succeeded')
f(6,5695,104,1,'cats/data/Chain$$$Lambda$56.0x0000000800d973d0.apply')
f(7,5695,104,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,5695,104,1,'cats/data/Chain$.fromSeq')
f(9,5695,104,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,5695,104,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,5695,104,1,'cats/data/Chain$Wrap$.apply')
f(12,5695,104,2,'cats.data.Chain$Wrap')
f(6,5799,1106,1,'cats/effect/IO$$$Lambda$112.0x0000000800dc62e0.apply')
f(7,5799,1106,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,5799,950,1,'cats/data/Chain$$$Lambda$54.0x0000000800d93820.apply')
f(9,5799,950,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,5799,950,1,'scala/collection/immutable/List.$colon$colon')
f(11,5799,950,2,'scala.collection.immutable.$colon$colon')
f(8,6749,156,1,'cats/data/Chain$$$Lambda$58.0x0000000800d96800.apply')
f(9,6749,156,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,6749,156,1,'cats/data/Chain.concat')
f(11,6749,156,1,'cats/data/Chain$.concat')
f(12,6749,156,1,'cats/data/Chain$Append$.apply')
f(13,6749,156,2,'cats.data.Chain$Append')
f(6,6905,1370,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(7,6905,1370,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,6905,1058,1,'cats/Eval$FlatMap.value')
f(9,6905,1058,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,6905,948,1,'cats/Eval$.loop$1')
f(11,6905,397,1,'cats/Eval$$Lambda$51.0x0000000800d92630.apply')
f(12,6905,397,1,'cats/Eval.map$$anonfun$1')
f(13,6905,113,1,'cats/Now$.apply')
f(14,6905,113,2,'cats.Now')
f(13,7018,284,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92260.apply')
f(14,7018,284,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,7018,170,1,'cats/effect/IO$$anon$2.map')
f(16,7018,170,1,'cats/effect/IO$$anon$2.map')
f(17,7018,170,1,'cats/effect/IO.map')
f(18,7018,170,1,'cats/effect/IO$Map$.apply')
f(19,7018,170,2,'cats.effect.IO$Map')
f(15,7188,114,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7188,114,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7188,114,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7188,114,2,'cats.data.Chain$$$Lambda$56+0x0000000800d973d0')
f(11,7302,551,1,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply')
f(12,7302,551,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,7302,439,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,7302,439,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,7302,77,1,'cats/Eval$.now')
f(16,7302,77,1,'cats/Now$.apply')
f(17,7302,77,2,'cats.Now')
f(15,7379,182,1,'cats/effect/IO.flatMap')
f(16,7379,182,1,'cats/effect/IO$FlatMap$.apply')
f(17,7379,182,2,'cats.effect.IO$FlatMap')
f(15,7561,180,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7561,180,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7561,180,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7561,180,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97000')
f(13,7741,112,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,7741,112,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,7741,112,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,7741,112,2,'cats.data.Chain$$$Lambda$54+0x0000000800d93820')
f(10,7853,110,1,'cats/Eval$Ident$.apply')
f(11,7853,110,2,'cats.Eval$Ident')
f(8,7963,156,1,'cats/effect/IO.map')
f(9,7963,156,1,'cats/effect/IO$Map$.apply')
f(10,7963,156,2,'cats.effect.IO$Map')
f(8,8119,156,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8119,156,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8119,156,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8119,156,2,'cats.effect.IO$$$Lambda$112+0x0000000800dc62e0')
f(6,8275,8,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,8275,2,1,'cats/effect/IO$.pure')
f(8,8275,2,1,'cats/effect/IO$Pure$.apply')
f(9,8275,2,2,'cats.effect.IO$Pure')
f(7,8277,6,1,'cats/effect/IOFiber.done')
f(8,8277,4,1,'cats/effect/CallbackStack.apply')
f(9,8277,4,1,'scala/runtime/function/JProcedure1.apply')
f(10,8277,4,1,'scala/runtime/function/JProcedure1.apply')
f(11,8277,4,1,'cats/effect/IO$$Lambda$108.0x0000000800dc4000.applyVoid')
f(12,8277,4,1,'cats/effect/IO.$anonfun$6')
f(13,8277,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,8277,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,8277,1,1,'cats/effect/kernel/Outcome.fold')
f(16,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,8277,1,1,'cats/effect/IO$$Lambda$117.0x0000000800dc3b78.applyVoid')
f(19,8277,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,8277,1,1,'cats/effect/IO$$Lambda$107.0x0000000800dbd408.applyVoid')
f(23,8277,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,8277,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,8277,1,1,'cats/effect/IOPlatform$$Lambda$104.0x0000000800dbf560.applyVoid')
f(27,8277,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,8277,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,8277,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,8277,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,8277,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,8277,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,8277,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,8277,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,8278,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,8278,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,8278,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,8278,1,2,'cats.effect.IO$$Lambda$115+0x0000000800dc34b0')
f(16,8279,1,2,'cats.effect.IO$$Lambda$116+0x0000000800dc3770')
f(16,8280,1,2,'cats.effect.IO$$Lambda$117+0x0000000800dc3b78')
f(8,8281,2,1,'cats/effect/IO$.pure')
f(9,8281,2,1,'cats/effect/IO$Pure$.apply')
f(10,8281,2,2,'cats.effect.IO$Pure')
f(6,8283,1970,1,'cats/instances/ListInstances$$anon$1$$Lambda$59.0x0000000800d96400.apply')
f(7,8283,1970,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,8283,1970,1,'cats/data/Chain.toList')
f(9,8283,3,2,'cats.data.Chain$ChainIterator')
f(9,8286,1967,1,'cats/data/Chain$ChainIterator.toList')
f(10,8286,1967,1,'scala/collection/IterableOnceOps.toList$')
f(11,8286,1967,1,'scala/collection/IterableOnceOps.toList')
f(12,8286,1967,1,'scala/collection/immutable/List.prependedAll')
f(13,8286,374,1,'cats/data/Chain$ChainIterator.next')
f(14,8286,374,1,'cats/data/Chain$ChainIterator.go$3')
f(15,8286,226,1,'scala/collection/immutable/List.$colon$colon')
f(16,8286,226,2,'scala.collection.immutable.$colon$colon')
f(15,8512,148,1,'scala/collection/immutable/List.iterator')
f(16,8512,148,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator$')
f(17,8512,148,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator')
f(18,8512,148,2,'scala.collection.StrictOptimizedLinearSeqOps$$anon$1')
f(13,8660,1593,2,'scala.collection.immutable.$colon$colon')
f(6,10253,982,1,'kyo/bench/CollectAllBench$$Lambda$60.0x0000000800d9c000.apply')
f(7,10253,2,1,'java/lang/Long.valueOf')
f(8,10253,2,2,'java.lang.Long')
f(7,10255,980,1,'kyo/bench/CollectAllBench.catsBench$$anonfun$1')
f(8,10255,980,1,'scala/collection/AbstractIterable.sum')
f(9,10255,980,1,'scala/collection/IterableOnceOps.sum$')
f(10,10255,980,1,'scala/collection/IterableOnceOps.sum')
f(11,10255,980,1,'scala/collection/AbstractIterable.reduce')
f(12,10255,980,1,'scala/collection/IterableOnceOps.reduce$')
f(13,10255,980,1,'scala/collection/IterableOnceOps.reduce')
f(14,10255,980,1,'scala/collection/AbstractIterable.reduceLeft')
f(15,10255,980,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(16,10255,980,1,'scala/collection/IterableOnceOps.reduceLeft')
f(17,10255,980,1,'scala/collection/IterableOnceOps$$Lambda$114.0x0000000800dc2a00.apply')
f(18,10255,980,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(19,10255,980,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(20,10255,980,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(21,10255,980,1,'java/lang/Integer.valueOf')
f(22,10255,980,2,'java.lang.Integer')
f(3,11235,3748,1,'cats/effect/IOFiber.execR')
f(4,11235,10,1,'cats/effect/ArrayStack.init')
f(5,11235,10,2,'java.lang.Object[]')
f(4,11245,211,1,'cats/effect/ByteStack$.create')
f(5,11245,211,2,'int[]')
f(4,11456,3527,1,'cats/effect/IOFiber.runLoop')
f(5,11456,75,1,'cats/data/Chain$$$Lambda$113.0x0000000800dc66b0.apply')
f(6,11456,75,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,11456,75,1,'scala/collection/immutable/List.$colon$colon')
f(8,11456,75,2,'scala.collection.immutable.$colon$colon')
f(5,11531,159,1,'cats/effect/ArrayStack.push')
f(6,11531,159,1,'cats/effect/ArrayStack.checkAndGrow')
f(7,11531,159,2,'java.lang.Object[]')
f(5,11690,10,1,'cats/effect/ByteStack$.push')
f(6,11690,10,1,'cats/effect/ByteStack$.growIfNeeded')
f(7,11690,10,2,'int[]')
f(5,11700,2229,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(6,11700,2229,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,11700,1374,1,'cats/Eval$Defer.value')
f(8,11700,1374,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,11700,1159,1,'cats/Eval$.loop$1')
f(10,11700,1159,1,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply')
f(11,11700,1159,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,11700,934,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,11700,934,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,11700,251,1,'cats/Eval$.now')
f(15,11700,251,1,'cats/Now$.apply')
f(16,11700,251,2,'cats.Now')
f(14,11951,355,1,'cats/effect/IO.flatMap')
f(15,11951,355,1,'cats/effect/IO$FlatMap$.apply')
f(16,11951,355,2,'cats.effect.IO$FlatMap')
f(14,12306,328,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,12306,328,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,12306,328,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,12306,328,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97000')
f(12,12634,225,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,12634,225,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,12634,225,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,12634,225,2,'cats.data.Chain$$$Lambda$54+0x0000000800d93820')
f(9,12859,215,1,'cats/Eval$Ident$.apply')
f(10,12859,215,2,'cats.Eval$Ident')
f(7,13074,111,1,'cats/Later.value')
f(8,13074,111,1,'cats/data/Chain$$$Lambda$47.0x0000000800d8eff8.apply')
f(9,13074,111,1,'cats/data/Chain$.$anonfun$1')
f(10,13074,71,1,'cats/effect/IO$$anon$2.map')
f(11,13074,71,1,'cats/effect/IO$$anon$2.map')
f(12,13074,71,1,'cats/effect/IO.map')
f(13,13074,71,1,'cats/effect/IO$Map$.apply')
f(14,13074,71,2,'cats.effect.IO$Map')
f(10,13145,40,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,13145,40,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,13145,40,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,13145,40,2,'cats.data.Chain$$$Lambda$113+0x0000000800dc66b0')
f(7,13185,379,1,'cats/effect/IO.map')
f(8,13185,379,1,'cats/effect/IO$Map$.apply')
f(9,13185,379,2,'cats.effect.IO$Map')
f(7,13564,365,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,13564,365,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,13564,365,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,13564,365,2,'cats.effect.IO$$$Lambda$112+0x0000000800dc62e0')
f(5,13929,1054,1,'cats/effect/IOFiber.succeeded')
f(6,13929,46,1,'cats/data/Chain$$$Lambda$56.0x0000000800d973d0.apply')
f(7,13929,46,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,13929,46,1,'cats/data/Chain$.fromSeq')
f(9,13929,46,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,13929,46,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,13929,46,1,'cats/data/Chain$Wrap$.apply')
f(12,13929,46,2,'cats.data.Chain$Wrap')
f(6,13975,462,1,'cats/effect/IO$$$Lambda$112.0x0000000800dc62e0.apply')
f(7,13975,462,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,13975,397,1,'cats/data/Chain$$$Lambda$54.0x0000000800d93820.apply')
f(9,13975,397,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,13975,397,1,'scala/collection/immutable/List.$colon$colon')
f(11,13975,397,2,'scala.collection.immutable.$colon$colon')
f(8,14372,65,1,'cats/data/Chain$$$Lambda$58.0x0000000800d96800.apply')
f(9,14372,65,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,14372,65,1,'cats/data/Chain.concat')
f(11,14372,65,1,'cats/data/Chain$.concat')
f(12,14372,65,1,'cats/data/Chain$Append$.apply')
f(13,14372,65,2,'cats.data.Chain$Append')
f(6,14437,546,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(7,14437,546,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,14437,409,1,'cats/Eval$FlatMap.value')
f(9,14437,409,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,14437,364,1,'cats/Eval$.loop$1')
f(11,14437,159,1,'cats/Eval$$Lambda$51.0x0000000800d92630.apply')
f(12,14437,159,1,'cats/Eval.map$$anonfun$1')
f(13,14437,50,1,'cats/Now$.apply')
f(14,14437,50,2,'cats.Now')
f(13,14487,109,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92260.apply')
f(14,14487,109,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,14487,65,1,'cats/effect/IO$$anon$2.map')
f(16,14487,65,1,'cats/effect/IO$$anon$2.map')
f(17,14487,65,1,'cats/effect/IO.map')
f(18,14487,65,1,'cats/effect/IO$Map$.apply')
f(19,14487,65,2,'cats.effect.IO$Map')
f(15,14552,44,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,14552,44,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,14552,44,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,14552,44,2,'cats.data.Chain$$$Lambda$56+0x0000000800d973d0')
f(11,14596,205,1,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply')
f(12,14596,205,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,14596,157,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,14596,157,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,14596,27,1,'cats/Eval$.now')
f(16,14596,27,1,'cats/Now$.apply')
f(17,14596,27,2,'cats.Now')
f(15,14623,62,1,'cats/effect/IO.flatMap')
f(16,14623,62,1,'cats/effect/IO$FlatMap$.apply')
f(17,14623,62,2,'cats.effect.IO$FlatMap')
f(15,14685,68,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,14685,68,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,14685,68,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,14685,68,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97000')
f(13,14753,48,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,14753,48,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,14753,48,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,14753,48,2,'cats.data.Chain$$$Lambda$54+0x0000000800d93820')
f(10,14801,45,1,'cats/Eval$Ident$.apply')
f(11,14801,45,2,'cats.Eval$Ident')
f(8,14846,79,1,'cats/effect/IO.map')
f(9,14846,79,1,'cats/effect/IO$Map$.apply')
f(10,14846,79,2,'cats.effect.IO$Map')
f(8,14925,58,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,14925,58,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,14925,58,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,14925,58,2,'cats.effect.IO$$$Lambda$112+0x0000000800dc62e0')
f(1,14983,2298,1,'java/lang/Thread.run')
f(2,14983,2298,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,14983,2298,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,14983,2298,1,'java/util/concurrent/FutureTask.run')
f(5,14983,2298,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,14983,2298,1,'java/util/concurrent/FutureTask.run')
f(7,14983,2298,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,14983,2298,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,14983,2298,1,'java/lang/reflect/Method.invoke')
f(10,14983,2298,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,14983,2298,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,14983,2298,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,14983,2298,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_Throughput')
f(14,14983,2298,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,14983,2298,1,'kyo/bench/Bench.syncCats')
f(16,14983,34,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,14983,34,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,14983,4,1,'cats/effect/IO.unsafeRunAsync')
f(19,14983,4,1,'cats/effect/IO.unsafeRunFiber')
f(20,14983,1,2,'cats.effect.IOFiber')
f(20,14984,2,1,'cats/effect/IOFiber.<init>')
f(21,14984,2,1,'cats/effect/ArrayStack$.apply')
f(22,14984,2,2,'cats.effect.ArrayStack')
f(20,14986,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,14986,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,14986,1,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,14986,1,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,14986,1,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(18,14987,1,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,14987,1,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,14987,1,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,14987,1,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,14987,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,14988,29,1,'scala/util/Either.fold')
f(19,14988,29,1,'cats/effect/IOPlatform$$Lambda$119.0x0000000800dc1980.apply')
f(20,14988,29,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,14988,29,1,'scala/Some$.apply')
f(22,14988,29,2,'scala.Some')
f(16,15017,2264,1,'kyo/bench/CollectAllBench.catsBench')
f(17,15017,1511,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(18,15017,1511,1,'cats/Traverse$Ops.sequence$')
f(19,15017,1511,1,'cats/Traverse$Ops.sequence')
f(20,15017,1511,1,'cats/instances/ListInstances$$anon$1.sequence')
f(21,15017,1511,1,'cats/Traverse.sequence$')
f(22,15017,1511,1,'cats/Traverse.sequence')
f(23,15017,1511,1,'cats/instances/ListInstances$$anon$1.traverse')
f(24,15017,1511,1,'cats/instances/ListInstances$$anon$1.traverse')
f(25,15017,1397,1,'cats/data/Chain$.traverseViaChain')
f(26,15017,322,1,'cats/Eval$FlatMap.value')
f(27,15017,322,1,'cats/Eval$.cats$Eval$$$evaluate')
f(28,15017,322,1,'cats/Eval$.loop$1')
f(29,15017,1,1,'cats/Eval$$Lambda$51.0x0000000800d92630.apply')
f(30,15017,1,1,'cats/Eval.map$$anonfun$1')
f(31,15017,1,1,'cats/Now$.apply')
f(32,15017,1,2,'cats.Now')
f(29,15018,100,1,'cats/Eval$$anon$2$$Lambda$57.0x0000000800d979c0.apply')
f(30,15018,100,1,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2')
f(31,15018,99,1,'cats/Eval$$anon$1$$Lambda$53.0x0000000800d93010.apply')
f(32,15018,99,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(33,15018,41,2,'cats.Eval$$anon$2')
f(33,15059,58,1,'cats/Eval$$anon$2.<init>')
f(34,15059,58,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(35,15059,58,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(36,15059,58,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(37,15059,58,2,'cats.Eval$$anon$2$$Lambda$57+0x0000000800d979c0')
f(31,15117,1,1,'cats/data/Chain$$$Lambda$52.0x0000000800d92a00.apply')
f(32,15117,1,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(33,15117,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(34,15117,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(35,15117,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(36,15117,1,2,'cats.data.Chain$$$Lambda$58+0x0000000800d96800')
f(29,15118,55,1,'cats/Eval$Many$.apply')
f(30,15118,55,2,'cats.Eval$Many')
f(29,15173,6,1,'cats/data/Chain$$$Lambda$46.0x0000000800d8ea38.apply')
f(30,15173,6,1,'cats/data/Chain$.$anonfun$2')
f(31,15173,6,1,'cats/data/Chain$.loop$4')
f(32,15173,3,1,'cats/Eval$.defer')
f(33,15173,3,2,'cats.Eval$$anon$5')
f(32,15176,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(33,15176,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(34,15176,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,15176,1,2,'cats.data.Chain$$$Lambda$50+0x0000000800d92260')
f(33,15177,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d96000.newInvokeSpecial')
f(34,15177,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,15177,2,2,'cats.data.Chain$$$Lambda$49+0x0000000800d91fa0')
f(29,15179,160,1,'cats/data/Chain$$$Lambda$52.0x0000000800d92a00.apply')
f(30,15179,160,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(31,15179,124,1,'cats/effect/IO$$anon$2.map2Eval')
f(32,15179,124,1,'cats/effect/IO$$anon$2.map2Eval')
f(33,15179,32,1,'cats/Eval$.now')
f(34,15179,32,1,'cats/Now$.apply')
f(35,15179,32,2,'cats.Now')
f(33,15211,56,1,'cats/effect/IO.flatMap')
f(34,15211,56,1,'cats/effect/IO$FlatMap$.apply')
f(35,15211,56,2,'cats.effect.IO$FlatMap')
f(33,15267,36,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(34,15267,36,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(35,15267,36,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(36,15267,36,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97000')
f(31,15303,36,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,15303,36,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,15303,36,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,15303,36,2,'cats.data.Chain$$$Lambda$58+0x0000000800d96800')
f(26,15339,1075,1,'cats/data/Chain$.loop$4')
f(27,15339,102,1,'cats/Eval.flatMap')
f(28,15339,52,2,'cats.Eval$$anon$1')
f(28,15391,1,2,'cats.Eval$$anon$3')
f(28,15392,49,1,'cats/Eval$$anon$1.<init>')
f(29,15392,49,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,15392,49,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,15392,49,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,15392,49,2,'cats.Eval$$anon$1$$Lambda$53+0x0000000800d93010')
f(27,15441,935,1,'cats/data/Chain$.loop$4')
f(28,15441,212,1,'cats/Eval$.defer')
f(29,15441,212,2,'cats.Eval$$anon$5')
f(28,15653,78,1,'cats/Eval$.later')
f(29,15653,78,2,'cats.Later')
f(28,15731,80,1,'cats/Eval.map')
f(29,15731,52,1,'cats/Eval.flatMap')
f(30,15731,52,2,'cats.Eval$$anon$3')
f(29,15783,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,15783,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,15783,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,15783,28,2,'cats.Eval$$Lambda$51+0x0000000800d92630')
f(28,15811,503,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(29,15811,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(30,15811,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,15811,38,2,'cats.data.Chain$$$Lambda$50+0x0000000800d92260')
f(29,15849,465,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d96000.newInvokeSpecial')
f(30,15849,465,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,15849,465,2,'cats.data.Chain$$$Lambda$49+0x0000000800d91fa0')
f(28,16314,62,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d95c00.linkToTargetMethod')
f(29,16314,62,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d95400.newInvokeSpecial')
f(30,16314,62,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,16314,62,2,'cats.data.Chain$$$Lambda$47+0x0000000800d8eff8')
f(27,16376,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(28,16376,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(29,16376,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(30,16376,38,2,'cats.data.Chain$$$Lambda$52+0x0000000800d92a00')
f(25,16414,1,1,'cats/kernel/instances/StaticMethods$.wrapMutableIndexedSeq')
f(26,16414,1,2,'cats.kernel.instances.StaticMethods$WrappedIndexedSeq')
f(25,16415,113,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq')
f(26,16415,113,1,'scala/collection/mutable/Growable.$plus$plus$eq$')
f(27,16415,113,1,'scala/collection/mutable/Growable.$plus$plus$eq')
f(28,16415,113,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(29,16415,113,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(30,16415,113,1,'scala/collection/mutable/Growable.addAll$')
f(31,16415,113,1,'scala/collection/mutable/Growable.addAll')
f(32,16415,113,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(33,16415,113,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(34,16415,113,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(35,16415,113,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(36,16415,113,2,'java.lang.Object[]')
f(17,16528,354,1,'scala/collection/AbstractIterable.toList')
f(18,16528,354,1,'scala/collection/IterableOnceOps.toList$')
f(19,16528,354,1,'scala/collection/IterableOnceOps.toList')
f(20,16528,354,1,'scala/collection/immutable/List.prependedAll')
f(21,16528,353,2,'scala.collection.immutable.$colon$colon')
f(21,16881,1,1,'scala/collection/immutable/Vector.iterator')
f(22,16881,1,2,'scala.collection.immutable.NewVectorIterator')
f(17,16882,399,1,'scala/collection/immutable/Range.map')
f(18,16882,335,1,'kyo/bench/CollectAllBench$$Lambda$39.0x0000000800cbf220.apply')
f(19,16882,335,1,'kyo/bench/CollectAllBench.$anonfun$adapted$2')
f(20,16882,335,1,'kyo/bench/CollectAllBench.$anonfun$3')
f(21,16882,335,1,'cats/effect/IO$.apply')
f(22,16882,335,1,'cats/effect/IO$.delay')
f(23,16882,335,1,'cats/effect/IO$Delay$.apply')
f(24,16882,335,2,'cats.effect.IO$Delay')
f(18,17217,60,1,'scala/collection/immutable/VectorBuilder.addOne')
f(19,17217,60,1,'scala/collection/immutable/VectorBuilder.addOne')
f(20,17217,60,1,'scala/collection/immutable/VectorBuilder.advance')
f(21,17217,60,1,'scala/collection/immutable/VectorBuilder.advance1')
f(22,17217,3,2,'java.lang.Object[][]')
f(22,17220,57,2,'java.lang.Object[]')
f(18,17277,4,1,'scala/collection/immutable/VectorBuilder.result')
f(19,17277,4,1,'scala/collection/immutable/VectorBuilder.result')
f(20,17277,2,1,'java/util/Arrays.copyOfRange')
f(21,17277,2,2,'java.lang.Object[][]')
f(20,17279,2,2,'scala.collection.immutable.Vector2')
f(1,17281,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17281,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17281,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17281,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17281,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17281,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17281,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17281,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17281,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17281,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17281,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17281,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17281,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 1056px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(66);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,278,3,'all')
f(1,0,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,4,3,'thread_native_entry(Thread*)')
f(3,0,4,4,'Thread::call_run()')
f(4,0,3,4,'JavaThread::thread_main_inner()')
f(5,0,3,4,'CompileBroker::compiler_thread_loop()')
f(6,0,3,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,3,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,3,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,2,4,'Compile::Optimize()')
f(10,0,1,4,'ConnectionGraph::do_analysis(Compile*, PhaseIterGVN*)')
f(11,0,1,4,'ConnectionGraph::compute_escape()')
f(12,0,1,4,'ConnectionGraph::split_unique_types(GrowableArray<Node*>&, GrowableArray<ArrayCopyNode*>&)')
f(13,0,1,4,'ConnectionGraph::find_inst_mem(Node*, int, GrowableArray<PhiNode*>&)')
f(14,0,1,4,'ConnectionGraph::split_memory_phi(PhiNode*, int, GrowableArray<PhiNode*>&)')
f(15,0,1,4,'ConnectionGraph::find_inst_mem(Node*, int, GrowableArray<PhiNode*>&)')
f(10,1,1,4,'PhaseCCP::analyze()')
f(11,1,1,4,'PhiNode::Value(PhaseGVN*) const')
f(9,2,1,4,'ParseGenerator::generate(JVMState*)')
f(10,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,2,1,4,'Parse::do_all_blocks()')
f(12,2,1,4,'Parse::do_one_block()')
f(13,2,1,4,'Parse::do_call()')
f(14,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,2,1,4,'ParseGenerator::generate(JVMState*)')
f(16,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,2,1,4,'Parse::do_all_blocks()')
f(18,2,1,4,'Parse::do_one_block()')
f(19,2,1,4,'Parse::do_call()')
f(20,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,2,1,4,'ParseGenerator::generate(JVMState*)')
f(22,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,2,1,4,'Parse::do_all_blocks()')
f(24,2,1,4,'Parse::do_one_block()')
f(25,2,1,4,'Parse::do_call()')
f(26,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,2,1,4,'ParseGenerator::generate(JVMState*)')
f(28,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,2,1,4,'Parse::do_all_blocks()')
f(30,2,1,4,'Parse::do_one_block()')
f(31,2,1,4,'Parse::do_call()')
f(32,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(33,2,1,4,'ParseGenerator::generate(JVMState*)')
f(34,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(35,2,1,4,'Parse::do_all_blocks()')
f(36,2,1,4,'Parse::do_one_block()')
f(37,2,1,4,'Parse::do_call()')
f(38,2,1,4,'ParseGenerator::generate(JVMState*)')
f(39,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(40,2,1,4,'Parse::do_all_blocks()')
f(41,2,1,4,'Parse::do_one_block()')
f(42,2,1,4,'Parse::do_call()')
f(43,2,1,4,'ParseGenerator::generate(JVMState*)')
f(44,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(45,2,1,4,'Parse::do_all_blocks()')
f(46,2,1,4,'Parse::do_one_block()')
f(47,2,1,4,'Parse::do_call()')
f(48,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(49,2,1,4,'ParseGenerator::generate(JVMState*)')
f(50,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(51,2,1,4,'Parse::do_all_blocks()')
f(52,2,1,4,'Parse::do_one_block()')
f(53,2,1,4,'Parse::do_call()')
f(54,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(55,2,1,4,'ParseGenerator::generate(JVMState*)')
f(56,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(57,2,1,4,'Parse::do_all_blocks()')
f(58,2,1,4,'Parse::do_one_block()')
f(59,2,1,4,'Parse::do_call()')
f(60,2,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(61,2,1,4,'ParseGenerator::generate(JVMState*)')
f(62,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(63,2,1,4,'Parse::do_exits()')
f(64,2,1,4,'PhaseGVN::transform_no_reclaim(Node*)')
f(65,2,1,4,'PhiNode::Value(PhaseGVN*) const')
f(4,3,1,4,'VMThread::run()')
f(5,3,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,3,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,3,1,4,'VM_Operation::evaluate()')
f(8,3,1,4,'VM_G1CollectForAllocation::doit()')
f(9,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,3,1,4,'G1CollectedHeap::pre_evacuate_collection_set(G1EvacuationInfo&, G1ParScanThreadStateSet*)')
f(12,3,1,4,'G1RemSet::prepare_for_scan_heap_roots()')
f(1,4,3,3,'[unknown_Java]')
f(2,4,1,1,'cats/effect/IO$$$Lambda$112.0x0000000800dc62e0.apply')
f(2,5,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,6,1,6,'cats/effect/IO$Map.tag',0,1,0)
f(1,7,190,1,'cats/effect/unsafe/WorkerThread.run')
f(2,7,179,1,'cats/effect/IOFiber.run')
f(3,7,133,1,'cats/effect/IOFiber.autoCedeR',1,0,0)
f(4,8,132,1,'cats/effect/IOFiber.runLoop')
f(5,8,3,2,'cats/effect/ArrayStack.push',3,0,0)
f(5,11,26,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(6,11,26,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,11,22,1,'cats/Eval$Defer.value')
f(8,14,19,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,14,19,1,'cats/Eval$.loop$1')
f(10,17,16,2,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply',16,0,0)
f(11,18,15,2,'cats/data/Chain$.loop$4$$anonfun$1',15,0,0)
f(12,22,11,2,'cats/effect/IO$$anon$2.map2Eval',11,0,0)
f(13,22,11,2,'cats/effect/IO$$anon$2.map2Eval',11,0,0)
f(14,22,7,2,'cats/Eval$.now',7,0,0)
f(15,25,4,2,'cats/Now$.apply',4,0,0)
f(16,25,4,2,'cats/Now.<init>',4,0,0)
f(17,25,4,2,'cats/Eval$Leaf.<init>',4,0,0)
f(18,25,4,2,'cats/Eval.<init>',4,0,0)
f(19,25,4,2,'java/lang/Object.<init>',4,0,0)
f(14,29,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(15,29,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(7,33,4,1,'cats/Later.value')
f(8,36,1,2,'cats/data/Chain$$$Lambda$47.0x0000000800d8eff8.apply',1,0,0)
f(9,36,1,2,'cats/data/Chain$.$anonfun$1',1,0,0)
f(10,36,1,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',1,0,0)
f(11,36,1,2,'scala/collection/mutable/ArrayBuffer.apply',1,0,0)
f(5,37,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(5,39,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,43,67,1,'cats/effect/IOFiber.succeeded')
f(6,52,1,1,'cats/data/Chain$$$Lambda$56.0x0000000800d973d0.apply')
f(6,53,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,54,2,2,'cats/effect/ByteStack$.pop',2,0,0)
f(7,55,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,56,8,1,'cats/effect/IO$$$Lambda$112.0x0000000800dc62e0.apply')
f(7,62,2,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',2,0,0)
f(8,63,1,2,'cats/data/Chain$$$Lambda$54.0x0000000800d93820.apply',1,0,0)
f(9,63,1,2,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1',1,0,0)
f(10,63,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(6,64,9,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(7,64,9,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,64,9,1,'cats/Eval$FlatMap.value')
f(9,64,9,1,'cats/Eval$.cats$Eval$$$evaluate',1,0,0)
f(10,65,8,1,'cats/Eval$.loop$1')
f(11,67,1,2,'cats/Eval$$anon$2$$Lambda$57.0x0000000800d979c0.apply',1,0,0)
f(12,67,1,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',1,0,0)
f(11,68,5,2,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply',3,0,0)
f(12,68,5,2,'cats/data/Chain$.loop$4$$anonfun$1',5,0,0)
f(13,68,5,2,'cats/effect/IO$$anon$2.map2Eval',5,0,0)
f(14,69,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(15,69,1,2,'cats/Eval$.now',1,0,0)
f(16,69,1,2,'cats/Now$.apply',1,0,0)
f(17,69,1,2,'cats/Now.<init>',1,0,0)
f(18,69,1,2,'cats/Eval$Leaf.<init>',1,0,0)
f(19,69,1,2,'cats/Eval.<init>',1,0,0)
f(20,69,1,2,'java/lang/Object.<init>',1,0,0)
f(15,70,1,2,'cats/effect/IO.flatMap',1,0,0)
f(16,70,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(15,71,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(16,71,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(6,73,7,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,73,7,1,'cats/effect/IOFiber.done')
f(8,73,7,1,'cats/effect/CallbackStack.apply')
f(9,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(10,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(11,73,7,1,'cats/effect/IO$$Lambda$108.0x0000000800dc4000.applyVoid')
f(12,73,7,1,'cats/effect/IO.$anonfun$6')
f(13,73,7,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,73,7,1,'cats/effect/kernel/Outcome.fold$')
f(15,73,7,1,'cats/effect/kernel/Outcome.fold')
f(16,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(17,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(18,73,7,1,'cats/effect/IO$$Lambda$117.0x0000000800dc3b78.applyVoid')
f(19,73,7,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(21,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(22,73,7,1,'cats/effect/IO$$Lambda$107.0x0000000800dbd408.applyVoid')
f(23,73,7,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(25,73,7,1,'scala/runtime/function/JProcedure1.apply')
f(26,73,7,1,'cats/effect/IOPlatform$$Lambda$104.0x0000000800dbf560.applyVoid')
f(27,73,7,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,73,7,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,73,7,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,73,7,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,73,7,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,73,7,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,73,7,1,'jdk/internal/misc/Unsafe.unpark')
f(34,73,7,3,'pthread_cond_signal')
f(35,73,7,5,'entry_SYSCALL_64_after_hwframe')
f(36,73,7,5,'do_syscall_64')
f(37,73,7,5,'__x64_sys_futex')
f(38,73,7,5,'do_futex')
f(39,73,7,5,'futex_wake')
f(40,73,2,5,'mark_wake_futex')
f(40,75,5,5,'wake_up_q')
f(41,75,5,5,'_raw_spin_unlock_irqrestore')
f(6,80,13,1,'cats/instances/ListInstances$$anon$1$$Lambda$59.0x0000000800d96400.apply')
f(7,80,13,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,80,13,1,'cats/data/Chain.toList')
f(9,80,13,1,'cats/data/Chain$ChainIterator.toList')
f(10,80,13,1,'scala/collection/IterableOnceOps.toList$')
f(11,80,13,1,'scala/collection/IterableOnceOps.toList')
f(12,80,13,1,'scala/collection/immutable/List.prependedAll')
f(13,80,7,1,'cats/data/Chain$ChainIterator.next')
f(14,80,7,2,'cats/data/Chain$ChainIterator.go$3',7,0,0)
f(15,84,3,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',3,0,0)
f(13,87,2,2,'scala/collection/immutable/$colon$colon.<init>',2,0,0)
f(13,89,4,2,'scala/collection/immutable/NewVectorIterator.next',4,0,0)
f(14,91,2,2,'scala/collection/immutable/NewVectorIterator.advance',2,0,0)
f(6,93,5,3,'itable stub')
f(6,98,12,1,'kyo/bench/CollectAllBench$$Lambda$60.0x0000000800d9c000.apply')
f(7,99,11,2,'kyo/bench/CollectAllBench.catsBench$$anonfun$1',10,0,0)
f(8,99,11,2,'scala/collection/AbstractIterable.sum',10,0,0)
f(9,99,11,2,'scala/collection/IterableOnceOps.sum$',10,0,0)
f(10,99,11,2,'scala/collection/IterableOnceOps.sum',10,0,0)
f(11,99,11,2,'scala/collection/AbstractIterable.reduce',10,0,0)
f(12,99,11,2,'scala/collection/IterableOnceOps.reduce$',10,0,0)
f(13,99,11,2,'scala/collection/IterableOnceOps.reduce',10,0,0)
f(14,99,11,2,'scala/collection/AbstractIterable.reduceLeft',10,0,0)
f(15,99,11,2,'scala/collection/IterableOnceOps.reduceLeft$',10,0,0)
f(16,99,11,2,'scala/collection/IterableOnceOps.reduceLeft',10,0,0)
f(17,99,7,2,'scala/collection/IterableOnceOps$$Lambda$114.0x0000000800dc2a00.apply',6,0,0)
f(18,99,7,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',6,0,0)
f(19,99,7,2,'scala/math/Numeric$IntIsIntegral$.plus',6,0,0)
f(20,99,6,2,'scala/runtime/BoxesRunTime.boxToInteger',5,0,0)
f(21,102,3,2,'java/lang/Integer.valueOf',2,0,0)
f(22,104,1,1,'java/lang/Integer.<init>')
f(23,104,1,1,'java/lang/Number.<init>')
f(20,105,1,2,'scala/runtime/BoxesRunTime.unboxToInt',1,0,0)
f(17,106,4,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',4,0,0)
f(5,110,18,2,'kyo/bench/CollectAllBench$$Lambda$42.0x0000000800d264d0.apply',18,0,0)
f(5,128,12,3,'vtable stub')
f(3,140,46,1,'cats/effect/IOFiber.execR')
f(4,140,46,1,'cats/effect/IOFiber.runLoop')
f(5,141,4,2,'cats/effect/ArrayStack.push',4,0,0)
f(6,143,2,2,'cats/effect/ArrayStack.checkAndGrow',2,0,0)
f(5,145,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(5,146,12,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply',1,0,0)
f(6,146,12,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1',1,0,0)
f(7,146,6,1,'cats/Eval$Defer.value')
f(8,146,6,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,146,6,1,'cats/Eval$.loop$1')
f(10,149,3,2,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply',2,0,0)
f(11,149,3,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(12,150,2,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(13,150,2,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(14,150,1,2,'cats/Eval$.now',1,0,0)
f(14,151,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,151,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,151,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,151,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(18,151,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(19,151,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(7,152,5,1,'cats/Later.value')
f(8,155,1,2,'cats/data/Chain$$$Lambda$47.0x0000000800d8eff8.apply',1,0,0)
f(9,155,1,2,'cats/data/Chain$.$anonfun$1',1,0,0)
f(8,156,1,2,'scala/runtime/LazyVals$.CAS',1,0,0)
f(9,156,1,2,'sun/misc/Unsafe.compareAndSwapLong',1,0,0)
f(7,157,1,3,'vtable stub')
f(5,158,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(5,160,16,1,'cats/effect/IOFiber.succeeded')
f(6,162,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,163,2,2,'cats/effect/ByteStack$.pop',2,0,0)
f(7,163,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,165,2,1,'cats/effect/IO$$$Lambda$112.0x0000000800dc62e0.apply')
f(7,166,1,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',1,0,0)
f(6,167,7,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97000.apply')
f(7,167,7,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,167,7,1,'cats/Eval$FlatMap.value')
f(9,167,7,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,167,7,1,'cats/Eval$.loop$1')
f(11,168,5,1,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply',1,0,0)
f(12,171,2,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(13,171,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(14,171,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(15,171,1,2,'cats/Eval$.now',1,0,0)
f(16,171,1,2,'cats/Now$.apply',1,0,0)
f(17,171,1,2,'cats/Now.<init>',1,0,0)
f(18,171,1,2,'cats/Eval$Leaf.<init>',1,0,0)
f(19,171,1,2,'cats/Eval.<init>',1,0,0)
f(20,171,1,2,'java/lang/Object.<init>',1,0,0)
f(15,172,1,2,'cats/effect/IO.flatMap',1,0,0)
f(16,172,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(11,173,1,3,'itable stub')
f(6,174,2,3,'itable stub')
f(5,176,8,2,'kyo/bench/CollectAllBench$$Lambda$42.0x0000000800d264d0.apply',8,0,0)
f(5,184,2,3,'vtable stub')
f(2,186,1,2,'cats/effect/unsafe/LocalQueue.dequeue',1,0,0)
f(2,187,2,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,187,2,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(4,188,1,1,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem')
f(5,188,1,1,'java/lang/invoke/VarHandleGuards.guard_LLL_Z')
f(2,189,8,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,189,8,1,'java/util/concurrent/locks/LockSupport.park')
f(4,189,8,1,'jdk/internal/misc/Unsafe.park')
f(5,190,2,3,'Unsafe_Park')
f(6,191,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,191,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,191,1,5,'do_syscall_64')
f(9,191,1,5,'syscall_enter_from_user_mode')
f(5,192,5,3,'[unknown]')
f(6,192,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,193,3,5,'entry_SYSCALL_64_after_hwframe')
f(8,193,3,5,'do_syscall_64')
f(9,193,3,5,'__x64_sys_futex')
f(10,193,3,5,'do_futex')
f(11,193,3,5,'futex_wait')
f(12,193,3,5,'futex_wait_queue_me')
f(13,193,3,5,'schedule')
f(14,193,3,5,'__schedule')
f(15,193,3,5,'finish_task_switch.isra.0')
f(6,196,1,3,'pthread_cond_wait')
f(1,197,81,1,'java/lang/Thread.run')
f(2,197,81,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,197,81,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,197,81,1,'java/util/concurrent/FutureTask.run')
f(5,197,81,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,197,81,1,'java/util/concurrent/FutureTask.run')
f(7,197,81,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,197,81,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,197,81,1,'java/lang/reflect/Method.invoke')
f(10,197,81,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,197,81,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,197,81,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,197,81,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_Throughput')
f(14,197,81,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_thrpt_jmhStub',0,1,0)
f(15,197,81,1,'kyo/bench/Bench.syncCats',1,0,0)
f(16,198,12,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,198,12,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,198,7,1,'cats/effect/IO.unsafeRunAsync')
f(19,198,7,1,'cats/effect/IO.unsafeRunFiber')
f(20,198,7,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,198,7,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,198,7,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,198,7,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,198,7,1,'jdk/internal/misc/Unsafe.unpark')
f(25,198,7,3,'pthread_cond_signal')
f(26,198,7,5,'entry_SYSCALL_64_after_hwframe')
f(27,198,7,5,'do_syscall_64')
f(28,198,6,5,'__x64_sys_futex')
f(29,198,6,5,'do_futex')
f(30,198,6,5,'futex_wake')
f(31,198,6,5,'wake_up_q')
f(32,198,6,5,'_raw_spin_unlock_irqrestore')
f(28,204,1,5,'syscall_enter_from_user_mode')
f(18,205,5,1,'scala/concurrent/package$.blocking')
f(19,205,5,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,205,5,1,'cats/effect/IOPlatform$$Lambda$111.0x0000000800dc57e8.apply')
f(21,205,5,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,205,5,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,205,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,205,5,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,205,5,1,'jdk/internal/misc/Unsafe.park')
f(26,205,1,3,'Unsafe_Park')
f(27,205,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,205,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,205,1,5,'do_syscall_64')
f(30,205,1,5,'syscall_enter_from_user_mode')
f(26,206,4,3,'[unknown]')
f(27,206,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,207,3,5,'entry_SYSCALL_64_after_hwframe')
f(29,207,3,5,'do_syscall_64')
f(30,207,3,5,'__x64_sys_futex')
f(31,207,3,5,'do_futex')
f(32,207,3,5,'futex_wait')
f(33,208,2,5,'futex_wait_queue_me')
f(34,208,2,5,'schedule')
f(35,208,2,5,'__schedule')
f(36,208,2,5,'finish_task_switch.isra.0')
f(16,210,68,1,'kyo/bench/CollectAllBench.catsBench')
f(17,210,42,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(18,210,42,1,'cats/Traverse$Ops.sequence$')
f(19,210,42,1,'cats/Traverse$Ops.sequence')
f(20,210,42,1,'cats/instances/ListInstances$$anon$1.sequence')
f(21,210,42,1,'cats/Traverse.sequence$',8,0,0)
f(22,210,42,1,'cats/Traverse.sequence',8,0,0)
f(23,210,42,1,'cats/instances/ListInstances$$anon$1.traverse',8,0,0)
f(24,210,42,1,'cats/instances/ListInstances$$anon$1.traverse',8,0,0)
f(25,210,34,1,'cats/data/Chain$.traverseViaChain')
f(26,210,10,1,'cats/Eval$FlatMap.value')
f(27,210,10,1,'cats/Eval$.cats$Eval$$$evaluate')
f(28,210,10,1,'cats/Eval$.loop$1')
f(29,211,2,1,'cats/Eval$$anon$2$$Lambda$57.0x0000000800d979c0.apply')
f(30,212,1,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',1,0,0)
f(31,212,1,2,'cats/Eval$$anon$1$$Lambda$53.0x0000000800d93010.apply',1,0,0)
f(32,212,1,2,'cats/Eval$$anon$1.$init$$$anonfun$1',1,0,0)
f(33,212,1,2,'cats/Eval$$anon$2.<init>',1,0,0)
f(29,213,3,2,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.apply',3,0,0)
f(30,213,3,2,'cats/data/Chain$.loop$4$$anonfun$1',3,0,0)
f(31,214,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(32,214,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(33,214,1,2,'cats/Eval$.now',1,0,0)
f(34,214,1,2,'cats/Now$.apply',1,0,0)
f(35,214,1,2,'cats/Now.<init>',1,0,0)
f(36,214,1,2,'cats/Eval$Leaf.<init>',1,0,0)
f(37,214,1,2,'cats/Eval.<init>',1,0,0)
f(38,214,1,2,'java/lang/Object.<init>',1,0,0)
f(33,215,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(34,215,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(29,216,1,1,'cats/data/Chain$$$Lambda$52.0x0000000800d92a00.apply')
f(30,216,1,2,'cats/data/Chain$.loop$4$$anonfun$3',1,0,0)
f(31,216,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(32,216,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(33,216,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(29,217,3,3,'itable stub')
f(26,220,24,1,'cats/data/Chain$.loop$4')
f(27,220,2,2,'cats/Eval$.defer',2,0,0)
f(28,220,2,2,'cats/Eval$$anon$5.<init>',2,0,0)
f(29,220,2,2,'cats/Eval$Defer.<init>',2,0,0)
f(27,222,1,2,'cats/Eval$.later',1,0,0)
f(27,223,12,2,'cats/Eval.map',12,0,0)
f(28,223,9,2,'cats/Eval.flatMap',9,0,0)
f(29,231,1,2,'cats/Eval$$anon$3.<init>',1,0,0)
f(28,232,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(29,232,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(30,232,2,2,'cats/Eval$$Lambda$51.0x0000000800d92630.<init>',2,0,0)
f(30,234,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(27,235,7,1,'cats/data/Chain$.loop$4')
f(28,236,6,2,'cats/Eval.flatMap',6,0,0)
f(29,236,6,2,'cats/Eval$$anon$1.<init>',6,0,0)
f(27,242,1,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',1,0,0)
f(27,243,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(28,243,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d96000.newInvokeSpecial',1,0,0)
f(29,243,1,2,'cats/data/Chain$$$Lambda$49.0x0000000800d91fa0.<init>',1,0,0)
f(25,244,7,2,'scala/collection/mutable/ArrayBuffer$.apply',7,0,0)
f(26,244,7,2,'scala/collection/IterableFactory.apply$',7,0,0)
f(27,244,7,2,'scala/collection/IterableFactory.apply',7,0,0)
f(28,244,7,2,'scala/collection/mutable/ArrayBuffer$.from',7,0,0)
f(29,244,7,2,'scala/collection/mutable/ArrayBuffer$.from',7,0,0)
f(30,244,2,2,'scala/collection/immutable/ArraySeq.copyToArray',2,0,0)
f(31,244,2,2,'scala/collection/immutable/ArraySeq$ofRef.length',2,0,0)
f(30,246,4,2,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize',4,0,0)
f(31,246,4,2,'scala/collection/mutable/ArrayBuffer$.resizeUp',4,0,0)
f(30,250,1,2,'scala/collection/mutable/ArrayBuffer.<init>',1,0,0)
f(31,250,1,2,'scala/collection/mutable/AbstractBuffer.<init>',1,0,0)
f(32,250,1,2,'scala/collection/mutable/AbstractSeq.<init>',1,0,0)
f(25,251,1,2,'scala/runtime/ScalaRunTime$.genericWrapArray',1,0,0)
f(26,251,1,2,'scala/collection/immutable/ArraySeq$.unsafeWrapArray',1,0,0)
f(17,252,16,1,'scala/collection/AbstractIterable.toList')
f(18,252,16,1,'scala/collection/IterableOnceOps.toList$')
f(19,252,16,1,'scala/collection/IterableOnceOps.toList')
f(20,252,16,1,'scala/collection/immutable/List.prependedAll')
f(21,254,3,2,'cats/data/Chain$ChainIterator.hasNext',3,0,0)
f(22,254,3,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',3,0,0)
f(21,257,9,2,'scala/collection/immutable/$colon$colon.<init>',9,0,0)
f(22,264,2,2,'scala/runtime/Statics.releaseFence',2,0,0)
f(23,264,2,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d20000.invoke_MT',2,0,0)
f(21,266,2,2,'scala/collection/immutable/NewVectorIterator.next',1,0,0)
f(22,267,1,1,'scala/collection/immutable/NewVectorIterator.advance')
f(23,267,1,1,'scala/collection/immutable/NewVectorIterator.advanceSlice')
f(17,268,5,2,'scala/collection/immutable/Range.map',5,0,0)
f(17,273,5,2,'scala/runtime/RichInt$.until$extension',5,0,0)
f(18,273,5,2,'scala/collection/immutable/Range$Exclusive.<init>',5,0,0)
f(19,273,5,2,'scala/collection/immutable/Range.<init>',5,0,0)
f(20,275,3,2,'scala/collection/immutable/Range.longLength',3,0,0)
f(21,277,1,2,'scala/collection/immutable/Range.hasStub',1,0,0)
f(22,277,1,2,'scala/collection/immutable/Range.isExact',1,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,20354,3,'all')
f(1,0,18965,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18965,1,'cats/effect/IOFiber.run')
f(3,0,18326,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,18326,1,'cats/effect/IOFiber.runLoop')
f(5,0,1558,2,'cats.effect.IOFiber$$anon$1')
f(5,1558,1,1,'cats/effect/IODeferred$$Lambda$117.0x0000000800d802b0.apply')
f(6,1558,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,1558,1,1,'scala/util/Right$.apply')
f(8,1558,1,2,'scala.util.Right')
f(5,1559,6088,1,'cats/effect/IOFiber.succeeded')
f(6,1559,6088,1,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d77a70.apply')
f(7,1559,6088,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,1559,6088,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,1559,1795,1,'cats/effect/IO.flatMap')
f(10,1559,1795,1,'cats/effect/IO$FlatMap$.apply')
f(11,1559,1795,2,'cats.effect.IO$FlatMap')
f(9,3354,2635,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,3354,1606,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,3354,1606,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,3354,1606,1,'cats/effect/IO$.uncancelable')
f(13,3354,1606,1,'cats/effect/IO$Uncancelable$.apply')
f(14,3354,1606,2,'cats.effect.IO$Uncancelable')
f(10,4960,1029,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,4960,1029,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,4960,1029,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,4960,1029,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$101+0x0000000800d776a0')
f(9,5989,1658,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,5989,1658,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74000.newInvokeSpecial')
f(11,5989,1658,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,5989,1658,2,'kyo.bench.CountdownLatchBench$$Lambda$102+0x0000000800d77a70')
f(5,7647,4372,1,'cats/effect/kernel/SyncRef$$Lambda$108.0x0000000800d74d00.apply')
f(6,7647,4372,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,7647,4372,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,7647,4372,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$106.0x0000000800d78000.apply')
f(9,7647,4372,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1$$anonfun$1')
f(10,7647,870,1,'cats/effect/IO$$anon$2.unit')
f(11,7647,870,1,'cats/Applicative.unit$')
f(12,7647,870,1,'cats/Applicative.unit')
f(13,7647,870,1,'cats/effect/IO$$anon$2.pure')
f(14,7647,870,1,'cats/effect/IO$$anon$2.pure')
f(15,7647,870,1,'cats/effect/IO$.pure')
f(16,7647,870,1,'cats/effect/IO$Pure$.apply')
f(17,7647,870,2,'cats.effect.IO$Pure')
f(10,8517,2,1,'cats/effect/IODeferred.complete')
f(11,8517,2,1,'cats/effect/IODeferred.complete')
f(12,8517,1,1,'cats/effect/IO$.apply')
f(13,8517,1,1,'cats/effect/IO$.delay')
f(14,8517,1,1,'cats/effect/IO$Delay$.apply')
f(15,8517,1,2,'cats.effect.IO$Delay')
f(12,8518,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,8518,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,8518,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,8518,1,2,'cats.effect.IODeferred$$Lambda$117+0x0000000800d802b0')
f(10,8519,1686,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,8519,1686,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,10205,1814,1,'scala/Tuple2$.apply')
f(11,10205,1814,2,'scala.Tuple2')
f(5,12019,6307,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$101.0x0000000800d776a0.apply')
f(6,12019,6307,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(7,12019,3596,1,'cats/effect/kernel/SyncRef.modify')
f(8,12019,1946,1,'cats/effect/IO$$anon$2.delay')
f(9,12019,1946,1,'cats/effect/IO$$anon$2.delay')
f(10,12019,1946,1,'cats/effect/IO$.apply')
f(11,12019,1946,1,'cats/effect/IO$.delay')
f(12,12019,1946,1,'cats/effect/IO$Delay$.apply')
f(13,12019,1946,2,'cats.effect.IO$Delay')
f(8,13965,1650,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,13965,1650,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,13965,1650,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,13965,1650,2,'cats.effect.kernel.SyncRef$$Lambda$108+0x0000000800d74d00')
f(7,15615,1613,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,15615,1613,1,'cats/effect/IO$$anon$2.flatten')
f(9,15615,1613,1,'cats/FlatMap.flatten$')
f(10,15615,1613,1,'cats/FlatMap.flatten')
f(11,15615,1613,1,'cats/effect/IO$$anon$2.flatMap')
f(12,15615,1613,1,'cats/effect/IO$$anon$2.flatMap')
f(13,15615,1613,1,'cats/effect/IO.flatMap')
f(14,15615,1613,1,'cats/effect/IO$FlatMap$.apply')
f(15,15615,1613,2,'cats.effect.IO$FlatMap')
f(7,17228,1098,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,17228,1098,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,17228,1098,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,17228,1098,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$106+0x0000000800d78000')
f(3,18326,34,1,'cats/effect/IOFiber.cedeR')
f(4,18326,32,1,'cats/effect/IOFiber.runLoop')
f(5,18326,1,1,'cats/arrow/FunctionK$.id')
f(6,18326,1,2,'cats.arrow.FunctionK$$anon$4')
f(5,18327,1,1,'cats/effect/IO$$$Lambda$94.0x0000000800d72488.apply')
f(6,18327,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,18327,1,1,'cats/effect/IODeferred.<init>')
f(8,18327,1,1,'cats/effect/CallbackStack$.apply')
f(9,18327,1,2,'cats.effect.CallbackStack')
f(5,18328,21,1,'cats/effect/IODeferred$$anon$1$$Lambda$113.0x0000000800d7b068.apply')
f(6,18328,21,1,'cats/effect/IODeferred$$anon$1.apply$$anonfun$1$$anonfun$1')
f(7,18328,21,1,'cats/effect/IO$.apply')
f(8,18328,21,1,'cats/effect/IO$.delay')
f(9,18328,21,1,'cats/effect/IO$Delay$.apply')
f(10,18328,21,2,'cats.effect.IO$Delay')
f(5,18349,1,1,'cats/effect/IODeferred$$anon$1$$Lambda$114.0x0000000800d7b438.apply')
f(6,18349,1,1,'cats/effect/IODeferred$$anon$1.$anonfun$1')
f(7,18349,1,1,'cats/effect/IO$.apply')
f(8,18349,1,1,'cats/effect/IO$.delay')
f(9,18349,1,1,'cats/effect/IO$Delay$.apply')
f(10,18349,1,2,'cats.effect.IO$Delay')
f(5,18350,4,1,'cats/effect/IOFiber.<init>')
f(6,18350,1,1,'cats/effect/CallbackStack$.apply')
f(7,18350,1,2,'cats.effect.CallbackStack')
f(6,18351,1,1,'cats/effect/IO$.async')
f(7,18351,1,1,'cats/effect/IO$IOCont$.apply')
f(8,18351,1,2,'cats.effect.IO$IOCont')
f(6,18352,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,18352,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,18352,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,18352,1,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d59bf8')
f(9,18353,1,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5a1e8')
f(5,18354,3,1,'cats/effect/IOFiber.succeeded')
f(6,18354,2,1,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d75220.apply')
f(7,18354,2,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1$$anonfun$1')
f(8,18354,2,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.await')
f(9,18354,1,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(10,18354,1,1,'cats/FlatMap$Ops.flatMap$')
f(11,18354,1,1,'cats/FlatMap$Ops.flatMap')
f(12,18354,1,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18354,1,1,'cats/effect/IO$$anon$2.flatMap')
f(14,18354,1,1,'cats/effect/IO.flatMap')
f(15,18354,1,1,'cats/effect/IO$FlatMap$.apply')
f(16,18354,1,2,'cats.effect.IO$FlatMap')
f(9,18355,1,1,'cats/effect/kernel/SyncRef.get')
f(10,18355,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18355,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18355,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18355,1,2,'cats.effect.kernel.SyncRef$$Lambda$104+0x0000000800d75860')
f(6,18356,1,1,'kyo/bench/CountdownLatchBench$$Lambda$98.0x0000000800d76000.apply')
f(7,18356,1,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1')
f(8,18356,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18356,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18356,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18356,1,2,'kyo.bench.CountdownLatchBench$$Lambda$103+0x0000000800d75220')
f(5,18357,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$105.0x0000000800d75b20.apply')
f(6,18357,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.await$$anonfun$1')
f(7,18357,1,1,'cats/effect/IODeferred.get')
f(8,18357,1,1,'cats/effect/IODeferred.get')
f(9,18357,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,18357,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,18357,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18357,1,2,'cats.effect.IODeferred$$Lambda$109+0x0000000800d789a0')
f(4,18358,2,1,'cats/effect/IOFiber.succeeded')
f(5,18358,2,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8d788.apply')
f(6,18358,2,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,18358,2,1,'kyo/bench/CountdownLatchBench.catsBench')
f(8,18358,2,1,'cats/effect/std/CountDownLatch$.apply')
f(9,18358,1,1,'cats/effect/std/CountDownLatch$State$.initial')
f(10,18358,1,1,'cats/effect/IO$$anon$2.deferred')
f(11,18358,1,1,'cats/effect/IO$$anon$2.deferred')
f(12,18358,1,1,'cats/effect/IO$.deferred')
f(13,18358,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,18358,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,18358,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,18358,1,2,'cats.effect.IO$$$Lambda$94+0x0000000800d72488')
f(9,18359,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,18359,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,18359,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18359,1,2,'cats.effect.std.CountDownLatch$$$Lambda$97+0x0000000800d73a08')
f(3,18360,605,1,'cats/effect/IOFiber.execR')
f(4,18360,1,1,'cats/effect/ArrayStack.init')
f(5,18360,1,2,'java.lang.Object[]')
f(4,18361,263,1,'cats/effect/ByteStack$.create')
f(5,18361,263,2,'int[]')
f(4,18624,341,1,'cats/effect/IOFiber.runLoop')
f(5,18624,45,2,'cats.effect.IOFiber$$anon$1')
f(5,18669,100,1,'cats/effect/IOFiber.succeeded')
f(6,18669,100,1,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d77a70.apply')
f(7,18669,100,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,18669,100,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,18669,26,1,'cats/effect/IO.flatMap')
f(10,18669,26,1,'cats/effect/IO$FlatMap$.apply')
f(11,18669,26,2,'cats.effect.IO$FlatMap')
f(9,18695,55,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,18695,33,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,18695,33,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,18695,33,1,'cats/effect/IO$.uncancelable')
f(13,18695,33,1,'cats/effect/IO$Uncancelable$.apply')
f(14,18695,33,2,'cats.effect.IO$Uncancelable')
f(10,18728,22,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18728,22,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18728,22,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18728,22,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$101+0x0000000800d776a0')
f(9,18750,19,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,18750,19,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74000.newInvokeSpecial')
f(11,18750,19,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18750,19,2,'kyo.bench.CountdownLatchBench$$Lambda$102+0x0000000800d77a70')
f(5,18769,88,1,'cats/effect/kernel/SyncRef$$Lambda$108.0x0000000800d74d00.apply')
f(6,18769,88,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,18769,88,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,18769,88,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$106.0x0000000800d78000.apply')
f(9,18769,88,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1$$anonfun$1')
f(10,18769,25,1,'cats/effect/IO$$anon$2.unit')
f(11,18769,25,1,'cats/Applicative.unit$')
f(12,18769,25,1,'cats/Applicative.unit')
f(13,18769,25,1,'cats/effect/IO$$anon$2.pure')
f(14,18769,25,1,'cats/effect/IO$$anon$2.pure')
f(15,18769,25,1,'cats/effect/IO$.pure')
f(16,18769,25,1,'cats/effect/IO$Pure$.apply')
f(17,18769,25,2,'cats.effect.IO$Pure')
f(10,18794,36,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,18794,36,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,18830,27,1,'scala/Tuple2$.apply')
f(11,18830,27,2,'scala.Tuple2')
f(5,18857,108,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$101.0x0000000800d776a0.apply')
f(6,18857,108,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(7,18857,57,1,'cats/effect/kernel/SyncRef.modify')
f(8,18857,31,1,'cats/effect/IO$$anon$2.delay')
f(9,18857,31,1,'cats/effect/IO$$anon$2.delay')
f(10,18857,31,1,'cats/effect/IO$.apply')
f(11,18857,31,1,'cats/effect/IO$.delay')
f(12,18857,31,1,'cats/effect/IO$Delay$.apply')
f(13,18857,31,2,'cats.effect.IO$Delay')
f(8,18888,26,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18888,26,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18888,26,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18888,26,2,'cats.effect.kernel.SyncRef$$Lambda$108+0x0000000800d74d00')
f(7,18914,30,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18914,30,1,'cats/effect/IO$$anon$2.flatten')
f(9,18914,30,1,'cats/FlatMap.flatten$')
f(10,18914,30,1,'cats/FlatMap.flatten')
f(11,18914,30,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18914,30,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18914,30,1,'cats/effect/IO.flatMap')
f(14,18914,30,1,'cats/effect/IO$FlatMap$.apply')
f(15,18914,30,2,'cats.effect.IO$FlatMap')
f(7,18944,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,18944,21,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,18944,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18944,21,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$106+0x0000000800d78000')
f(1,18965,1386,1,'java/lang/Thread.run')
f(2,18965,1386,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18965,1386,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18965,1386,1,'java/util/concurrent/FutureTask.run')
f(5,18965,1386,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18965,1386,1,'java/util/concurrent/FutureTask.run')
f(7,18965,1386,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18965,1386,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18965,1386,1,'java/lang/reflect/Method.invoke')
f(10,18965,1386,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18965,1386,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18965,1386,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18965,1386,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_Throughput')
f(14,18965,1385,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,18965,1385,1,'kyo/bench/Bench.forkCats')
f(16,18965,63,1,'cats/effect/IO.flatMap')
f(17,18965,63,1,'cats/effect/IO$FlatMap$.apply')
f(18,18965,63,2,'cats.effect.IO$FlatMap')
f(16,19028,1236,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,19028,1178,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,19028,741,1,'cats/effect/IO.unsafeRunAsync')
f(19,19028,616,1,'cats/effect/IO.unsafeRunFiber')
f(20,19028,105,2,'cats.effect.IOFiber')
f(20,19133,11,5,'cats.effect.IOFiber')
f(20,19144,351,1,'cats/effect/IOFiber.<init>')
f(21,19144,124,1,'cats/effect/ArrayStack$.apply')
f(22,19144,124,2,'cats.effect.ArrayStack')
f(21,19268,1,1,'cats/effect/CallbackStack$.apply')
f(22,19268,1,2,'cats.effect.CallbackStack')
f(21,19269,121,1,'cats/effect/IO$.async')
f(22,19269,70,2,'cats.effect.IO$$anon$3')
f(22,19339,51,1,'cats/effect/IO$IOCont$.apply')
f(23,19339,51,2,'cats.effect.IO$IOCont')
f(21,19390,100,1,'cats/effect/IO$.uncancelable')
f(22,19390,100,1,'cats/effect/IO$Uncancelable$.apply')
f(23,19390,100,2,'cats.effect.IO$Uncancelable')
f(21,19490,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,19490,5,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,19490,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,19490,5,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d59bf8')
f(20,19495,71,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,19495,71,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,19495,71,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,19495,71,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,19495,71,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,19566,78,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,19566,78,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,19566,78,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,19566,78,2,'cats.effect.IO$$Lambda$90+0x0000000800d58dc0')
f(19,19644,125,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,19644,125,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,19644,125,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,19644,11,2,'cats.effect.IO$$Lambda$87+0x0000000800d55b68')
f(22,19655,45,2,'cats.effect.IO$$Lambda$88+0x0000000800d54800')
f(22,19700,69,2,'cats.effect.IO$$Lambda$89+0x0000000800d58000')
f(18,19769,72,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,19841,70,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,19841,70,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,19841,70,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,19841,70,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55760')
f(18,19911,249,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,19911,249,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,19911,49,2,'java.lang.Object[]')
f(20,19960,82,2,'java.util.concurrent.locks.ReentrantLock')
f(20,20042,54,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,20042,54,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,20096,64,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,20096,64,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,20096,64,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,20160,12,1,'scala/concurrent/package$.blocking')
f(19,20160,12,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,20160,12,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5abc8.apply')
f(21,20160,12,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,20160,12,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,20160,12,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,20160,12,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,20172,34,1,'scala/util/Either.fold')
f(19,20172,34,1,'cats/effect/IOPlatform$$Lambda$123.0x0000000800d822c0.apply')
f(20,20172,34,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,20172,34,1,'scala/Some$.apply')
f(22,20172,34,2,'scala.Some')
f(17,20206,58,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,20206,58,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,20206,58,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,20206,58,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,20206,58,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,20206,58,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,20206,58,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,20206,58,2,'scala.concurrent.duration.FiniteDuration')
f(16,20264,86,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,20264,86,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,20264,86,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,20264,86,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8d788')
f(14,20350,1,2,'org.openjdk.jmh.results.BenchmarkTaskResult')
f(1,20351,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,20351,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,20351,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,20351,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,20351,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,20351,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,20351,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,20351,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,20351,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,20351,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,20351,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,20351,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,20351,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 592px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(37);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,292,3,'all')
f(1,0,4,3,'[unknown_Java]')
f(2,0,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(1,4,286,1,'cats/effect/unsafe/WorkerThread.run')
f(2,4,284,1,'cats/effect/IOFiber.run')
f(3,4,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,4,1,1,'cats/effect/IOFiber.succeeded')
f(5,4,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,4,1,1,'cats/effect/IOFiber.done')
f(7,4,1,1,'cats/effect/CallbackStack.apply')
f(8,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,4,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d58dc0.applyVoid')
f(11,4,1,1,'cats/effect/IO.$anonfun$6')
f(12,4,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,4,1,1,'cats/effect/kernel/Outcome.fold$')
f(14,4,1,1,'cats/effect/kernel/Outcome.fold')
f(15,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(16,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,4,1,1,'cats/effect/IO$$Lambda$121.0x0000000800d81818.applyVoid')
f(18,4,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(20,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,4,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(22,4,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(24,4,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,4,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55760.applyVoid')
f(26,4,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,4,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,4,1,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(29,4,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(30,4,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(31,4,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(32,4,1,1,'jdk/internal/misc/Unsafe.unpark')
f(33,4,1,3,'Unsafe_Unpark')
f(3,5,274,1,'cats/effect/IOFiber.autoCedeR')
f(4,5,274,1,'cats/effect/IOFiber.runLoop')
f(5,49,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(5,51,14,2,'cats/effect/IO$.apply',14,0,0)
f(6,51,14,2,'cats/effect/IO$.delay',14,0,0)
f(7,58,7,2,'cats/effect/IO$Delay$.apply',7,0,0)
f(5,65,5,6,'cats/effect/IO$Delay.tag',0,5,0)
f(5,70,15,6,'cats/effect/IO$FlatMap.tag',0,15,0)
f(5,85,4,6,'cats/effect/IO$Pure.tag',0,4,0)
f(5,89,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(5,90,1,1,'cats/effect/IODeferred$$Lambda$117.0x0000000800d802b0.apply')
f(6,90,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,90,1,1,'cats/effect/CallbackStack.apply')
f(8,90,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,90,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,90,1,1,'cats/effect/IOFiber$$Lambda$111.0x0000000800d79670.applyVoid')
f(11,90,1,1,'cats/effect/IOFiber.$anonfun$2')
f(12,90,1,1,'cats/effect/IOFiber.stateLoop$1')
f(13,90,1,1,'cats/effect/IOFiber.loop$1')
f(14,90,1,1,'cats/effect/IOFiber.scheduleFiber')
f(15,90,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,90,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,90,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,90,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,90,1,1,'jdk/internal/misc/Unsafe.unpark')
f(20,90,1,3,'pthread_cond_signal')
f(21,90,1,5,'entry_SYSCALL_64_after_hwframe')
f(22,90,1,5,'do_syscall_64')
f(23,90,1,5,'__x64_sys_futex')
f(24,90,1,5,'do_futex')
f(25,90,1,5,'futex_wake')
f(26,90,1,5,'wake_up_q')
f(27,90,1,5,'_raw_spin_unlock_irqrestore')
f(5,91,65,2,'cats/effect/IOFiber.rescheduleFiber',65,0,0)
f(6,93,63,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',63,0,0)
f(7,100,56,2,'cats/effect/unsafe/WorkerThread.reschedule',56,0,0)
f(8,140,16,2,'cats/effect/unsafe/LocalQueue.isEmpty',16,0,0)
f(9,143,13,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',13,0,0)
f(10,151,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',5,0,0)
f(5,156,65,1,'cats/effect/IOFiber.succeeded')
f(6,194,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,195,9,2,'cats/effect/ByteStack$.pop',9,0,0)
f(7,198,6,2,'cats/effect/ByteStack$.peek',6,0,0)
f(6,204,17,2,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d77a70.apply',17,0,0)
f(7,204,17,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',17,0,0)
f(8,204,17,2,'kyo/bench/CountdownLatchBench.iterate$1',17,0,0)
f(9,205,5,2,'cats/effect/IO.flatMap',5,0,0)
f(10,205,5,2,'cats/effect/IO$FlatMap$.apply',5,0,0)
f(9,210,5,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release',5,0,0)
f(10,213,2,2,'cats/effect/IO$$anon$2.uncancelable',2,0,0)
f(11,213,2,2,'cats/effect/IO$$anon$2.uncancelable',2,0,0)
f(12,213,2,2,'cats/effect/IO$.uncancelable',2,0,0)
f(13,213,2,2,'cats/effect/IO$Uncancelable$.apply',2,0,0)
f(9,215,6,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',6,0,0)
f(10,215,6,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74000.newInvokeSpecial',6,0,0)
f(11,215,5,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',5,0,0)
f(11,220,1,2,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d77a70.<init>',1,0,0)
f(5,221,10,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$101.0x0000000800d776a0.apply',10,0,0)
f(6,221,10,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1',10,0,0)
f(7,222,9,2,'cats/effect/kernel/SyncRef.modify',9,0,0)
f(8,223,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(9,224,2,2,'cats/effect/IO$$anon$2.delay',2,0,0)
f(10,224,2,2,'cats/effect/IO$.apply',2,0,0)
f(11,225,1,2,'cats/effect/IO$.delay',1,0,0)
f(12,225,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(8,226,5,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',5,0,0)
f(9,226,5,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',5,0,0)
f(10,228,3,2,'cats/effect/kernel/SyncRef$$Lambda$108.0x0000000800d78798.<init>',3,0,0)
f(5,231,29,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',29,0,0)
f(6,255,5,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',5,0,0)
f(7,255,5,2,'cats/effect/IOFiber$$Lambda$111.0x0000000800d79670.<init>',5,0,0)
f(8,255,5,2,'java/lang/Object.<init>',5,0,0)
f(5,260,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(5,261,18,3,'vtable stub')
f(3,279,2,1,'cats/effect/IOFiber.cedeR')
f(4,279,2,1,'cats/effect/IOFiber.runLoop')
f(5,279,1,1,'cats/effect/IOFiber.scheduleFiber')
f(6,279,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,279,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,279,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,279,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,279,1,1,'jdk/internal/misc/Unsafe.unpark')
f(11,279,1,3,'pthread_cond_signal')
f(12,279,1,5,'entry_SYSCALL_64_after_hwframe')
f(13,279,1,5,'do_syscall_64')
f(14,279,1,5,'__x64_sys_futex')
f(15,279,1,5,'do_futex')
f(16,279,1,5,'futex_wake')
f(17,279,1,5,'wake_up_q')
f(18,279,1,5,'_raw_spin_unlock_irqrestore')
f(5,280,1,1,'cats/effect/IOFiber.succeeded')
f(3,281,7,1,'cats/effect/IOFiber.execR')
f(4,281,7,1,'cats/effect/IOFiber.runLoop')
f(5,282,1,2,'cats/effect/IO$.apply',1,0,0)
f(6,282,1,2,'cats/effect/IO$.delay',1,0,0)
f(5,283,2,2,'cats/effect/IOFiber.rescheduleFiber',2,0,0)
f(6,283,2,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',2,0,0)
f(7,284,1,2,'cats/effect/unsafe/WorkerThread.reschedule',1,0,0)
f(8,284,1,2,'cats/effect/unsafe/LocalQueue.isEmpty',1,0,0)
f(9,284,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(5,285,3,1,'cats/effect/IOFiber.succeeded')
f(6,287,1,2,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d77a70.apply',1,0,0)
f(7,287,1,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',1,0,0)
f(8,287,1,2,'kyo/bench/CountdownLatchBench.iterate$1',1,0,0)
f(9,287,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,287,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(2,288,2,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,288,2,1,'java/util/concurrent/locks/LockSupport.park')
f(4,288,2,1,'jdk/internal/misc/Unsafe.park')
f(5,288,2,3,'[unknown]')
f(6,288,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,288,2,5,'entry_SYSCALL_64_after_hwframe')
f(8,288,2,5,'do_syscall_64')
f(9,288,1,5,'__x64_sys_futex')
f(10,288,1,5,'do_futex')
f(11,288,1,5,'futex_wait')
f(12,288,1,5,'futex_wait_queue_me')
f(13,288,1,5,'schedule')
f(14,288,1,5,'__schedule')
f(15,288,1,5,'finish_task_switch.isra.0')
f(9,289,1,5,'syscall_exit_to_user_mode')
f(10,289,1,5,'exit_to_user_mode_prepare')
f(11,289,1,5,'exit_to_user_mode_loop')
f(12,289,1,5,'__rseq_handle_notify_resume')
f(13,289,1,5,'rseq_ip_fixup')
f(14,289,1,5,'rseq_get_rseq_cs.isra.0')
f(1,290,2,1,'java/lang/Thread.run')
f(2,290,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,290,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,290,2,1,'java/util/concurrent/FutureTask.run')
f(5,290,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,290,2,1,'java/util/concurrent/FutureTask.run')
f(7,290,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,290,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,290,2,1,'java/lang/reflect/Method.invoke')
f(10,290,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,290,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,290,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,290,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_Throughput')
f(14,290,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,290,2,1,'kyo/bench/Bench.forkCats')
f(16,290,2,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,290,2,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,290,2,1,'scala/concurrent/package$.blocking')
f(19,290,2,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,290,2,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5abc8.apply')
f(21,290,2,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,290,2,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,290,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,290,1,2,'java/lang/Thread.interrupted',1,0,0)
f(24,291,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,291,1,1,'jdk/internal/misc/Unsafe.park')
f(26,291,1,3,'[unknown]')
f(27,291,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,291,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,291,1,5,'do_syscall_64')
f(30,291,1,5,'__x64_sys_futex')
f(31,291,1,5,'do_futex')
f(32,291,1,5,'futex_wait')
f(33,291,1,5,'futex_wait_queue_me')
f(34,291,1,5,'schedule')
f(35,291,1,5,'__schedule')
f(36,291,1,5,'finish_task_switch.isra.0')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 416px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(26);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,20979,3,'all')
f(1,0,19184,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,19184,1,'cats/effect/IOFiber.run')
f(3,0,18530,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,18530,1,'cats/effect/IOFiber.runLoop')
f(5,0,1626,2,'cats.effect.IOFiber$$anon$1')
f(5,1626,6275,1,'cats/effect/IOFiber.succeeded')
f(6,1626,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,1626,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,1626,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,1627,6274,1,'kyo/bench/CountdownLatchBench$$Lambda$101.0x0000000800d72f30.apply')
f(7,1627,6274,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,1627,6274,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,1627,1810,1,'cats/effect/IO.flatMap')
f(10,1627,1810,1,'cats/effect/IO$FlatMap$.apply')
f(11,1627,1810,2,'cats.effect.IO$FlatMap')
f(9,3437,2650,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,3437,1639,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,3437,1639,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,3437,1639,1,'cats/effect/IO$.uncancelable')
f(13,3437,1639,1,'cats/effect/IO$Uncancelable$.apply')
f(14,3437,1639,2,'cats.effect.IO$Uncancelable')
f(10,5076,1011,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,5076,1011,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,5076,1011,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,5076,1011,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$100+0x0000000800d72b60')
f(9,6087,1814,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,6087,1814,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial')
f(11,6087,1814,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,6087,1814,2,'kyo.bench.CountdownLatchBench$$Lambda$101+0x0000000800d72f30')
f(5,7901,4405,1,'cats/effect/kernel/SyncRef$$Lambda$107.0x0000000800d71d00.apply')
f(6,7901,4405,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,7901,4405,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,7901,4405,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$105.0x0000000800d78000.apply')
f(9,7901,4405,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1$$anonfun$1')
f(10,7901,921,1,'cats/effect/IO$$anon$2.unit')
f(11,7901,921,1,'cats/Applicative.unit$')
f(12,7901,921,1,'cats/Applicative.unit')
f(13,7901,921,1,'cats/effect/IO$$anon$2.pure')
f(14,7901,921,1,'cats/effect/IO$$anon$2.pure')
f(15,7901,921,1,'cats/effect/IO$.pure')
f(16,7901,921,1,'cats/effect/IO$Pure$.apply')
f(17,7901,921,2,'cats.effect.IO$Pure')
f(10,8822,1639,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,8822,1639,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,10461,1845,1,'scala/Tuple2$.apply')
f(11,10461,1845,2,'scala.Tuple2')
f(5,12306,6224,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$100.0x0000000800d72b60.apply')
f(6,12306,6224,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(7,12306,3720,1,'cats/effect/kernel/SyncRef.modify')
f(8,12306,2102,1,'cats/effect/IO$$anon$2.delay')
f(9,12306,2102,1,'cats/effect/IO$$anon$2.delay')
f(10,12306,2102,1,'cats/effect/IO$.apply')
f(11,12306,2102,1,'cats/effect/IO$.delay')
f(12,12306,2102,1,'cats/effect/IO$Delay$.apply')
f(13,12306,2102,2,'cats.effect.IO$Delay')
f(8,14408,1618,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,14408,1618,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,14408,1618,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,14408,1618,2,'cats.effect.kernel.SyncRef$$Lambda$107+0x0000000800d71d00')
f(7,16026,1470,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,16026,1470,1,'cats/effect/IO$$anon$2.flatten')
f(9,16026,1470,1,'cats/FlatMap.flatten$')
f(10,16026,1470,1,'cats/FlatMap.flatten')
f(11,16026,1470,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16026,1470,1,'cats/effect/IO$$anon$2.flatMap')
f(13,16026,1470,1,'cats/effect/IO.flatMap')
f(14,16026,1470,1,'cats/effect/IO$FlatMap$.apply')
f(15,16026,1470,2,'cats.effect.IO$FlatMap')
f(7,17496,1034,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,17496,1034,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,17496,1034,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,17496,1034,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$105+0x0000000800d78000')
f(3,18530,654,1,'cats/effect/IOFiber.execR')
f(4,18530,4,1,'cats/effect/ArrayStack.init')
f(5,18530,4,2,'java.lang.Object[]')
f(4,18534,263,1,'cats/effect/ByteStack$.create')
f(5,18534,263,2,'int[]')
f(4,18797,387,1,'cats/effect/IOFiber.runLoop')
f(5,18797,24,2,'cats.effect.IOFiber$$anon$1')
f(5,18821,2,1,'cats/effect/IO$$$Lambda$39.0x0000000800ca1488.apply')
f(6,18821,2,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,18821,1,2,'cats.effect.IODeferred')
f(7,18822,1,1,'cats/effect/IODeferred.<init>')
f(8,18822,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(5,18823,1,1,'cats/effect/IO$$$Lambda$98.0x0000000800d72000.apply')
f(6,18823,1,1,'cats/effect/IO$.ref$$anonfun$1')
f(7,18823,1,1,'cats/effect/kernel/Ref$.unsafe')
f(8,18823,1,2,'cats.effect.kernel.SyncRef')
f(5,18824,1,1,'cats/effect/IODeferred$$Lambda$108.0x0000000800d78798.apply')
f(6,18824,1,1,'cats/effect/IODeferred.get$$anonfun$1')
f(7,18824,1,2,'cats.effect.IODeferred$$anon$1')
f(5,18825,2,1,'cats/effect/IODeferred$$anon$1$$Lambda$113.0x0000000800d7b438.apply')
f(6,18825,2,1,'cats/effect/IODeferred$$anon$1.$anonfun$1')
f(7,18825,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,18825,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,18825,1,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,18825,1,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(7,18826,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d400.linkToTargetMethod')
f(8,18826,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7cc00.newInvokeSpecial')
f(9,18826,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18826,1,2,'cats.effect.IODeferred$$anon$1$$Lambda$114+0x0000000800d7f960')
f(5,18827,134,1,'cats/effect/IOFiber.succeeded')
f(6,18827,1,1,'cats/effect/std/CountDownLatch$$$Lambda$42.0x0000000800ca2a08.apply')
f(7,18827,1,1,'cats/effect/std/CountDownLatch$.apply$$anonfun$1')
f(8,18827,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18827,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18827,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18827,1,2,'cats.effect.std.CountDownLatch$$$Lambda$99+0x0000000800d722c0')
f(6,18828,130,1,'kyo/bench/CountdownLatchBench$$Lambda$101.0x0000000800d72f30.apply')
f(7,18828,130,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,18828,130,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,18828,47,1,'cats/effect/IO.flatMap')
f(10,18828,47,1,'cats/effect/IO$FlatMap$.apply')
f(11,18828,47,2,'cats.effect.IO$FlatMap')
f(9,18875,45,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,18875,28,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,18875,28,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,18875,28,1,'cats/effect/IO$.uncancelable')
f(13,18875,28,1,'cats/effect/IO$Uncancelable$.apply')
f(14,18875,28,2,'cats.effect.IO$Uncancelable')
f(10,18903,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18903,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18903,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18903,17,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$100+0x0000000800d72b60')
f(9,18920,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,18920,38,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial')
f(11,18920,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18920,38,2,'kyo.bench.CountdownLatchBench$$Lambda$101+0x0000000800d72f30')
f(6,18958,2,1,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d73520.apply')
f(7,18958,2,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1$$anonfun$1')
f(8,18958,2,1,'cats/effect/IO.map')
f(9,18958,2,1,'cats/effect/IO$Map$.apply')
f(10,18958,2,2,'cats.effect.IO$Map')
f(6,18960,1,1,'kyo/bench/CountdownLatchBench$$Lambda$43.0x0000000800ca2ff8.apply')
f(7,18960,1,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1')
f(8,18960,1,1,'cats/effect/IO.flatMap')
f(9,18960,1,1,'cats/effect/IO$FlatMap$.apply')
f(10,18960,1,2,'cats.effect.IO$FlatMap')
f(5,18961,80,1,'cats/effect/kernel/SyncRef$$Lambda$107.0x0000000800d71d00.apply')
f(6,18961,80,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,18961,80,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,18961,80,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$105.0x0000000800d78000.apply')
f(9,18961,80,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1$$anonfun$1')
f(10,18961,11,1,'cats/effect/IO$$anon$2.unit')
f(11,18961,11,1,'cats/Applicative.unit$')
f(12,18961,11,1,'cats/Applicative.unit')
f(13,18961,11,1,'cats/effect/IO$$anon$2.pure')
f(14,18961,11,1,'cats/effect/IO$$anon$2.pure')
f(15,18961,11,1,'cats/effect/IO$.pure')
f(16,18961,11,1,'cats/effect/IO$Pure$.apply')
f(17,18961,11,2,'cats.effect.IO$Pure')
f(10,18972,38,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,18972,38,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,19010,31,1,'scala/Tuple2$.apply')
f(11,19010,31,2,'scala.Tuple2')
f(5,19041,126,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$100.0x0000000800d72b60.apply')
f(6,19041,126,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(7,19041,76,1,'cats/effect/kernel/SyncRef.modify')
f(8,19041,42,1,'cats/effect/IO$$anon$2.delay')
f(9,19041,42,1,'cats/effect/IO$$anon$2.delay')
f(10,19041,42,1,'cats/effect/IO$.apply')
f(11,19041,42,1,'cats/effect/IO$.delay')
f(12,19041,42,1,'cats/effect/IO$Delay$.apply')
f(13,19041,42,2,'cats.effect.IO$Delay')
f(8,19083,34,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,19083,34,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,19083,34,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,19083,34,2,'cats.effect.kernel.SyncRef$$Lambda$107+0x0000000800d71d00')
f(7,19117,35,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,19117,35,1,'cats/effect/IO$$anon$2.flatten')
f(9,19117,35,1,'cats/FlatMap.flatten$')
f(10,19117,35,1,'cats/FlatMap.flatten')
f(11,19117,35,1,'cats/effect/IO$$anon$2.flatMap')
f(12,19117,35,1,'cats/effect/IO$$anon$2.flatMap')
f(13,19117,35,1,'cats/effect/IO.flatMap')
f(14,19117,35,1,'cats/effect/IO$FlatMap$.apply')
f(15,19117,35,2,'cats.effect.IO$FlatMap')
f(7,19152,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,19152,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,19152,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,19152,15,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$105+0x0000000800d78000')
f(5,19167,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$104.0x0000000800d71400.apply')
f(6,19167,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.await$$anonfun$1')
f(7,19167,1,1,'cats/effect/IODeferred.get')
f(8,19167,1,1,'cats/effect/IODeferred.get')
f(9,19167,1,1,'cats/effect/IO$.defer')
f(10,19167,1,1,'cats/effect/IO$.delay')
f(11,19167,1,1,'cats/effect/IO$Delay$.apply')
f(12,19167,1,2,'cats.effect.IO$Delay')
f(5,19168,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,19168,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,19168,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,19168,16,2,'cats.effect.IOFiber$$Lambda$115+0x0000000800d7da20')
f(1,19184,1792,1,'java/lang/Thread.run')
f(2,19184,1792,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,19184,1792,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,19184,1792,1,'java/util/concurrent/FutureTask.run')
f(5,19184,1792,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,19184,1792,1,'java/util/concurrent/FutureTask.run')
f(7,19184,1792,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,19184,1792,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,19184,1792,1,'java/lang/reflect/Method.invoke')
f(10,19184,1792,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,19184,1792,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,19184,1792,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,19184,1792,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_Throughput')
f(14,19184,1791,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,19184,1791,1,'kyo/bench/Bench.syncCats')
f(16,19184,1346,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,19184,1336,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,19184,757,1,'cats/effect/IO.unsafeRunAsync')
f(19,19184,689,1,'cats/effect/IO.unsafeRunFiber')
f(20,19184,125,5,'cats.effect.IOFiber')
f(20,19309,518,1,'cats/effect/IOFiber.<init>')
f(21,19309,377,1,'cats/effect/ArrayStack$.apply')
f(22,19309,377,2,'cats.effect.ArrayStack')
f(21,19686,45,1,'cats/effect/IO$.async')
f(22,19686,24,2,'cats.effect.IO$$anon$3')
f(22,19710,21,1,'cats/effect/IO$IOCont$.apply')
f(23,19710,21,2,'cats.effect.IO$IOCont')
f(21,19731,19,1,'cats/effect/IO$.uncancelable')
f(22,19731,19,1,'cats/effect/IO$Uncancelable$.apply')
f(23,19731,19,2,'cats.effect.IO$Uncancelable')
f(21,19750,77,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,19750,77,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,19750,77,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,19750,55,2,'cats.effect.IOFiber$$Lambda$95+0x0000000800d75bf8')
f(24,19805,22,2,'cats.effect.IOFiber$$Lambda$96+0x0000000800d761e8')
f(20,19827,46,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,19827,46,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d70c00.newInvokeSpecial')
f(22,19827,46,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,19827,46,2,'cats.effect.IO$$Lambda$94+0x0000000800d74dc0')
f(19,19873,68,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,19873,68,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,19873,68,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,19873,22,2,'cats.effect.IO$$Lambda$91+0x0000000800d6f548')
f(22,19895,23,2,'cats.effect.IO$$Lambda$92+0x0000000800d6f808')
f(22,19918,23,2,'cats.effect.IO$$Lambda$93+0x0000000800d74000')
f(18,19941,18,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,19959,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,19959,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,19959,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,19959,18,2,'cats.effect.IOPlatform$$Lambda$90+0x0000000800d6f140')
f(18,19977,434,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,19977,434,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,19977,44,2,'java.lang.Object[]')
f(20,20021,57,2,'java.util.concurrent.locks.ReentrantLock')
f(20,20078,286,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,20078,286,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,20364,47,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,20364,47,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,20364,47,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,20411,33,1,'scala/concurrent/package$.blocking')
f(19,20411,33,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,20411,33,1,'cats/effect/IOPlatform$$Lambda$97.0x0000000800d76bc8.apply')
f(21,20411,33,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,20411,33,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,20411,33,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,20411,33,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,20444,76,1,'scala/util/Either.fold')
f(19,20444,76,1,'cats/effect/IOPlatform$$Lambda$122.0x0000000800d822c0.apply')
f(20,20444,76,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,20444,76,1,'scala/Some$.apply')
f(22,20444,76,2,'scala.Some')
f(17,20520,10,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,20520,10,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,20520,10,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,20520,10,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,20520,10,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,20520,10,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,20520,10,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,20520,10,2,'scala.concurrent.duration.FiniteDuration')
f(16,20530,445,1,'kyo/bench/CountdownLatchBench.catsBench')
f(17,20530,25,1,'cats/effect/IO.flatMap')
f(18,20530,25,1,'cats/effect/IO$FlatMap$.apply')
f(19,20530,25,2,'cats.effect.IO$FlatMap')
f(17,20555,397,1,'cats/effect/std/CountDownLatch$.apply')
f(18,20555,19,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(19,20555,19,1,'cats/FlatMap$Ops.flatMap$')
f(20,20555,19,1,'cats/FlatMap$Ops.flatMap')
f(21,20555,19,1,'cats/effect/IO$$anon$2.flatMap')
f(22,20555,19,1,'cats/effect/IO$$anon$2.flatMap')
f(23,20555,19,1,'cats/effect/IO.flatMap')
f(24,20555,19,1,'cats/effect/IO$FlatMap$.apply')
f(25,20555,19,2,'cats.effect.IO$FlatMap')
f(18,20574,314,1,'cats/effect/std/CountDownLatch$State$.initial')
f(19,20574,49,1,'cats/effect/IO$$anon$2.deferred')
f(20,20574,49,1,'cats/effect/IO$$anon$2.deferred')
f(21,20574,49,1,'cats/effect/IO$.deferred')
f(22,20574,1,1,'cats/effect/IO$.apply')
f(23,20574,1,1,'cats/effect/IO$.delay')
f(24,20574,1,1,'cats/effect/IO$Delay$.apply')
f(25,20574,1,2,'cats.effect.IO$Delay')
f(22,20575,48,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,20575,48,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,20575,48,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,20575,48,2,'cats.effect.IO$$$Lambda$39+0x0000000800ca1488')
f(19,20623,265,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,20623,265,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial')
f(21,20623,265,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,20623,265,2,'cats.effect.std.CountDownLatch$State$$$Lambda$41+0x0000000800ca21b8')
f(18,20888,64,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,20888,64,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,20888,64,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,20888,64,2,'cats.effect.std.CountDownLatch$$$Lambda$42+0x0000000800ca2a08')
f(17,20952,23,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,20952,23,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,20952,23,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,20952,23,2,'kyo.bench.CountdownLatchBench$$Lambda$43+0x0000000800ca2ff8')
f(14,20975,1,2,'org.openjdk.jmh.results.BenchmarkTaskResult')
f(1,20976,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,20976,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,20976,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,20976,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,20976,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,20976,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,20976,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,20976,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,20976,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,20976,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,20976,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,20976,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,20976,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 656px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(41);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,300,3,'all')
f(1,0,7,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,7,3,'thread_native_entry(Thread*)')
f(3,0,7,4,'Thread::call_run()')
f(4,0,7,4,'JavaThread::thread_main_inner()')
f(5,0,7,4,'CompileBroker::compiler_thread_loop()')
f(6,0,7,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,7,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,7,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,4,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseCFG::do_global_code_motion()')
f(11,0,1,4,'PhaseCFG::global_code_motion()')
f(12,0,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,0,1,5,'asm_exc_page_fault')
f(14,0,1,5,'exc_page_fault')
f(15,0,1,5,'do_user_addr_fault')
f(16,0,1,5,'handle_mm_fault')
f(17,0,1,5,'__handle_mm_fault')
f(18,0,1,5,'handle_pte_fault')
f(19,0,1,5,'do_anonymous_page')
f(20,0,1,5,'alloc_pages_vma')
f(21,0,1,5,'__alloc_pages')
f(22,0,1,5,'get_page_from_freelist')
f(23,0,1,5,'clear_page_erms')
f(10,1,2,4,'PhaseChaitin::Register_Allocate()')
f(11,1,1,4,'PhaseChaitin::Select()')
f(12,1,1,4,'IndexSetIterator::advance_and_next()')
f(11,2,1,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(10,3,1,4,'PhaseOutput::Output()')
f(11,3,1,4,'PhaseOutput::shorten_branches(unsigned int*)')
f(12,3,1,4,'PhaseOutput::scratch_emit_size(Node const*)')
f(9,4,2,4,'Compile::Optimize()')
f(10,4,2,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,4,2,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,4,2,4,'PhaseIdealLoop::Dominators()')
f(9,6,1,4,'PhaseRemoveUseless::PhaseRemoveUseless(PhaseGVN*, Unique_Node_List*, Phase::PhaseNumber)')
f(10,6,1,4,'Compile::identify_useful_nodes(Unique_Node_List&)')
f(1,7,5,3,'[unknown_Java]')
f(2,7,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(2,11,1,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(1,12,286,1,'cats/effect/unsafe/WorkerThread.run')
f(2,12,284,1,'cats/effect/IOFiber.run')
f(3,12,2,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,12,2,1,'cats/effect/IOFiber.succeeded')
f(5,12,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,12,2,1,'cats/effect/IOFiber.done')
f(7,12,2,1,'cats/effect/CallbackStack.apply')
f(8,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,12,2,1,'cats/effect/IO$$Lambda$94.0x0000000800d74bb8.applyVoid')
f(11,12,2,1,'cats/effect/IO.$anonfun$6')
f(12,12,2,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,12,2,1,'cats/effect/kernel/Outcome.fold$')
f(14,12,2,1,'cats/effect/kernel/Outcome.fold')
f(15,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(16,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(17,12,2,1,'cats/effect/IO$$Lambda$120.0x0000000800d812a8.applyVoid')
f(18,12,2,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(20,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(21,12,2,1,'cats/effect/IO$$Lambda$93.0x0000000800d6fa10.applyVoid')
f(22,12,2,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(24,12,2,1,'scala/runtime/function/JProcedure1.apply')
f(25,12,2,1,'cats/effect/IOPlatform$$Lambda$90.0x0000000800d6ef40.applyVoid')
f(26,12,2,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,12,2,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,12,2,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(29,12,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(30,12,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(31,12,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(32,12,2,1,'jdk/internal/misc/Unsafe.unpark')
f(33,12,2,3,'pthread_cond_signal')
f(34,12,2,5,'entry_SYSCALL_64_after_hwframe')
f(35,12,2,5,'do_syscall_64')
f(36,12,2,5,'__x64_sys_futex')
f(37,12,2,5,'do_futex')
f(38,12,2,5,'futex_wake')
f(39,12,2,5,'wake_up_q')
f(40,12,2,5,'_raw_spin_unlock_irqrestore')
f(3,14,263,1,'cats/effect/IOFiber.autoCedeR')
f(4,14,263,1,'cats/effect/IOFiber.runLoop')
f(5,56,25,2,'cats/effect/ArrayStack.push',25,0,0)
f(6,62,19,2,'cats/effect/ArrayStack.checkAndGrow',19,0,0)
f(5,81,11,2,'cats/effect/IO$.apply',11,0,0)
f(6,81,11,2,'cats/effect/IO$.delay',11,0,0)
f(7,85,3,2,'cats/effect/IO$Delay$.apply',3,0,0)
f(8,85,3,2,'cats/effect/IO$Delay.<init>',3,0,0)
f(7,88,3,2,'cats/effect/Thunk$.asFunction0',3,0,0)
f(8,89,2,2,'cats/effect/Thunk$$$Lambda$40.0x0000000800ca1950.apply',2,0,0)
f(7,91,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(5,92,9,6,'cats/effect/IO$Delay.tag',0,9,0)
f(5,101,17,6,'cats/effect/IO$FlatMap.tag',0,17,0)
f(5,118,1,2,'cats/effect/IO$IOCont$Get.state',1,0,0)
f(5,119,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,122,8,6,'cats/effect/IO$Uncancelable.tag',0,8,0)
f(5,130,3,1,'cats/effect/IODeferred$$Lambda$116.0x0000000800d7dcd0.apply')
f(6,131,2,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,131,2,1,'cats/effect/CallbackStack.apply')
f(8,131,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,131,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,131,2,1,'cats/effect/IOFiber$$Lambda$110.0x0000000800d792a0.applyVoid')
f(11,131,2,1,'cats/effect/IOFiber.$anonfun$2')
f(12,131,2,1,'cats/effect/IOFiber.stateLoop$1')
f(13,131,2,1,'cats/effect/IOFiber.loop$1')
f(14,131,2,1,'cats/effect/IOFiber.scheduleFiber')
f(15,131,2,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,131,2,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,131,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,131,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,131,2,1,'jdk/internal/misc/Unsafe.unpark')
f(20,131,2,3,'pthread_cond_signal')
f(21,131,2,5,'entry_SYSCALL_64_after_hwframe')
f(22,131,2,5,'do_syscall_64')
f(23,131,1,5,'__x64_sys_futex')
f(24,131,1,5,'do_futex')
f(25,131,1,5,'futex_wake')
f(26,131,1,5,'wake_up_q')
f(27,131,1,5,'_raw_spin_unlock_irqrestore')
f(23,132,1,5,'syscall_enter_from_user_mode')
f(5,133,39,2,'cats/effect/IOFiber.rescheduleFiber',39,0,0)
f(6,135,37,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',37,0,0)
f(7,136,1,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',1,0,0)
f(7,137,35,2,'cats/effect/unsafe/WorkerThread.reschedule',35,0,0)
f(8,155,17,2,'cats/effect/unsafe/LocalQueue.isEmpty',17,0,0)
f(9,156,16,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',16,0,0)
f(10,170,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',2,0,0)
f(5,172,6,2,'cats/effect/IOFiber.shouldFinalize',6,0,0)
f(5,178,56,1,'cats/effect/IOFiber.succeeded')
f(6,216,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,217,4,2,'cats/effect/ByteStack$.pop',4,0,0)
f(7,219,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,221,13,2,'kyo/bench/CountdownLatchBench$$Lambda$101.0x0000000800d72c70.apply',13,0,0)
f(7,221,13,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',13,0,0)
f(8,221,13,2,'kyo/bench/CountdownLatchBench.iterate$1',13,0,0)
f(9,221,5,2,'cats/effect/IO.flatMap',5,0,0)
f(10,221,5,2,'cats/effect/IO$FlatMap$.apply',5,0,0)
f(11,225,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(9,226,2,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release',2,0,0)
f(10,227,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(11,227,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(12,227,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(13,227,1,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(9,228,6,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',6,0,0)
f(10,228,6,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',6,0,0)
f(11,228,5,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',5,0,0)
f(11,233,1,2,'kyo/bench/CountdownLatchBench$$Lambda$101.0x0000000800d72c70.<init>',1,0,0)
f(5,234,16,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$100.0x0000000800d728a0.apply',16,0,0)
f(6,234,16,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1',16,0,0)
f(7,235,13,2,'cats/effect/kernel/SyncRef.modify',13,0,0)
f(8,237,7,2,'cats/effect/IO$$anon$2.delay',7,0,0)
f(9,237,7,2,'cats/effect/IO$$anon$2.delay',7,0,0)
f(10,237,7,2,'cats/effect/IO$.apply',7,0,0)
f(11,238,6,2,'cats/effect/IO$.delay',6,0,0)
f(12,238,5,2,'cats/effect/IO$Delay$.apply',5,0,0)
f(13,238,5,2,'cats/effect/IO$Delay.<init>',5,0,0)
f(14,238,5,2,'cats/effect/IO.<init>',5,0,0)
f(15,238,5,2,'cats/effect/IOPlatform.<init>',5,0,0)
f(12,243,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(8,244,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(9,244,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(10,245,3,2,'cats/effect/kernel/SyncRef$$Lambda$107.0x0000000800d71d00.<init>',3,0,0)
f(7,248,2,2,'cats/syntax/FlattenOps$.flatten$extension',2,0,0)
f(8,248,2,2,'cats/effect/IO$$anon$2.flatten',2,0,0)
f(9,249,1,2,'cats/FlatMap.flatten$',1,0,0)
f(10,249,1,2,'cats/FlatMap.flatten',1,0,0)
f(11,249,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(12,249,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(5,250,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(6,250,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(7,250,3,2,'cats/effect/IOFiber$$Lambda$110.0x0000000800d792a0.<init>',3,0,0)
f(5,253,4,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',4,0,0)
f(6,253,4,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',4,0,0)
f(7,253,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(7,254,3,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',3,0,0)
f(5,257,20,3,'vtable stub')
f(3,277,19,1,'cats/effect/IOFiber.execR')
f(4,277,19,1,'cats/effect/IOFiber.runLoop')
f(5,282,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(6,283,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,284,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(5,285,3,1,'cats/effect/IOFiber.scheduleFiber')
f(6,285,3,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,285,3,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,285,3,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,285,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,285,3,1,'jdk/internal/misc/Unsafe.unpark')
f(11,285,3,3,'pthread_cond_signal')
f(12,285,3,5,'entry_SYSCALL_64_after_hwframe')
f(13,285,3,5,'do_syscall_64')
f(14,285,3,5,'__x64_sys_futex')
f(15,285,3,5,'do_futex')
f(16,285,3,5,'futex_wake')
f(17,285,3,5,'wake_up_q')
f(18,286,2,5,'_raw_spin_unlock_irqrestore')
f(5,288,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,289,4,1,'cats/effect/IOFiber.succeeded')
f(6,291,2,2,'kyo/bench/CountdownLatchBench$$Lambda$101.0x0000000800d72c70.apply',2,0,0)
f(7,291,2,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',2,0,0)
f(8,291,2,2,'kyo/bench/CountdownLatchBench.iterate$1',2,0,0)
f(9,291,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,291,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(9,292,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,292,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(11,292,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,293,1,3,'itable stub')
f(5,294,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(6,294,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(7,294,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(5,295,1,3,'vtable stub')
f(2,296,1,1,'cats/effect/unsafe/LocalQueue.dequeue')
f(3,296,1,1,'cats/effect/unsafe/LocalQueue.unsignedShortAddition')
f(2,297,1,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,297,1,1,'java/util/concurrent/locks/LockSupport.park')
f(4,297,1,1,'jdk/internal/misc/Unsafe.park')
f(5,297,1,3,'[unknown]')
f(6,297,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,297,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,297,1,5,'do_syscall_64')
f(9,297,1,5,'syscall_exit_to_user_mode')
f(10,297,1,5,'exit_to_user_mode_prepare')
f(11,297,1,5,'exit_to_user_mode_loop')
f(1,298,2,1,'java/lang/Thread.run')
f(2,298,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,298,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,298,2,1,'java/util/concurrent/FutureTask.run')
f(5,298,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,298,2,1,'java/util/concurrent/FutureTask.run')
f(7,298,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,298,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,298,2,1,'java/lang/reflect/Method.invoke')
f(10,298,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,298,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,298,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,298,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_Throughput')
f(14,298,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,298,2,1,'kyo/bench/Bench.syncCats')
f(16,298,2,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,298,2,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,298,2,1,'cats/effect/IO.unsafeRunAsync')
f(19,298,2,1,'cats/effect/IO.unsafeRunFiber')
f(20,298,2,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,298,2,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,298,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,298,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,298,2,1,'jdk/internal/misc/Unsafe.unpark')
f(25,298,2,3,'pthread_cond_signal')
f(26,298,2,5,'entry_SYSCALL_64_after_hwframe')
f(27,298,2,5,'do_syscall_64')
f(28,298,2,5,'__x64_sys_futex')
f(29,298,2,5,'do_futex')
f(30,298,2,5,'futex_wake')
f(31,298,2,5,'wake_up_q')
f(32,298,2,5,'_raw_spin_unlock_irqrestore')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,26780,3,'all')
f(1,0,24007,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,24007,1,'cats/effect/IOFiber.run')
f(3,0,22454,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,22454,1,'cats/effect/IOFiber.runLoop')
f(5,0,22446,1,'cats/effect/IOFiber.next$2')
f(6,0,22446,1,'kyo/bench/DeepBindBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,0,22446,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,0,22446,1,'kyo/bench/DeepBindBench.loop$2')
f(9,0,11225,1,'cats/effect/IO.flatMap')
f(10,0,11225,1,'cats/effect/IO$FlatMap$.apply')
f(11,0,11225,2,'cats.effect.IO$FlatMap')
f(9,11225,11221,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,11225,11221,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial')
f(11,11225,11221,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,11225,11221,2,'kyo.bench.DeepBindBench$$Lambda$94+0x0000000800d5b2a0')
f(5,22446,8,1,'cats/effect/IOFiber.succeeded')
f(6,22446,8,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,22446,7,1,'cats/effect/IOFiber.done')
f(8,22446,6,1,'cats/effect/CallbackStack.apply')
f(9,22446,6,1,'scala/runtime/function/JProcedure1.apply')
f(10,22446,6,1,'scala/runtime/function/JProcedure1.apply')
f(11,22446,6,1,'cats/effect/IO$$Lambda$90.0x0000000800d58ba8.applyVoid')
f(12,22446,6,1,'cats/effect/IO.$anonfun$6')
f(13,22446,3,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,22446,3,1,'cats/effect/kernel/Outcome.fold$')
f(15,22446,3,1,'cats/effect/kernel/Outcome.fold')
f(16,22446,3,1,'scala/runtime/function/JProcedure1.apply')
f(17,22446,3,1,'scala/runtime/function/JProcedure1.apply')
f(18,22446,3,1,'cats/effect/IO$$Lambda$97.0x0000000800d5e408.applyVoid')
f(19,22446,3,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,22446,3,1,'scala/runtime/function/JProcedure1.apply')
f(21,22446,3,1,'scala/runtime/function/JProcedure1.apply')
f(22,22446,3,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,22446,3,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,22446,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,22446,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,22446,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55568.applyVoid')
f(27,22446,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,22446,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,22446,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,22446,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,22446,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,22446,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,22446,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,22446,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(24,22447,2,1,'scala/util/Right$.apply')
f(25,22447,2,2,'scala.util.Right')
f(13,22449,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,22449,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,22449,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,22449,2,2,'cats.effect.IO$$Lambda$95+0x0000000800d5bb70')
f(16,22451,1,2,'cats.effect.IO$$Lambda$96+0x0000000800d5e000')
f(8,22452,1,1,'cats/effect/IO$.pure')
f(9,22452,1,1,'cats/effect/IO$Pure$.apply')
f(10,22452,1,2,'cats.effect.IO$Pure')
f(7,22453,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,22453,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(3,22454,1221,1,'cats/effect/IOFiber.cedeR')
f(4,22454,1221,1,'cats/effect/IOFiber.runLoop')
f(5,22454,1221,1,'cats/effect/IOFiber.next$2')
f(6,22454,1221,1,'kyo/bench/DeepBindBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,22454,1221,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,22454,1221,1,'kyo/bench/DeepBindBench.loop$2')
f(9,22454,639,1,'cats/effect/IO.flatMap')
f(10,22454,639,1,'cats/effect/IO$FlatMap$.apply')
f(11,22454,639,2,'cats.effect.IO$FlatMap')
f(9,23093,582,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,23093,582,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial')
f(11,23093,582,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,23093,582,2,'kyo.bench.DeepBindBench$$Lambda$94+0x0000000800d5b2a0')
f(3,23675,332,1,'cats/effect/IOFiber.execR')
f(4,23675,8,1,'cats/effect/ArrayStack.init')
f(5,23675,8,2,'java.lang.Object[]')
f(4,23683,324,1,'cats/effect/ByteStack$.create')
f(5,23683,324,2,'int[]')
f(1,24007,2770,1,'java/lang/Thread.run')
f(2,24007,2770,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,24007,2770,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,24007,2770,1,'java/util/concurrent/FutureTask.run')
f(5,24007,2770,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,24007,2770,1,'java/util/concurrent/FutureTask.run')
f(7,24007,2770,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,24007,2770,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,24007,2770,1,'java/lang/reflect/Method.invoke')
f(10,24007,2770,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,24007,2770,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,24007,2770,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,24007,2770,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_Throughput')
f(14,24007,2770,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,24007,2770,1,'kyo/bench/Bench.forkCats')
f(16,24007,77,1,'cats/effect/IO.flatMap')
f(17,24007,77,1,'cats/effect/IO$FlatMap$.apply')
f(18,24007,77,2,'cats.effect.IO$FlatMap')
f(16,24084,2645,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,24084,2545,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,24084,1407,1,'cats/effect/IO.unsafeRunAsync')
f(19,24084,1174,1,'cats/effect/IO.unsafeRunFiber')
f(20,24084,284,2,'cats.effect.IOFiber')
f(20,24368,698,1,'cats/effect/IOFiber.<init>')
f(21,24368,191,1,'cats/effect/ArrayStack$.apply')
f(22,24368,191,2,'cats.effect.ArrayStack')
f(21,24559,77,1,'cats/effect/CallbackStack$.apply')
f(22,24559,77,2,'cats.effect.CallbackStack')
f(21,24636,128,1,'cats/effect/IO$.async')
f(22,24636,33,2,'cats.effect.IO$$anon$3')
f(22,24669,95,1,'cats/effect/IO$IOCont$.apply')
f(23,24669,95,2,'cats.effect.IO$IOCont')
f(21,24764,61,1,'cats/effect/IO$.uncancelable')
f(22,24764,61,1,'cats/effect/IO$Uncancelable$.apply')
f(23,24764,61,2,'cats.effect.IO$Uncancelable')
f(21,24825,241,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,24825,241,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,24825,241,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,24825,105,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d599e0')
f(24,24930,136,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d59fd0')
f(20,25066,73,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,25066,73,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,25066,73,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,25066,73,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,25066,73,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,25139,119,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,25139,119,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,25139,119,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,25139,119,2,'cats.effect.IO$$Lambda$90+0x0000000800d58ba8')
f(19,25258,233,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,25258,233,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,25258,233,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,25258,127,2,'cats.effect.IO$$Lambda$87+0x0000000800d55970')
f(22,25385,52,2,'cats.effect.IO$$Lambda$88+0x0000000800d54800')
f(22,25437,54,2,'cats.effect.IO$$Lambda$89+0x0000000800d58000')
f(18,25491,194,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,25685,135,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,25685,135,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,25685,135,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,25685,30,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55568')
f(21,25715,105,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5a9b0')
f(18,25820,534,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,25820,534,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,25820,159,2,'java.lang.Object[]')
f(20,25979,29,2,'java.util.concurrent.locks.ReentrantLock')
f(20,26008,106,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,26008,106,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,26114,240,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,26114,240,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,26114,240,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,26354,93,1,'scala/concurrent/package$.blocking')
f(19,26354,93,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,26354,93,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a9b0.apply')
f(21,26354,93,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,26354,93,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,26354,93,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,26354,93,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,26447,182,1,'scala/util/Either.fold')
f(19,26447,182,1,'cats/effect/IOPlatform$$Lambda$99.0x0000000800d5f190.apply')
f(20,26447,182,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,26447,182,1,'scala/Some$.apply')
f(22,26447,182,2,'scala.Some')
f(17,26629,100,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,26629,100,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,26629,100,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,26629,100,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,26629,100,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,26629,100,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,26629,100,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,26629,100,2,'scala.concurrent.duration.FiniteDuration')
f(16,26729,48,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,26729,48,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,26729,48,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,26729,48,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8d588')
f(1,26777,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,26777,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,26777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,26777,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,26777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,26777,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,26777,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,26777,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,26777,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,26777,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,26777,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,26777,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,26777,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,265,3,'all')
f(1,0,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,1,3,'thread_native_entry(Thread*)')
f(3,0,1,4,'Thread::call_run()')
f(4,0,1,4,'VMThread::run()')
f(5,0,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,0,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,0,1,4,'VM_Operation::evaluate()')
f(8,0,1,4,'VM_G1CollectForAllocation::doit()')
f(9,0,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,0,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,0,1,4,'G1CollectedHeap::pre_evacuate_collection_set(G1EvacuationInfo&, G1ParScanThreadStateSet*)')
f(12,0,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(13,0,1,3,'sem_post')
f(14,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(15,0,1,5,'do_syscall_64')
f(16,0,1,5,'__x64_sys_futex')
f(17,0,1,5,'do_futex')
f(18,0,1,5,'futex_wake')
f(19,0,1,5,'wake_up_q')
f(20,0,1,5,'_raw_spin_unlock_irqrestore')
f(1,1,243,1,'cats/effect/unsafe/WorkerThread.run')
f(2,3,232,1,'cats/effect/IOFiber.run',4,0,0)
f(3,3,219,1,'cats/effect/IOFiber.autoCedeR',1,0,0)
f(4,4,218,1,'cats/effect/IOFiber.runLoop')
f(5,120,2,2,'cats/effect/IO$FlatMap.ioe',2,0,0)
f(5,122,52,2,'cats/effect/IOFiber.next$2',50,0,0)
f(6,132,42,2,'kyo/bench/DeepBindBench$$Lambda$94.0x0000000800d5b4b8.apply',40,0,0)
f(7,144,30,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',28,0,0)
f(8,144,30,2,'kyo/bench/DeepBindBench.loop$2',28,0,0)
f(9,144,18,2,'cats/effect/IO.flatMap',16,0,0)
f(10,144,18,2,'cats/effect/IO$FlatMap$.apply',16,0,0)
f(11,154,2,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,154,2,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(13,155,1,4,'MemAllocator::allocate() const')
f(14,155,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(15,155,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(16,155,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(17,155,1,4,'G1AllocRegion::new_alloc_region_and_allocate(unsigned long, bool)')
f(18,155,1,4,'G1CollectedHeap::new_mutator_alloc_region(unsigned long, bool, unsigned int)')
f(19,155,1,4,'G1RemSetTrackingPolicy::update_at_allocate(HeapRegion*)')
f(20,155,1,4,'G1FromCardCache::clear(unsigned int)')
f(11,156,6,2,'cats/effect/IO$FlatMap.<init>',6,0,0)
f(9,162,12,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',12,0,0)
f(10,162,12,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial',12,0,0)
f(11,162,11,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',11,0,0)
f(11,173,1,2,'kyo/bench/DeepBindBench$$Lambda$94.0x0000000800d5b4b8.<init>',1,0,0)
f(5,174,34,2,'cats/effect/IOFiber.rescheduleFiber',33,0,0)
f(6,206,1,5,'asm_sysvec_hyperv_stimer0')
f(7,206,1,5,'sysvec_hyperv_stimer0')
f(8,206,1,5,'irq_exit_rcu')
f(9,206,1,5,'__irq_exit_rcu')
f(10,206,1,5,'__softirqentry_text_start')
f(6,207,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(5,208,14,1,'cats/effect/IOFiber.succeeded')
f(6,208,14,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,208,14,1,'cats/effect/IOFiber.done')
f(8,208,14,1,'cats/effect/CallbackStack.apply')
f(9,208,14,1,'scala/runtime/function/JProcedure1.apply')
f(10,208,14,1,'scala/runtime/function/JProcedure1.apply')
f(11,208,14,1,'cats/effect/IO$$Lambda$90.0x0000000800d58dc0.applyVoid')
f(12,208,14,1,'cats/effect/IO.$anonfun$6')
f(13,208,14,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,208,14,1,'cats/effect/kernel/Outcome.fold$',1,0,0)
f(15,208,14,1,'cats/effect/kernel/Outcome.fold',1,0,0)
f(16,208,14,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(17,208,14,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(18,208,14,1,'cats/effect/IO$$Lambda$97.0x0000000800d5e6c8.applyVoid',1,0,0)
f(19,208,14,1,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(20,208,1,2,'cats/effect/unsafe/StripedHashtable.remove',1,0,0)
f(20,209,13,1,'scala/runtime/function/JProcedure1.apply')
f(21,209,13,1,'scala/runtime/function/JProcedure1.apply')
f(22,209,13,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,209,13,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,209,13,1,'scala/runtime/function/JProcedure1.apply')
f(25,209,13,1,'scala/runtime/function/JProcedure1.apply')
f(26,209,13,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55760.applyVoid')
f(27,209,13,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,209,13,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,209,13,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,209,13,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,209,13,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,209,13,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,209,13,1,'jdk/internal/misc/Unsafe.unpark')
f(34,209,13,3,'pthread_cond_signal')
f(35,209,13,5,'entry_SYSCALL_64_after_hwframe')
f(36,209,1,5,'__x64_sys_futex')
f(36,210,12,5,'do_syscall_64')
f(37,210,12,5,'__x64_sys_futex')
f(38,210,12,5,'do_futex')
f(39,210,12,5,'futex_wake')
f(40,213,9,5,'wake_up_q')
f(41,213,9,5,'_raw_spin_unlock_irqrestore')
f(3,222,10,1,'cats/effect/IOFiber.cedeR')
f(4,222,10,1,'cats/effect/IOFiber.runLoop')
f(5,225,1,2,'cats/effect/IO$FlatMap.ioe',1,0,0)
f(5,226,4,2,'cats/effect/IOFiber.next$2',4,0,0)
f(6,227,3,2,'kyo/bench/DeepBindBench$$Lambda$94.0x0000000800d5b4b8.apply',3,0,0)
f(7,229,1,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',1,0,0)
f(8,229,1,2,'kyo/bench/DeepBindBench.loop$2',1,0,0)
f(9,229,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,229,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(5,230,2,2,'cats/effect/IOFiber.rescheduleFiber',2,0,0)
f(3,232,3,2,'cats/effect/IOFiber.execR',3,0,0)
f(4,234,1,2,'cats/effect/ArrayStack.init',1,0,0)
f(2,235,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,235,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(2,236,1,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,236,1,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,236,1,2,'cats/effect/unsafe/LocalQueue.msb',1,0,0)
f(2,237,7,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,237,7,1,'java/util/concurrent/locks/LockSupport.park')
f(4,237,7,1,'jdk/internal/misc/Unsafe.park')
f(5,237,7,3,'[unknown]')
f(6,237,7,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,238,6,5,'entry_SYSCALL_64_after_hwframe')
f(8,238,6,5,'do_syscall_64')
f(9,238,5,5,'__x64_sys_futex')
f(10,238,5,5,'do_futex')
f(11,238,5,5,'futex_wait')
f(12,240,3,5,'futex_wait_queue_me')
f(13,240,3,5,'schedule')
f(14,240,3,5,'__schedule')
f(15,240,3,5,'finish_task_switch.isra.0')
f(9,243,1,5,'syscall_exit_to_user_mode')
f(10,243,1,5,'exit_to_user_mode_prepare')
f(11,243,1,5,'exit_to_user_mode_loop')
f(1,244,21,1,'java/lang/Thread.run')
f(2,244,21,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,244,21,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,244,21,1,'java/util/concurrent/FutureTask.run')
f(5,244,21,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,244,21,1,'java/util/concurrent/FutureTask.run')
f(7,244,21,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,244,21,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,244,21,1,'java/lang/reflect/Method.invoke')
f(10,244,21,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,244,21,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,244,21,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,244,21,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_Throughput')
f(14,244,21,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,244,21,1,'kyo/bench/Bench.forkCats')
f(16,244,21,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,244,21,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,244,13,1,'cats/effect/IO.unsafeRunAsync',1,0,0)
f(19,244,13,1,'cats/effect/IO.unsafeRunFiber',1,0,0)
f(20,244,13,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',1,0,0)
f(21,244,13,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal',1,0,0)
f(22,245,12,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,245,12,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,245,12,1,'jdk/internal/misc/Unsafe.unpark')
f(25,245,1,3,'Unsafe_Unpark')
f(26,245,1,4,'ThreadsListHandle::~ThreadsListHandle()')
f(25,246,11,3,'pthread_cond_signal')
f(26,247,10,5,'entry_SYSCALL_64_after_hwframe')
f(27,247,10,5,'do_syscall_64')
f(28,247,9,5,'__x64_sys_futex')
f(29,248,8,5,'do_futex')
f(30,248,7,5,'futex_wake')
f(31,249,6,5,'wake_up_q')
f(32,249,6,5,'_raw_spin_unlock_irqrestore')
f(30,255,1,5,'mark_wake_futex')
f(28,256,1,5,'syscall_exit_to_user_mode_prepare')
f(18,257,8,1,'scala/concurrent/package$.blocking')
f(19,257,8,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,257,8,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5a9c0.apply')
f(21,257,8,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,257,8,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,257,8,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,257,8,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,257,8,1,'jdk/internal/misc/Unsafe.park')
f(26,258,7,3,'[unknown]')
f(27,258,7,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,258,7,5,'entry_SYSCALL_64_after_hwframe')
f(29,258,7,5,'do_syscall_64')
f(30,258,6,5,'__x64_sys_futex')
f(31,258,6,5,'do_futex')
f(32,258,6,5,'futex_wait')
f(33,258,5,5,'futex_wait_queue_me')
f(34,258,1,5,'hrtimer_sleeper_start_expires')
f(35,258,1,5,'_raw_spin_unlock_irqrestore')
f(34,259,4,5,'schedule')
f(35,259,4,5,'__schedule')
f(36,259,4,5,'finish_task_switch.isra.0')
f(33,263,1,5,'futex_wait_setup')
f(30,264,1,5,'syscall_exit_to_user_mode')
f(31,264,1,5,'exit_to_user_mode_prepare')
f(32,264,1,5,'exit_to_user_mode_loop')
f(33,264,1,5,'__rseq_handle_notify_resume')
f(34,264,1,5,'rseq_ip_fixup')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,29814,3,'all')
f(1,0,26706,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,26706,1,'cats/effect/IOFiber.run')
f(3,0,25001,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,25001,1,'cats/effect/IOFiber.runLoop')
f(5,0,24998,1,'cats/effect/IOFiber.next$2')
f(6,0,24998,1,'kyo/bench/DeepBindBench$$Lambda$39.0x0000000800c8d588.apply')
f(7,0,24998,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,0,24998,1,'kyo/bench/DeepBindBench.loop$2')
f(9,0,12541,1,'cats/effect/IO.flatMap')
f(10,0,12541,1,'cats/effect/IO$FlatMap$.apply')
f(11,0,12541,2,'cats.effect.IO$FlatMap')
f(9,12541,12457,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,12541,12457,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(11,12541,12457,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,12541,12457,2,'kyo.bench.DeepBindBench$$Lambda$39+0x0000000800c8d588')
f(5,24998,3,1,'cats/effect/IOFiber.succeeded')
f(6,24998,3,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,24998,3,1,'cats/effect/IOFiber.done')
f(8,24998,3,1,'cats/effect/CallbackStack.apply')
f(9,24998,3,1,'scala/runtime/function/JProcedure1.apply')
f(10,24998,3,1,'scala/runtime/function/JProcedure1.apply')
f(11,24998,3,1,'cats/effect/IO$$Lambda$90.0x0000000800d5c530.applyVoid')
f(12,24998,3,1,'cats/effect/IO.$anonfun$6')
f(13,24998,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,24998,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,24998,1,1,'cats/effect/kernel/Outcome.fold')
f(16,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,24998,1,1,'cats/effect/IO$$Lambda$96.0x0000000800d5f5e8.applyVoid')
f(19,24998,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,24998,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d57240.applyVoid')
f(23,24998,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,24998,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,24998,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d56770.applyVoid')
f(27,24998,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,24998,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,24998,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,24998,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,24998,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,24998,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,24998,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,24998,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,24999,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,24999,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,24999,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,24999,1,2,'cats.effect.IO$$Lambda$94+0x0000000800d5ef20')
f(16,25000,1,2,'cats.effect.IO$$Lambda$96+0x0000000800d5f5e8')
f(3,25001,1705,1,'cats/effect/IOFiber.execR')
f(4,25001,15,1,'cats/effect/ArrayStack.init')
f(5,25001,15,2,'java.lang.Object[]')
f(4,25016,353,1,'cats/effect/ByteStack$.create')
f(5,25016,353,2,'int[]')
f(4,25369,1337,1,'cats/effect/IOFiber.runLoop')
f(5,25369,1337,1,'cats/effect/IOFiber.next$2')
f(6,25369,1337,1,'kyo/bench/DeepBindBench$$Lambda$39.0x0000000800c8d588.apply')
f(7,25369,1337,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,25369,1337,1,'kyo/bench/DeepBindBench.loop$2')
f(9,25369,650,1,'cats/effect/IO.flatMap')
f(10,25369,650,1,'cats/effect/IO$FlatMap$.apply')
f(11,25369,650,2,'cats.effect.IO$FlatMap')
f(9,26019,687,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,26019,687,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(11,26019,687,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,26019,687,2,'kyo.bench.DeepBindBench$$Lambda$39+0x0000000800c8d588')
f(1,26706,3105,1,'java/lang/Thread.run')
f(2,26706,3105,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,26706,3105,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,26706,3105,1,'java/util/concurrent/FutureTask.run')
f(5,26706,3105,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,26706,3105,1,'java/util/concurrent/FutureTask.run')
f(7,26706,3105,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,26706,3105,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,26706,3105,1,'java/lang/reflect/Method.invoke')
f(10,26706,3105,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,26706,3105,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,26706,3105,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,26706,3105,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_Throughput')
f(14,26706,3105,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,26706,3105,1,'kyo/bench/Bench.syncCats')
f(16,26706,2867,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,26706,2771,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,26706,1777,1,'cats/effect/IO.unsafeRunAsync')
f(19,26706,1477,1,'cats/effect/IO.unsafeRunFiber')
f(20,26706,427,2,'cats.effect.IOFiber')
f(20,27133,806,1,'cats/effect/IOFiber.<init>')
f(21,27133,171,1,'cats/effect/ArrayStack$.apply')
f(22,27133,171,2,'cats.effect.ArrayStack')
f(21,27304,150,1,'cats/effect/CallbackStack$.apply')
f(22,27304,150,2,'cats.effect.CallbackStack')
f(21,27454,245,1,'cats/effect/IO$.async')
f(22,27454,78,2,'cats.effect.IO$$anon$3')
f(22,27532,167,1,'cats/effect/IO$IOCont$.apply')
f(23,27532,167,2,'cats.effect.IO$IOCont')
f(21,27699,42,1,'cats/effect/IO$.uncancelable')
f(22,27699,42,1,'cats/effect/IO$Uncancelable$.apply')
f(23,27699,42,2,'cats.effect.IO$Uncancelable')
f(21,27741,198,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,27741,198,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,27741,198,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,27741,151,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d160')
f(24,27892,47,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5d750')
f(20,27939,74,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,27939,74,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,27939,74,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,27939,74,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,27939,74,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,28013,170,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,28013,170,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,28013,170,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,28013,170,2,'cats.effect.IO$$Lambda$90+0x0000000800d5c530')
f(19,28183,300,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,28183,300,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,28183,300,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,28183,86,2,'cats.effect.IO$$Lambda$87+0x0000000800d56b78')
f(22,28269,110,2,'cats.effect.IO$$Lambda$88+0x0000000800d56e38')
f(22,28379,104,2,'cats.effect.IO$$Lambda$89+0x0000000800d57240')
f(18,28483,221,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,28704,80,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,28704,80,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,28704,80,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,28704,80,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d56770')
f(18,28784,503,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,28784,503,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,28784,109,2,'java.lang.Object[]')
f(20,28893,74,2,'java.util.concurrent.locks.ReentrantLock')
f(20,28967,172,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,28967,172,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,29139,148,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,29139,148,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,29139,148,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,29287,94,1,'scala/concurrent/package$.blocking')
f(19,29287,94,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,29287,94,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e130.apply')
f(21,29287,94,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,29287,94,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,29287,94,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,29287,94,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,29381,96,1,'scala/util/Either.fold')
f(19,29381,96,1,'cats/effect/IOPlatform$$Lambda$98.0x0000000800d5a3c8.apply')
f(20,29381,96,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,29381,96,1,'scala/Some$.apply')
f(22,29381,96,2,'scala.Some')
f(17,29477,96,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,29477,96,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,29477,96,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,29477,96,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,29477,96,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,29477,96,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,29477,96,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,29477,96,2,'scala.concurrent.duration.FiniteDuration')
f(16,29573,238,1,'kyo/bench/DeepBindBench.catsBench')
f(17,29573,238,1,'kyo/bench/DeepBindBench.loop$2')
f(18,29573,74,1,'cats/effect/IO.flatMap')
f(19,29573,74,1,'cats/effect/IO$FlatMap$.apply')
f(20,29573,74,2,'cats.effect.IO$FlatMap')
f(18,29647,164,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,29647,164,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(20,29647,164,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,29647,164,2,'kyo.bench.DeepBindBench$$Lambda$39+0x0000000800c8d588')
f(1,29811,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,29811,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,29811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,29811,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,29811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,29811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,29811,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,29811,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,29811,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,29811,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,29811,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,29811,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,29811,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,262,3,'all')
f(1,0,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,1,3,'thread_native_entry(Thread*)')
f(3,0,1,4,'Thread::call_run()')
f(4,0,1,4,'VMThread::run()')
f(5,0,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,0,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,0,1,4,'VM_Operation::evaluate()')
f(8,0,1,4,'VM_G1CollectForAllocation::doit()')
f(9,0,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,0,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,0,1,4,'G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo&, G1RedirtyCardsQueueSet*, G1ParScanThreadStateSet*)')
f(12,0,1,4,'G1CollectedHeap::post_evacuate_cleanup_2(PreservedMarksSet*, G1RedirtyCardsQueueSet*, G1EvacuationInfo*, unsigned long const*)')
f(13,0,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(14,0,1,3,'sem_post')
f(15,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,0,1,5,'do_syscall_64')
f(17,0,1,5,'__x64_sys_futex')
f(18,0,1,5,'do_futex')
f(19,0,1,5,'futex_wake')
f(1,1,239,1,'cats/effect/unsafe/WorkerThread.run')
f(2,1,223,1,'cats/effect/IOFiber.run')
f(3,1,211,1,'cats/effect/IOFiber.autoCedeR')
f(4,1,211,1,'cats/effect/IOFiber.runLoop')
f(5,124,1,5,'asm_sysvec_hyperv_stimer0')
f(6,124,1,5,'sysvec_hyperv_stimer0')
f(7,124,1,5,'irq_exit_rcu')
f(8,124,1,5,'__irq_exit_rcu')
f(9,124,1,5,'__softirqentry_text_start')
f(10,124,1,5,'run_rebalance_domains')
f(11,124,1,5,'rebalance_domains')
f(12,124,1,5,'load_balance')
f(13,124,1,5,'find_busiest_group')
f(14,124,1,5,'update_sd_lb_stats.constprop.0')
f(15,124,1,5,'update_sg_lb_stats')
f(5,125,3,2,'cats/effect/IO$FlatMap.ioe',3,0,0)
f(5,128,51,2,'cats/effect/IOFiber.next$2',51,0,0)
f(6,129,50,2,'kyo/bench/DeepBindBench$$Lambda$39.0x0000000800c8d588.apply',50,0,0)
f(7,146,33,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',33,0,0)
f(8,146,33,2,'kyo/bench/DeepBindBench.loop$2',33,0,0)
f(9,146,17,2,'cats/effect/IO.flatMap',17,0,0)
f(10,146,17,2,'cats/effect/IO$FlatMap$.apply',17,0,0)
f(11,160,3,2,'cats/effect/IO$FlatMap.<init>',3,0,0)
f(9,163,16,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',16,0,0)
f(10,163,16,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial',16,0,0)
f(11,163,5,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',5,0,0)
f(11,168,11,2,'kyo/bench/DeepBindBench$$Lambda$39.0x0000000800c8d588.<init>',11,0,0)
f(5,179,1,1,'cats/effect/IOFiber.rescheduleFiber')
f(6,179,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(5,180,19,2,'cats/effect/IOFiber.shouldFinalize',19,0,0)
f(5,199,13,1,'cats/effect/IOFiber.succeeded')
f(6,199,13,1,'cats/effect/IOFiber.runTerminusSuccessK',1,0,0)
f(7,199,13,1,'cats/effect/IOFiber.done',1,0,0)
f(8,199,12,1,'cats/effect/CallbackStack.apply')
f(9,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(10,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(11,199,12,1,'cats/effect/IO$$Lambda$90.0x0000000800d5c530.applyVoid')
f(12,199,12,1,'cats/effect/IO.$anonfun$6')
f(13,199,12,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,199,12,1,'cats/effect/kernel/Outcome.fold$')
f(15,199,12,1,'cats/effect/kernel/Outcome.fold')
f(16,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(17,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(18,199,12,1,'cats/effect/IO$$Lambda$96.0x0000000800d5f5e8.applyVoid')
f(19,199,12,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(21,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(22,199,12,1,'cats/effect/IO$$Lambda$89.0x0000000800d57240.applyVoid')
f(23,199,12,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(25,199,12,1,'scala/runtime/function/JProcedure1.apply')
f(26,199,12,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d56770.applyVoid')
f(27,199,12,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,199,12,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,199,12,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,199,12,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,199,12,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,199,12,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,199,12,1,'jdk/internal/misc/Unsafe.unpark')
f(34,199,1,3,'Unsafe_Unpark')
f(35,199,1,4,'oopDesc::address_field(int) const')
f(34,200,11,3,'pthread_cond_signal')
f(35,202,9,5,'entry_SYSCALL_64_after_hwframe')
f(36,202,9,5,'do_syscall_64')
f(37,202,9,5,'__x64_sys_futex')
f(38,203,8,5,'do_futex')
f(39,203,8,5,'futex_wake')
f(40,203,8,5,'wake_up_q')
f(41,204,7,5,'_raw_spin_unlock_irqrestore')
f(8,211,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,211,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,211,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(11,211,1,2,'cats/effect/IO.<init>',1,0,0)
f(3,212,12,1,'cats/effect/IOFiber.execR')
f(4,212,12,1,'cats/effect/IOFiber.runLoop')
f(5,219,2,2,'cats/effect/IO$FlatMap.ioe',2,0,0)
f(5,221,2,2,'cats/effect/IOFiber.next$2',2,0,0)
f(6,221,2,2,'kyo/bench/DeepBindBench$$Lambda$39.0x0000000800c8d588.apply',2,0,0)
f(7,222,1,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',1,0,0)
f(8,222,1,2,'kyo/bench/DeepBindBench.loop$2',1,0,0)
f(9,222,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,222,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial',1,0,0)
f(11,222,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,223,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(2,224,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,224,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,224,1,2,'java/util/Random.nextInt',1,0,0)
f(5,224,1,2,'java/util/concurrent/ThreadLocalRandom.next',1,0,0)
f(6,224,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(7,224,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(2,225,15,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,225,15,1,'java/util/concurrent/locks/LockSupport.park')
f(4,225,15,1,'jdk/internal/misc/Unsafe.park')
f(5,225,2,3,'Unsafe_Park')
f(6,225,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(6,226,1,4,'Parker::park(bool, long)')
f(5,227,12,3,'[unknown]')
f(6,227,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,227,8,5,'entry_SYSCALL_64_after_hwframe')
f(8,227,8,5,'do_syscall_64')
f(9,227,5,5,'__x64_sys_futex')
f(10,227,5,5,'do_futex')
f(11,227,5,5,'futex_wait')
f(12,228,4,5,'futex_wait_queue_me')
f(13,228,4,5,'schedule')
f(14,228,4,5,'__schedule')
f(15,228,4,5,'finish_task_switch.isra.0')
f(9,232,1,5,'syscall_enter_from_user_mode')
f(9,233,2,5,'syscall_exit_to_user_mode')
f(10,233,2,5,'exit_to_user_mode_prepare')
f(11,233,2,5,'exit_to_user_mode_loop')
f(12,233,2,5,'__rseq_handle_notify_resume')
f(13,234,1,5,'rseq_ip_fixup')
f(14,234,1,5,'__get_user_8')
f(6,235,3,3,'pthread_cond_wait')
f(6,238,1,3,'pthread_mutex_trylock')
f(5,239,1,4,'java_lang_Thread::set_thread_status(oopDesc*, JavaThreadStatus)')
f(1,240,22,1,'java/lang/Thread.run')
f(2,240,22,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,240,22,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,240,22,1,'java/util/concurrent/FutureTask.run')
f(5,240,22,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,240,22,1,'java/util/concurrent/FutureTask.run')
f(7,240,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,240,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,240,22,1,'java/lang/reflect/Method.invoke')
f(10,240,22,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,240,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,240,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,240,22,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_Throughput')
f(14,240,22,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,240,22,1,'kyo/bench/Bench.syncCats')
f(16,240,22,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,240,22,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,240,11,1,'cats/effect/IO.unsafeRunAsync')
f(19,240,11,1,'cats/effect/IO.unsafeRunFiber')
f(20,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,240,11,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,240,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,240,11,1,'jdk/internal/misc/Unsafe.unpark')
f(25,240,11,3,'pthread_cond_signal')
f(26,243,8,5,'entry_SYSCALL_64_after_hwframe')
f(27,243,8,5,'do_syscall_64')
f(28,243,8,5,'__x64_sys_futex')
f(29,243,8,5,'do_futex')
f(30,243,8,5,'futex_wake')
f(31,245,6,5,'wake_up_q')
f(32,245,6,5,'_raw_spin_unlock_irqrestore')
f(18,251,11,1,'scala/concurrent/package$.blocking')
f(19,251,11,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,251,11,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e130.apply')
f(21,251,11,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,251,11,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,251,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,251,11,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,251,11,1,'jdk/internal/misc/Unsafe.park')
f(26,252,2,3,'Unsafe_Park')
f(27,252,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,252,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,252,1,5,'do_syscall_64')
f(27,253,1,4,'Parker::park(bool, long)')
f(26,254,8,3,'[unknown]')
f(27,254,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,254,8,5,'entry_SYSCALL_64_after_hwframe')
f(29,254,8,5,'do_syscall_64')
f(30,254,8,5,'__x64_sys_futex')
f(31,254,8,5,'do_futex')
f(32,254,8,5,'futex_wait')
f(33,256,1,5,'_raw_spin_lock')
f(33,257,4,5,'futex_wait_queue_me')
f(34,257,1,5,'hrtimer_sleeper_start_expires')
f(35,257,1,5,'_raw_spin_unlock_irqrestore')
f(34,258,3,5,'schedule')
f(35,258,3,5,'__schedule')
f(36,258,3,5,'finish_task_switch.isra.0')
f(33,261,1,5,'futex_wait_setup')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,10773,3,'all')
f(1,0,10365,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10365,1,'cats/effect/IOFiber.run')
f(3,0,10175,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,10175,1,'cats/effect/IOFiber.runLoop')
f(5,0,6228,1,'cats/effect/IOFiber.next$2')
f(6,0,6228,1,'kyo/bench/DeepBindMapBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,0,6228,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,0,425,1,'cats/effect/IO$.apply')
f(9,0,425,1,'cats/effect/IO$.delay')
f(10,0,425,1,'cats/effect/IO$Delay$.apply')
f(11,0,425,2,'cats.effect.IO$Delay')
f(8,425,465,1,'cats/effect/IO.flatMap')
f(9,425,465,1,'cats/effect/IO$FlatMap$.apply')
f(10,425,465,2,'cats.effect.IO$FlatMap')
f(8,890,4706,1,'cats/effect/IO.map')
f(9,890,4706,1,'cats/effect/IO$Map$.apply')
f(10,890,4706,2,'cats.effect.IO$Map')
f(8,5596,632,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5596,632,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5596,632,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5596,300,2,'kyo.bench.DeepBindMapBench$$Lambda$107+0x0000000800d5cc00')
f(11,5896,332,2,'kyo.bench.DeepBindMapBench$$Lambda$95+0x0000000800d5b670')
f(5,6228,3651,1,'cats/effect/IOFiber.succeeded')
f(6,6228,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,6228,1,1,'cats/effect/IOFiber.done')
f(8,6228,1,1,'cats/effect/CallbackStack.apply')
f(9,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,6228,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d58ba8.applyVoid')
f(12,6228,1,1,'cats/effect/IO.$anonfun$6')
f(13,6228,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,6228,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,6228,1,1,'cats/effect/kernel/Outcome.fold')
f(16,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,6228,1,1,'cats/effect/IO$$Lambda$110.0x0000000800d609a8.applyVoid')
f(19,6228,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,6228,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,6228,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,6228,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,6228,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55568.applyVoid')
f(27,6228,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,6228,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,6228,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,6228,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,6228,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,6228,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,6228,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,6228,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(6,6229,957,1,'kyo/bench/DeepBindMapBench$$Lambda$107.0x0000000800d5cc00.apply')
f(7,6229,957,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,6229,957,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,6229,957,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,6229,499,1,'cats/effect/IO.flatMap')
f(11,6229,499,1,'cats/effect/IO$FlatMap$.apply')
f(12,6229,499,2,'cats.effect.IO$FlatMap')
f(10,6728,458,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6728,458,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial')
f(12,6728,458,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6728,458,2,'kyo.bench.DeepBindMapBench$$Lambda$94+0x0000000800d5b2a0')
f(6,7186,2693,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,7186,2693,1,'java/lang/Integer.valueOf')
f(8,7186,2693,2,'java.lang.Integer')
f(5,9879,296,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(6,9879,296,1,'java/lang/Integer.valueOf')
f(7,9879,296,2,'java.lang.Integer')
f(3,10175,49,1,'cats/effect/IOFiber.cedeR')
f(4,10175,49,1,'cats/effect/IOFiber.runLoop')
f(5,10175,44,1,'cats/effect/IOFiber.next$2')
f(6,10175,44,1,'kyo/bench/DeepBindMapBench$$Lambda$94.0x0000000800d5b2a0.apply')
f(7,10175,44,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,10175,1,1,'cats/effect/IO$.apply')
f(9,10175,1,1,'cats/effect/IO$.delay')
f(10,10175,1,1,'cats/effect/IO$Delay$.apply')
f(11,10175,1,2,'cats.effect.IO$Delay')
f(8,10176,3,1,'cats/effect/IO.flatMap')
f(9,10176,3,1,'cats/effect/IO$FlatMap$.apply')
f(10,10176,3,2,'cats.effect.IO$FlatMap')
f(8,10179,37,1,'cats/effect/IO.map')
f(9,10179,37,1,'cats/effect/IO$Map$.apply')
f(10,10179,37,2,'cats.effect.IO$Map')
f(8,10216,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,10216,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,10216,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,10216,1,2,'kyo.bench.DeepBindMapBench$$Lambda$107+0x0000000800d5cc00')
f(11,10217,2,2,'kyo.bench.DeepBindMapBench$$Lambda$95+0x0000000800d5b670')
f(5,10219,5,1,'cats/effect/IOFiber.succeeded')
f(6,10219,5,1,'kyo/bench/DeepBindMapBench$$Lambda$107.0x0000000800d5cc00.apply')
f(7,10219,5,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,10219,5,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,10219,5,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,10219,2,1,'cats/effect/IO.flatMap')
f(11,10219,2,1,'cats/effect/IO$FlatMap$.apply')
f(12,10219,2,2,'cats.effect.IO$FlatMap')
f(10,10221,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,10221,3,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial')
f(12,10221,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,10221,3,2,'kyo.bench.DeepBindMapBench$$Lambda$94+0x0000000800d5b2a0')
f(3,10224,141,1,'cats/effect/IOFiber.execR')
f(4,10224,1,1,'cats/effect/ArrayStack.init')
f(5,10224,1,2,'java.lang.Object[]')
f(4,10225,140,1,'cats/effect/ByteStack$.create')
f(5,10225,140,2,'int[]')
f(1,10365,405,1,'java/lang/Thread.run')
f(2,10365,405,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10365,405,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10365,405,1,'java/util/concurrent/FutureTask.run')
f(5,10365,405,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10365,405,1,'java/util/concurrent/FutureTask.run')
f(7,10365,405,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10365,405,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10365,405,1,'java/lang/reflect/Method.invoke')
f(10,10365,405,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10365,405,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10365,405,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10365,405,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,10365,402,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,10365,402,1,'kyo/bench/Bench.forkCats')
f(16,10365,5,1,'cats/effect/IO.flatMap')
f(17,10365,5,1,'cats/effect/IO$FlatMap$.apply')
f(18,10365,5,2,'cats.effect.IO$FlatMap')
f(16,10370,397,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10370,285,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10370,29,1,'cats/effect/IO.unsafeRunAsync')
f(19,10370,29,1,'cats/effect/IO.unsafeRunFiber')
f(20,10370,4,2,'cats.effect.IOFiber')
f(20,10374,2,5,'cats.effect.IOFiber')
f(20,10376,19,1,'cats/effect/IOFiber.<init>')
f(21,10376,7,1,'cats/effect/ArrayStack$.apply')
f(22,10376,7,2,'cats.effect.ArrayStack')
f(21,10383,6,1,'cats/effect/CallbackStack$.apply')
f(22,10383,6,2,'cats.effect.CallbackStack')
f(21,10389,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10389,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10389,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10389,6,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,10389,6,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d59fd0')
f(20,10395,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10395,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,10395,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10395,4,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,10395,4,2,'cats.effect.IO$$Lambda$90+0x0000000800d58ba8')
f(18,10399,26,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10399,26,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10399,26,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10399,26,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,10399,24,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55568')
f(22,10423,2,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5a9b0')
f(18,10425,51,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,10425,51,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,10425,51,2,'java.util.concurrent.locks.ReentrantLock')
f(18,10476,179,1,'scala/util/Either.fold')
f(19,10476,179,1,'cats/effect/IOPlatform$$Lambda$112.0x0000000800d61730.apply')
f(20,10476,179,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,10476,179,1,'scala/Some$.apply')
f(22,10476,179,2,'scala.Some')
f(17,10655,112,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,10655,112,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,10655,112,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,10655,112,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,10655,112,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,10655,112,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,10655,112,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,10655,112,2,'scala.concurrent.duration.FiniteDuration')
f(14,10767,3,2,'org.openjdk.jmh.results.ThroughputResult')
f(1,10770,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,10770,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,10770,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,10770,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,10770,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,10770,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,10770,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,10770,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,10770,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,10770,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,10770,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,10770,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,10770,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,294,3,'all')
f(1,0,2,3,'[unknown_Java]')
f(2,0,1,6,'cats/effect/IO$Map.tag',0,1,0)
f(2,1,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(1,2,291,1,'cats/effect/unsafe/WorkerThread.run')
f(2,2,291,1,'cats/effect/IOFiber.run')
f(3,2,288,1,'cats/effect/IOFiber.autoCedeR')
f(4,2,288,1,'cats/effect/IOFiber.runLoop')
f(5,9,10,2,'cats/effect/ByteStack$.push',10,0,0)
f(5,19,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,23,9,6,'cats/effect/IO$Map.tag',0,9,0)
f(5,32,2,6,'cats/effect/IO$Pure.tag',0,2,0)
f(5,34,102,2,'cats/effect/IOFiber.next$2',101,0,0)
f(6,34,102,2,'kyo/bench/DeepBindMapBench$$Lambda$94.0x0000000800d5ac70.apply',101,0,0)
f(7,53,83,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',82,0,0)
f(8,53,83,2,'scala/runtime/BoxesRunTime.boxToInteger',82,0,0)
f(9,135,1,4,'ClassLoaderData::holder_phantom() const')
f(5,136,2,2,'cats/effect/IOFiber.rescheduleFiber',2,0,0)
f(5,138,145,1,'cats/effect/IOFiber.succeeded')
f(6,173,2,2,'cats/effect/ArrayStack.pop',2,0,0)
f(6,175,18,2,'cats/effect/ByteStack$.pop',18,0,0)
f(7,183,10,2,'cats/effect/ByteStack$.peek',10,0,0)
f(6,193,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,193,1,1,'cats/effect/IOFiber.done')
f(8,193,1,1,'cats/effect/CallbackStack.apply')
f(9,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,193,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d58ba8.applyVoid')
f(12,193,1,1,'cats/effect/IO.$anonfun$6')
f(13,193,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,193,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,193,1,1,'cats/effect/kernel/Outcome.fold')
f(16,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,193,1,1,'cats/effect/IO$$Lambda$110.0x0000000800d609a8.applyVoid')
f(19,193,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,193,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,193,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,193,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,193,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55568.applyVoid')
f(27,193,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,193,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,193,1,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,193,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,193,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,193,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,193,1,1,'jdk/internal/misc/Unsafe.unpark')
f(34,193,1,3,'pthread_cond_signal')
f(35,193,1,5,'entry_SYSCALL_64_after_hwframe')
f(36,193,1,5,'do_syscall_64')
f(37,193,1,5,'__x64_sys_futex')
f(38,193,1,5,'do_futex')
f(39,193,1,5,'futex_wake')
f(40,193,1,5,'wake_up_q')
f(41,193,1,5,'_raw_spin_unlock_irqrestore')
f(6,194,42,3,'itable stub')
f(6,236,1,2,'kyo/bench/DeepBindMapBench$$Lambda$107.0x0000000800d5cc00.apply',1,0,0)
f(7,236,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1',1,0,0)
f(8,236,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12',1,0,0)
f(9,236,1,2,'kyo/bench/DeepBindMapBench.loop$2',1,0,0)
f(10,236,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(11,236,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial',1,0,0)
f(12,236,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(6,237,46,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,257,15,3,'itable stub')
f(7,272,2,1,'kyo/bench/DeepBindMapBench$$Lambda$100.0x0000000800d5f1f8.apply$mcII$sp')
f(7,274,3,1,'kyo/bench/DeepBindMapBench$$Lambda$101.0x0000000800d5f5e0.apply$mcII$sp')
f(7,277,1,1,'kyo/bench/DeepBindMapBench$$Lambda$102.0x0000000800d5f9c8.apply$mcII$sp')
f(7,278,1,1,'kyo/bench/DeepBindMapBench$$Lambda$104.0x0000000800d5d3e8.apply$mcII$sp')
f(7,279,2,1,'kyo/bench/DeepBindMapBench$$Lambda$105.0x0000000800d5d7d0.apply$mcII$sp')
f(7,281,1,1,'kyo/bench/DeepBindMapBench$$Lambda$106.0x0000000800d5dbb8.apply$mcII$sp')
f(7,282,1,1,'kyo/bench/DeepBindMapBench$$Lambda$99.0x0000000800d5ee10.apply$mcII$sp')
f(5,283,7,3,'vtable stub')
f(3,290,3,1,'cats/effect/IOFiber.cedeR')
f(4,290,3,1,'cats/effect/IOFiber.runLoop')
f(5,290,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,291,1,2,'cats/effect/IOFiber.next$2',1,0,0)
f(6,291,1,2,'kyo/bench/DeepBindMapBench$$Lambda$94.0x0000000800d5ac70.apply',1,0,0)
f(7,291,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',1,0,0)
f(8,291,1,2,'scala/runtime/BoxesRunTime.boxToInteger',1,0,0)
f(5,292,1,1,'cats/effect/IOFiber.succeeded')
f(6,292,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(1,293,1,1,'java/lang/Thread.run')
f(2,293,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,293,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,293,1,1,'java/util/concurrent/FutureTask.run')
f(5,293,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,293,1,1,'java/util/concurrent/FutureTask.run')
f(7,293,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,293,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,293,1,1,'java/lang/reflect/Method.invoke')
f(10,293,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,293,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,293,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,293,1,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,293,1,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,293,1,1,'kyo/bench/Bench.forkCats')
f(16,293,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,293,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,293,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,293,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,293,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,293,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,293,1,3,'Unsafe_AllocateInstance')
f(23,293,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(24,293,1,4,'MemAllocator::allocate() const')
f(25,293,1,4,'MemAllocator::Allocation::notify_allocation_jvmti_sampler()')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 416px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(26);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,11043,3,'all')
f(1,0,10591,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10591,1,'cats/effect/IOFiber.run')
f(3,0,10379,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,10379,1,'cats/effect/IOFiber.runLoop')
f(5,0,6361,1,'cats/effect/IOFiber.next$2')
f(6,0,6361,1,'kyo/bench/DeepBindMapBench$$Lambda$39.0x0000000800c8d588.apply')
f(7,0,6361,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,0,467,1,'cats/effect/IO$.apply')
f(9,0,467,1,'cats/effect/IO$.delay')
f(10,0,467,1,'cats/effect/IO$Delay$.apply')
f(11,0,467,2,'cats.effect.IO$Delay')
f(8,467,448,1,'cats/effect/IO.flatMap')
f(9,467,448,1,'cats/effect/IO$FlatMap$.apply')
f(10,467,448,2,'cats.effect.IO$FlatMap')
f(8,915,4789,1,'cats/effect/IO.map')
f(9,915,4789,1,'cats/effect/IO$Map$.apply')
f(10,915,4789,2,'cats.effect.IO$Map')
f(8,5704,657,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5704,657,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5704,657,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5704,307,2,'kyo.bench.DeepBindMapBench$$Lambda$106+0x0000000800d593e8')
f(11,6011,350,2,'kyo.bench.DeepBindMapBench$$Lambda$94+0x0000000800d5ea20')
f(5,6361,3707,1,'cats/effect/IOFiber.succeeded')
f(6,6361,920,1,'kyo/bench/DeepBindMapBench$$Lambda$106.0x0000000800d593e8.apply')
f(7,6361,920,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,6361,920,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,6361,920,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,6361,437,1,'cats/effect/IO.flatMap')
f(11,6361,437,1,'cats/effect/IO$FlatMap$.apply')
f(12,6361,437,2,'cats.effect.IO$FlatMap')
f(10,6798,483,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6798,483,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(12,6798,483,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6798,483,2,'kyo.bench.DeepBindMapBench$$Lambda$39+0x0000000800c8d588')
f(6,7281,2787,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,7281,2787,1,'java/lang/Integer.valueOf')
f(8,7281,2787,2,'java.lang.Integer')
f(5,10068,311,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(6,10068,311,1,'java/lang/Integer.valueOf')
f(7,10068,311,2,'java.lang.Integer')
f(3,10379,212,1,'cats/effect/IOFiber.execR')
f(4,10379,1,1,'cats/effect/ArrayStack.init')
f(5,10379,1,2,'java.lang.Object[]')
f(4,10380,143,1,'cats/effect/ByteStack$.create')
f(5,10380,143,2,'int[]')
f(4,10523,68,1,'cats/effect/IOFiber.runLoop')
f(5,10523,62,1,'cats/effect/IOFiber.next$2')
f(6,10523,62,1,'kyo/bench/DeepBindMapBench$$Lambda$39.0x0000000800c8d588.apply')
f(7,10523,62,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,10523,2,1,'cats/effect/IO$.apply')
f(9,10523,2,1,'cats/effect/IO$.delay')
f(10,10523,2,1,'cats/effect/IO$Delay$.apply')
f(11,10523,2,2,'cats.effect.IO$Delay')
f(8,10525,6,1,'cats/effect/IO.flatMap')
f(9,10525,6,1,'cats/effect/IO$FlatMap$.apply')
f(10,10525,6,2,'cats.effect.IO$FlatMap')
f(8,10531,48,1,'cats/effect/IO.map')
f(9,10531,48,1,'cats/effect/IO$Map$.apply')
f(10,10531,48,2,'cats.effect.IO$Map')
f(8,10579,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,10579,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,10579,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,10579,3,2,'kyo.bench.DeepBindMapBench$$Lambda$106+0x0000000800d593e8')
f(11,10582,3,2,'kyo.bench.DeepBindMapBench$$Lambda$94+0x0000000800d5ea20')
f(5,10585,6,1,'cats/effect/IOFiber.succeeded')
f(6,10585,6,1,'kyo/bench/DeepBindMapBench$$Lambda$106.0x0000000800d593e8.apply')
f(7,10585,6,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,10585,6,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,10585,6,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,10585,3,1,'cats/effect/IO.flatMap')
f(11,10585,3,1,'cats/effect/IO$FlatMap$.apply')
f(12,10585,3,2,'cats.effect.IO$FlatMap')
f(10,10588,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,10588,3,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(12,10588,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,10588,3,2,'kyo.bench.DeepBindMapBench$$Lambda$39+0x0000000800c8d588')
f(1,10591,448,1,'java/lang/Thread.run')
f(2,10591,448,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10591,448,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10591,448,1,'java/util/concurrent/FutureTask.run')
f(5,10591,448,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10591,448,1,'java/util/concurrent/FutureTask.run')
f(7,10591,448,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10591,448,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10591,448,1,'java/lang/reflect/Method.invoke')
f(10,10591,448,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10591,448,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10591,448,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10591,448,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,10591,448,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,10591,448,1,'kyo/bench/Bench.syncCats')
f(16,10591,439,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10591,437,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10591,315,1,'cats/effect/IO.unsafeRunAsync')
f(19,10591,314,1,'cats/effect/IO.unsafeRunFiber')
f(20,10591,27,5,'cats.effect.IOFiber')
f(20,10618,229,1,'cats/effect/IOFiber.<init>')
f(21,10618,94,1,'cats/effect/ArrayStack$.apply')
f(22,10618,94,2,'cats.effect.ArrayStack')
f(21,10712,27,1,'cats/effect/CallbackStack$.apply')
f(22,10712,27,2,'cats.effect.CallbackStack')
f(21,10739,58,1,'cats/effect/IO$.async')
f(22,10739,29,2,'cats.effect.IO$$anon$3')
f(22,10768,29,1,'cats/effect/IO$IOCont$.apply')
f(23,10768,29,2,'cats.effect.IO$IOCont')
f(21,10797,23,1,'cats/effect/IO$.uncancelable')
f(22,10797,23,1,'cats/effect/IO$Uncancelable$.apply')
f(23,10797,23,2,'cats.effect.IO$Uncancelable')
f(21,10820,27,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10820,27,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10820,27,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10820,27,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,10820,27,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d160')
f(20,10847,28,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,10847,28,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,10847,28,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,10847,28,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,10847,28,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,10875,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10875,30,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,10875,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10875,30,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,10875,30,2,'cats.effect.IO$$Lambda$90+0x0000000800d5c530')
f(19,10905,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,10905,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,10905,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,10905,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,10905,1,2,'cats.effect.IO$$Lambda$88+0x0000000800d56e38')
f(18,10906,31,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,10937,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10937,30,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10937,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10937,30,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,10937,1,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d56770')
f(22,10938,29,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5df28')
f(18,10967,9,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,10967,9,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,10967,2,2,'java.lang.Object[]')
f(20,10969,2,2,'java.util.concurrent.locks.ReentrantLock')
f(20,10971,1,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,10971,1,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,10972,4,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,10972,4,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,10972,4,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,10976,26,1,'scala/concurrent/package$.blocking')
f(19,10976,26,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,10976,26,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5df28.apply')
f(21,10976,26,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,10976,26,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,10976,26,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,10976,26,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,11002,26,1,'scala/util/Either.fold')
f(19,11002,26,1,'cats/effect/IOPlatform$$Lambda$111.0x0000000800d65190.apply')
f(20,11002,26,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,11002,26,1,'scala/Some$.apply')
f(22,11002,26,2,'scala.Some')
f(17,11028,2,2,'scala.concurrent.duration.package$DurationLong')
f(16,11030,9,1,'kyo/bench/DeepBindMapBench.catsBench')
f(17,11030,9,1,'kyo/bench/DeepBindMapBench.loop$2')
f(18,11030,4,1,'cats/effect/IO.flatMap')
f(19,11030,4,1,'cats/effect/IO$FlatMap$.apply')
f(20,11030,4,2,'cats.effect.IO$FlatMap')
f(18,11034,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,11034,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800c89000.newInvokeSpecial')
f(20,11034,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,11034,5,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,11034,5,2,'kyo.bench.DeepBindMapBench$$Lambda$39+0x0000000800c8d588')
f(1,11039,4,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,11039,4,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,11039,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,11039,4,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,11039,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,11039,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,11039,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,11039,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,11039,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,11039,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,11039,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,11039,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,11039,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,11042,1,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,11042,1,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,11042,1,1,'java/lang/ClassLoader.loadClass')
f(10,11042,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,11042,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,11042,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,11042,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,11042,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,11042,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,11042,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,11042,1,1,'java/util/jar/JarFile.getEntry')
f(18,11042,1,1,'java/util/zip/ZipFile.getEntry')
f(19,11042,1,1,'java/util/zip/ZipFile$Source.getEntryPos')
f(20,11042,1,1,'java/util/zip/ZipCoder$UTF8ZipCoder.toString')
f(21,11042,1,1,'java/lang/System$2.newStringUTF8NoRepl')
f(22,11042,1,1,'java/lang/String.newStringUTF8NoRepl')
f(23,11042,1,1,'java/util/Arrays.copyOfRange')
f(24,11042,1,2,'byte[]')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 352px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(22);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,294,3,'all')
f(1,0,8,3,'[unknown_Java]')
f(2,0,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,1,7,6,'cats/effect/IO$Map.tag',0,7,0)
f(1,8,285,1,'cats/effect/unsafe/WorkerThread.run')
f(2,8,284,1,'cats/effect/IOFiber.run')
f(3,8,284,1,'cats/effect/IOFiber.autoCedeR')
f(4,8,284,1,'cats/effect/IOFiber.runLoop')
f(5,22,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,23,13,2,'cats/effect/ByteStack$.push',13,0,0)
f(5,36,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,40,19,6,'cats/effect/IO$Map.tag',0,19,0)
f(5,59,78,2,'cats/effect/IOFiber.next$2',78,0,0)
f(6,59,78,2,'kyo/bench/DeepBindMapBench$$Lambda$39.0x0000000800c8d588.apply',78,0,0)
f(7,67,70,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',70,0,0)
f(8,76,61,2,'scala/runtime/BoxesRunTime.boxToInteger',61,0,0)
f(5,137,5,2,'cats/effect/IOFiber.shouldFinalize',5,0,0)
f(5,142,141,1,'cats/effect/IOFiber.succeeded')
f(6,175,9,2,'cats/effect/ArrayStack.pop',9,0,0)
f(6,184,11,2,'cats/effect/ByteStack$.pop',11,0,0)
f(7,189,6,2,'cats/effect/ByteStack$.peek',6,0,0)
f(6,195,36,3,'itable stub')
f(6,231,1,2,'kyo/bench/DeepBindMapBench$$Lambda$106.0x0000000800d593e8.apply',1,0,0)
f(7,231,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1',1,0,0)
f(8,231,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12',1,0,0)
f(9,231,1,2,'kyo/bench/DeepBindMapBench.loop$2',1,0,0)
f(10,231,1,2,'cats/effect/IO.flatMap',1,0,0)
f(11,231,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(6,232,51,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,258,15,3,'itable stub')
f(7,273,3,2,'java/lang/Integer.valueOf',3,0,0)
f(7,276,1,1,'kyo/bench/DeepBindMapBench$$Lambda$102.0x0000000800d5b388.apply$mcII$sp')
f(7,277,1,1,'kyo/bench/DeepBindMapBench$$Lambda$103.0x0000000800d5b770.apply$mcII$sp')
f(7,278,3,1,'kyo/bench/DeepBindMapBench$$Lambda$104.0x0000000800d5bb58.apply$mcII$sp')
f(7,281,1,1,'kyo/bench/DeepBindMapBench$$Lambda$105.0x0000000800d59000.apply$mcII$sp')
f(7,282,1,1,'kyo/bench/DeepBindMapBench$$Lambda$97.0x0000000800d5a000.apply$mcII$sp')
f(5,283,9,3,'vtable stub')
f(2,292,1,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,292,1,1,'java/util/concurrent/locks/LockSupport.park')
f(4,292,1,1,'jdk/internal/misc/Unsafe.park')
f(1,293,1,1,'java/lang/Thread.run')
f(2,293,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,293,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,293,1,1,'java/util/concurrent/FutureTask.run')
f(5,293,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,293,1,1,'java/util/concurrent/FutureTask.run')
f(7,293,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,293,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,293,1,1,'java/lang/reflect/Method.invoke')
f(10,293,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,293,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,293,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,293,1,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,293,1,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,293,1,1,'kyo/bench/Bench.syncCats')
f(16,293,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,293,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,293,1,6,'cats/effect/IO.unsafeRunAsync',0,1,0)
f(19,293,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(20,293,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(21,293,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 416px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(26);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,19231,3,'all')
f(1,0,18767,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18767,1,'cats/effect/IOFiber.run')
f(3,0,18412,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,18412,1,'cats/effect/IOFiber.runLoop')
f(5,0,916,2,'cats.effect.IOFiber$$anon$1')
f(5,916,2872,1,'cats/effect/IO$$$Lambda$108.0x0000000800d7f6a8.apply')
f(6,916,2872,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,916,851,2,'cats.effect.IODeferred')
f(7,1767,2021,1,'cats/effect/IODeferred.<init>')
f(8,1767,890,1,'cats/effect/CallbackStack$.apply')
f(9,1767,890,2,'cats.effect.CallbackStack')
f(8,2657,604,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,3261,527,2,'java.util.concurrent.atomic.AtomicReference')
f(5,3788,2713,1,'cats/effect/IOFiber.succeeded')
f(6,3788,844,1,'kyo/bench/EnqueueDequeueBench$$Lambda$107.0x0000000800d7eb70.apply')
f(7,3788,844,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,3788,413,1,'cats/effect/IO.flatMap')
f(9,3788,413,1,'cats/effect/IO$FlatMap$.apply')
f(10,3788,413,2,'cats.effect.IO$FlatMap')
f(8,4201,431,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d80800.linkToTargetMethod')
f(9,4201,431,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d80000.newInvokeSpecial')
f(10,4201,431,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,4201,431,2,'kyo.bench.EnqueueDequeueBench$$Lambda$111+0x0000000800d84840')
f(6,4632,1869,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d84840.apply')
f(7,4632,1869,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,4632,1869,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,4632,547,1,'cats/effect/IO.flatMap')
f(10,4632,547,1,'cats/effect/IO$FlatMap$.apply')
f(11,4632,547,2,'cats.effect.IO$FlatMap')
f(9,5179,877,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,5179,428,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,5179,428,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,5179,428,1,'cats/effect/IO$.uncancelable')
f(13,5179,428,1,'cats/effect/IO$Uncancelable$.apply')
f(14,5179,428,2,'cats.effect.IO$Uncancelable')
f(10,5607,449,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,5607,449,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,5607,449,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,5607,449,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$106+0x0000000800d7e7a0')
f(9,6056,445,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d80800.linkToTargetMethod')
f(10,6056,445,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d80000.newInvokeSpecial')
f(11,6056,445,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,6056,445,2,'kyo.bench.EnqueueDequeueBench$$Lambda$107+0x0000000800d7eb70')
f(5,6501,4434,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d7ac10.apply')
f(6,6501,4434,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,6501,4434,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,6501,2235,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$110.0x0000000800d84470.apply')
f(9,6501,2235,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$11')
f(10,6501,304,1,'cats/effect/IO$$anon$2.unit')
f(11,6501,304,1,'cats/Applicative.unit$')
f(12,6501,304,1,'cats/Applicative.unit')
f(13,6501,304,1,'cats/effect/IO$$anon$2.pure')
f(14,6501,304,1,'cats/effect/IO$$anon$2.pure')
f(15,6501,304,1,'cats/effect/IO$.pure')
f(16,6501,304,1,'cats/effect/IO$Pure$.apply')
f(17,6501,304,2,'cats.effect.IO$Pure')
f(10,6805,592,1,'cats/effect/std/Queue$State$.apply')
f(11,6805,592,2,'cats.effect.std.Queue$State')
f(10,7397,460,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,7397,460,2,'scala.Tuple2')
f(10,7857,879,1,'scala/collection/immutable/Queue.enqueue')
f(11,7857,382,2,'scala.collection.immutable.$colon$colon')
f(11,8239,497,2,'scala.collection.immutable.Queue')
f(8,8736,2199,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d84fe0.apply')
f(9,8736,2199,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,8736,231,1,'cats/effect/IO$$anon$2.pure')
f(11,8736,231,1,'cats/effect/IO$$anon$2.pure')
f(12,8736,231,1,'cats/effect/IO$.pure')
f(13,8736,231,1,'cats/effect/IO$Pure$.apply')
f(14,8736,231,2,'cats.effect.IO$Pure')
f(10,8967,583,1,'cats/effect/std/Queue$State$.apply')
f(11,8967,583,2,'cats.effect.std.Queue$State')
f(10,9550,478,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,9550,478,2,'scala.Tuple2')
f(10,10028,907,1,'scala/collection/immutable/Queue.dequeue')
f(11,10028,419,2,'scala.collection.immutable.Queue')
f(11,10447,488,1,'scala/collection/immutable/List.reverse')
f(12,10447,488,1,'scala/collection/immutable/List.$colon$colon')
f(13,10447,488,2,'scala.collection.immutable.$colon$colon')
f(5,10935,1557,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7e7a0.apply')
f(6,10935,1557,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,10935,409,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,10935,409,1,'cats/FlatMap$Ops.flatMap$')
f(9,10935,409,1,'cats/FlatMap$Ops.flatMap')
f(10,10935,409,1,'cats/effect/IO$$anon$2.flatMap')
f(11,10935,409,1,'cats/effect/IO$$anon$2.flatMap')
f(12,10935,409,1,'cats/effect/IO.flatMap')
f(13,10935,409,1,'cats/effect/IO$FlatMap$.apply')
f(14,10935,409,2,'cats.effect.IO$FlatMap')
f(7,11344,670,1,'cats/effect/IO$$anon$2.deferred')
f(8,11344,670,1,'cats/effect/IO$$anon$2.deferred')
f(9,11344,670,1,'cats/effect/IO$.deferred')
f(10,11344,443,1,'cats/effect/IO$.apply')
f(11,11344,443,1,'cats/effect/IO$.delay')
f(12,11344,443,1,'cats/effect/IO$Delay$.apply')
f(13,11344,443,2,'cats.effect.IO$Delay')
f(10,11787,227,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,11787,227,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,11787,227,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,11787,227,2,'cats.effect.IO$$$Lambda$108+0x0000000800d7f6a8')
f(7,12014,478,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,12014,478,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,12014,478,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,12014,478,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d7fbc8')
f(5,12492,2048,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d7fbc8.apply')
f(6,12492,2048,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,12492,966,1,'cats/effect/kernel/SyncRef.modify')
f(8,12492,503,1,'cats/effect/IO$$anon$2.delay')
f(9,12492,503,1,'cats/effect/IO$$anon$2.delay')
f(10,12492,503,1,'cats/effect/IO$.apply')
f(11,12492,503,1,'cats/effect/IO$.delay')
f(12,12492,503,1,'cats/effect/IO$Delay$.apply')
f(13,12492,503,2,'cats.effect.IO$Delay')
f(8,12995,463,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,12995,463,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,12995,463,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,12995,463,2,'cats.effect.kernel.SyncRef$$Lambda$100+0x0000000800d7ac10')
f(7,13458,399,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,13458,399,1,'cats/effect/IO$$anon$2.flatten')
f(9,13458,399,1,'cats/FlatMap.flatten$')
f(10,13458,399,1,'cats/FlatMap.flatten')
f(11,13458,399,1,'cats/effect/IO$$anon$2.flatMap')
f(12,13458,399,1,'cats/effect/IO$$anon$2.flatMap')
f(13,13458,399,1,'cats/effect/IO.flatMap')
f(14,13458,399,1,'cats/effect/IO$FlatMap$.apply')
f(15,13458,399,2,'cats.effect.IO$FlatMap')
f(7,13857,683,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,13857,683,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,13857,683,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,13857,683,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$110+0x0000000800d84470')
f(5,14540,2060,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d84c10.apply')
f(6,14540,2060,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1')
f(7,14540,914,1,'cats/effect/kernel/SyncRef.modify')
f(8,14540,484,1,'cats/effect/IO$$anon$2.delay')
f(9,14540,484,1,'cats/effect/IO$$anon$2.delay')
f(10,14540,484,1,'cats/effect/IO$.apply')
f(11,14540,484,1,'cats/effect/IO$.delay')
f(12,14540,484,1,'cats/effect/IO$Delay$.apply')
f(13,14540,484,2,'cats.effect.IO$Delay')
f(8,15024,430,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,15024,430,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,15024,430,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,15024,430,2,'cats.effect.kernel.SyncRef$$Lambda$100+0x0000000800d7ac10')
f(7,15454,459,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,15454,459,1,'cats/effect/IO$$anon$2.flatten')
f(9,15454,459,1,'cats/FlatMap.flatten$')
f(10,15454,459,1,'cats/FlatMap.flatten')
f(11,15454,459,1,'cats/effect/IO$$anon$2.flatMap')
f(12,15454,459,1,'cats/effect/IO$$anon$2.flatMap')
f(13,15454,459,1,'cats/effect/IO.flatMap')
f(14,15454,459,1,'cats/effect/IO$FlatMap$.apply')
f(15,15454,459,2,'cats.effect.IO$FlatMap')
f(7,15913,687,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d82800.linkToTargetMethod')
f(8,15913,687,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d82000.newInvokeSpecial')
f(9,15913,687,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,15913,687,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$113+0x0000000800d84fe0')
f(5,16600,1812,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$98.0x0000000800d79188.apply')
f(6,16600,1812,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2')
f(7,16600,460,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,16600,460,1,'cats/FlatMap$Ops.flatMap$')
f(9,16600,460,1,'cats/FlatMap$Ops.flatMap')
f(10,16600,460,1,'cats/effect/IO$$anon$2.flatMap')
f(11,16600,460,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16600,460,1,'cats/effect/IO.flatMap')
f(13,16600,460,1,'cats/effect/IO$FlatMap$.apply')
f(14,16600,460,2,'cats.effect.IO$FlatMap')
f(7,17060,760,1,'cats/effect/IO$$anon$2.deferred')
f(8,17060,760,1,'cats/effect/IO$$anon$2.deferred')
f(9,17060,760,1,'cats/effect/IO$.deferred')
f(10,17060,465,1,'cats/effect/IO$.apply')
f(11,17060,465,1,'cats/effect/IO$.delay')
f(12,17060,465,1,'cats/effect/IO$Delay$.apply')
f(13,17060,465,2,'cats.effect.IO$Delay')
f(10,17525,295,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,17525,295,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,17525,295,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,17525,295,2,'cats.effect.IO$$$Lambda$108+0x0000000800d7f6a8')
f(7,17820,592,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d81800.linkToTargetMethod')
f(8,17820,592,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d81000.newInvokeSpecial')
f(9,17820,592,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,17820,592,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d84c10')
f(3,18412,118,1,'cats/effect/IOFiber.cedeR')
f(4,18412,118,1,'cats/effect/IOFiber.runLoop')
f(5,18412,7,2,'cats.effect.IOFiber$$anon$1')
f(5,18419,10,1,'cats/effect/IO$$$Lambda$108.0x0000000800d7f6a8.apply')
f(6,18419,10,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,18419,4,2,'cats.effect.IODeferred')
f(7,18423,6,1,'cats/effect/IODeferred.<init>')
f(8,18423,3,1,'cats/effect/CallbackStack$.apply')
f(9,18423,3,2,'cats.effect.CallbackStack')
f(8,18426,3,2,'java.util.concurrent.atomic.AtomicReference')
f(5,18429,22,1,'cats/effect/IOFiber.succeeded')
f(6,18429,11,1,'kyo/bench/EnqueueDequeueBench$$Lambda$107.0x0000000800d7eb70.apply')
f(7,18429,11,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,18429,5,1,'cats/effect/IO.flatMap')
f(9,18429,5,1,'cats/effect/IO$FlatMap$.apply')
f(10,18429,5,2,'cats.effect.IO$FlatMap')
f(8,18434,6,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d80800.linkToTargetMethod')
f(9,18434,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d80000.newInvokeSpecial')
f(10,18434,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18434,6,2,'kyo.bench.EnqueueDequeueBench$$Lambda$111+0x0000000800d84840')
f(6,18440,11,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d84840.apply')
f(7,18440,11,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,18440,11,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,18440,3,1,'cats/effect/IO.flatMap')
f(10,18440,3,1,'cats/effect/IO$FlatMap$.apply')
f(11,18440,3,2,'cats.effect.IO$FlatMap')
f(9,18443,4,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,18443,2,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,18443,2,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,18443,2,1,'cats/effect/IO$.uncancelable')
f(13,18443,2,1,'cats/effect/IO$Uncancelable$.apply')
f(14,18443,2,2,'cats.effect.IO$Uncancelable')
f(10,18445,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18445,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18445,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18445,2,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$106+0x0000000800d7e7a0')
f(9,18447,4,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d80800.linkToTargetMethod')
f(10,18447,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d80000.newInvokeSpecial')
f(11,18447,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18447,4,2,'kyo.bench.EnqueueDequeueBench$$Lambda$107+0x0000000800d7eb70')
f(5,18451,21,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d7ac10.apply')
f(6,18451,21,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,18451,21,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,18451,16,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$110.0x0000000800d84470.apply')
f(9,18451,16,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$11')
f(10,18451,1,1,'cats/effect/IO$$anon$2.unit')
f(11,18451,1,1,'cats/Applicative.unit$')
f(12,18451,1,1,'cats/Applicative.unit')
f(13,18451,1,1,'cats/effect/IO$$anon$2.pure')
f(14,18451,1,1,'cats/effect/IO$$anon$2.pure')
f(15,18451,1,1,'cats/effect/IO$.pure')
f(16,18451,1,1,'cats/effect/IO$Pure$.apply')
f(17,18451,1,2,'cats.effect.IO$Pure')
f(10,18452,4,1,'cats/effect/std/Queue$State$.apply')
f(11,18452,4,2,'cats.effect.std.Queue$State')
f(10,18456,3,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,18456,3,2,'scala.Tuple2')
f(10,18459,8,1,'scala/collection/immutable/Queue.enqueue')
f(11,18459,2,2,'scala.collection.immutable.$colon$colon')
f(11,18461,6,2,'scala.collection.immutable.Queue')
f(8,18467,5,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d84fe0.apply')
f(9,18467,5,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,18467,1,1,'cats/effect/std/Queue$State$.apply')
f(11,18467,1,2,'cats.effect.std.Queue$State')
f(10,18468,2,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,18468,2,2,'scala.Tuple2')
f(10,18470,2,1,'scala/collection/immutable/Queue.dequeue')
f(11,18470,2,1,'scala/collection/immutable/List.reverse')
f(12,18470,2,1,'scala/collection/immutable/List.$colon$colon')
f(13,18470,2,2,'scala.collection.immutable.$colon$colon')
f(5,18472,8,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7e7a0.apply')
f(6,18472,8,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,18472,2,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,18472,2,1,'cats/FlatMap$Ops.flatMap$')
f(9,18472,2,1,'cats/FlatMap$Ops.flatMap')
f(10,18472,2,1,'cats/effect/IO$$anon$2.flatMap')
f(11,18472,2,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18472,2,1,'cats/effect/IO.flatMap')
f(13,18472,2,1,'cats/effect/IO$FlatMap$.apply')
f(14,18472,2,2,'cats.effect.IO$FlatMap')
f(7,18474,3,1,'cats/effect/IO$$anon$2.deferred')
f(8,18474,3,1,'cats/effect/IO$$anon$2.deferred')
f(9,18474,3,1,'cats/effect/IO$.deferred')
f(10,18474,3,1,'cats/effect/IO$.apply')
f(11,18474,3,1,'cats/effect/IO$.delay')
f(12,18474,3,1,'cats/effect/IO$Delay$.apply')
f(13,18474,3,2,'cats.effect.IO$Delay')
f(7,18477,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,18477,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,18477,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18477,3,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d7fbc8')
f(5,18480,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d7fbc8.apply')
f(6,18480,10,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,18480,4,1,'cats/effect/kernel/SyncRef.modify')
f(8,18480,1,1,'cats/effect/IO$$anon$2.delay')
f(9,18480,1,1,'cats/effect/IO$$anon$2.delay')
f(10,18480,1,1,'cats/effect/IO$.apply')
f(11,18480,1,1,'cats/effect/IO$.delay')
f(12,18480,1,1,'cats/effect/IO$Delay$.apply')
f(13,18480,1,2,'cats.effect.IO$Delay')
f(8,18481,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18481,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18481,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18481,3,2,'cats.effect.kernel.SyncRef$$Lambda$100+0x0000000800d7ac10')
f(7,18484,2,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18484,2,1,'cats/effect/IO$$anon$2.flatten')
f(9,18484,2,1,'cats/FlatMap.flatten$')
f(10,18484,2,1,'cats/FlatMap.flatten')
f(11,18484,2,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18484,2,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18484,2,1,'cats/effect/IO.flatMap')
f(14,18484,2,1,'cats/effect/IO$FlatMap$.apply')
f(15,18484,2,2,'cats.effect.IO$FlatMap')
f(7,18486,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,18486,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,18486,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18486,4,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$110+0x0000000800d84470')
f(5,18490,16,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d84c10.apply')
f(6,18490,16,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1')
f(7,18490,7,1,'cats/effect/kernel/SyncRef.modify')
f(8,18490,6,1,'cats/effect/IO$$anon$2.delay')
f(9,18490,6,1,'cats/effect/IO$$anon$2.delay')
f(10,18490,6,1,'cats/effect/IO$.apply')
f(11,18490,6,1,'cats/effect/IO$.delay')
f(12,18490,6,1,'cats/effect/IO$Delay$.apply')
f(13,18490,6,2,'cats.effect.IO$Delay')
f(8,18496,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18496,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18496,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18496,1,2,'cats.effect.kernel.SyncRef$$Lambda$100+0x0000000800d7ac10')
f(7,18497,3,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18497,3,1,'cats/effect/IO$$anon$2.flatten')
f(9,18497,3,1,'cats/FlatMap.flatten$')
f(10,18497,3,1,'cats/FlatMap.flatten')
f(11,18497,3,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18497,3,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18497,3,1,'cats/effect/IO.flatMap')
f(14,18497,3,1,'cats/effect/IO$FlatMap$.apply')
f(15,18497,3,2,'cats.effect.IO$FlatMap')
f(7,18500,6,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d82800.linkToTargetMethod')
f(8,18500,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d82000.newInvokeSpecial')
f(9,18500,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18500,6,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$113+0x0000000800d84fe0')
f(5,18506,24,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$98.0x0000000800d79188.apply')
f(6,18506,24,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2')
f(7,18506,2,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,18506,2,1,'cats/FlatMap$Ops.flatMap$')
f(9,18506,2,1,'cats/FlatMap$Ops.flatMap')
f(10,18506,2,1,'cats/effect/IO$$anon$2.flatMap')
f(11,18506,2,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18506,2,1,'cats/effect/IO.flatMap')
f(13,18506,2,1,'cats/effect/IO$FlatMap$.apply')
f(14,18506,2,2,'cats.effect.IO$FlatMap')
f(7,18508,6,1,'cats/effect/IO$$anon$2.deferred')
f(8,18508,6,1,'cats/effect/IO$$anon$2.deferred')
f(9,18508,6,1,'cats/effect/IO$.deferred')
f(10,18508,3,1,'cats/effect/IO$.apply')
f(11,18508,3,1,'cats/effect/IO$.delay')
f(12,18508,3,1,'cats/effect/IO$Delay$.apply')
f(13,18508,3,2,'cats.effect.IO$Delay')
f(10,18511,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18511,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18511,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18511,3,2,'cats.effect.IO$$$Lambda$108+0x0000000800d7f6a8')
f(7,18514,16,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d81800.linkToTargetMethod')
f(8,18514,16,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d81000.newInvokeSpecial')
f(9,18514,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18514,16,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d84c10')
f(3,18530,237,1,'cats/effect/IOFiber.execR')
f(4,18530,237,1,'cats/effect/ByteStack$.create')
f(5,18530,237,2,'int[]')
f(1,18767,461,1,'java/lang/Thread.run')
f(2,18767,461,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18767,461,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18767,461,1,'java/util/concurrent/FutureTask.run')
f(5,18767,461,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18767,461,1,'java/util/concurrent/FutureTask.run')
f(7,18767,461,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18767,461,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18767,461,1,'java/lang/reflect/Method.invoke')
f(10,18767,461,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18767,461,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18767,461,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18767,461,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_Throughput')
f(14,18767,461,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,18767,461,1,'kyo/bench/Bench.forkCats')
f(16,18767,3,1,'cats/effect/IO.flatMap')
f(17,18767,3,1,'cats/effect/IO$FlatMap$.apply')
f(18,18767,3,2,'cats.effect.IO$FlatMap')
f(16,18770,458,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18770,332,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18770,15,1,'cats/effect/IO.unsafeRunAsync')
f(19,18770,15,1,'cats/effect/IO.unsafeRunFiber')
f(20,18770,2,2,'cats.effect.IOFiber')
f(20,18772,1,5,'cats.effect.IOFiber')
f(20,18773,7,1,'cats/effect/IOFiber.<init>')
f(21,18773,2,1,'cats/effect/ArrayStack$.apply')
f(22,18773,2,2,'cats.effect.ArrayStack')
f(21,18775,3,1,'cats/effect/IO$.async')
f(22,18775,3,2,'cats.effect.IO$$anon$3')
f(21,18778,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,18778,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,18778,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,18778,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,18778,2,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5a1e8')
f(20,18780,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,18780,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,18780,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,18780,5,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,18780,5,2,'cats.effect.IO$$Lambda$90+0x0000000800d58dc0')
f(18,18785,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,18785,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,18785,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,18785,29,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,18785,23,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55760')
f(22,18808,6,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5a9c0')
f(18,18814,47,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,18814,47,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,18814,46,2,'java.util.concurrent.locks.ReentrantLock')
f(20,18860,1,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,18860,1,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,18860,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,18861,241,1,'scala/util/Either.fold')
f(19,18861,241,1,'cats/effect/IOPlatform$$Lambda$118.0x0000000800d86d00.apply')
f(20,18861,241,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,18861,241,1,'scala/Some$.apply')
f(22,18861,241,2,'scala.Some')
f(17,19102,126,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,19102,126,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,19102,126,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,19102,126,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,19102,126,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,19102,126,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,19102,126,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,19102,126,2,'scala.concurrent.duration.FiniteDuration')
f(1,19228,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,19228,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,19228,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,19228,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,19228,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,19228,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,19228,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,19228,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,19228,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,19228,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,19228,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,19228,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,19228,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 592px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(37);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,300,3,'all')
f(1,0,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,8,3,'thread_native_entry(Thread*)')
f(3,0,8,4,'Thread::call_run()')
f(4,0,7,4,'JavaThread::thread_main_inner()')
f(5,0,7,4,'CompileBroker::compiler_thread_loop()')
f(6,0,7,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,7,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,7,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'CallGenerator::for_inline(ciMethod*, float)')
f(10,0,1,4,'InlineTree::check_can_parse(ciMethod*)')
f(11,0,1,4,'ciMethod::get_flow_analysis()')
f(12,0,1,4,'ciTypeFlow::do_flow()')
f(13,0,1,4,'ciTypeFlow::flow_types()')
f(14,0,1,4,'ciTypeFlow::Block::Block(ciTypeFlow*, ciBlock*, ciTypeFlow::JsrSet*)')
f(9,1,3,4,'Compile::Code_Gen()')
f(10,1,1,4,'Matcher::match()')
f(11,1,1,4,'Matcher::xform(Node*, int)')
f(12,1,1,4,'Matcher::match_tree(Node const*)')
f(10,2,2,4,'PhaseChaitin::Register_Allocate()')
f(11,2,1,4,'PhaseChaitin::gather_lrg_masks(bool)')
f(12,2,1,4,'MachCallJavaNode::in_RegMask(unsigned int) const')
f(11,3,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,3,1,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(9,4,2,4,'Compile::Optimize()')
f(10,4,1,4,'Compile::final_graph_reshaping() [clone .part.0]')
f(11,4,1,4,'Compile::final_graph_reshaping_walk(Node_Stack&, Node*, Final_Reshape_Counts&)')
f(10,5,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,5,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,5,1,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(9,6,1,4,'ParseGenerator::generate(JVMState*)')
f(10,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,6,1,4,'Parse::do_all_blocks()')
f(12,6,1,4,'Parse::do_one_block()')
f(13,6,1,4,'Parse::do_field_access(bool, bool)')
f(14,6,1,4,'Parse::do_put_xxx(Node*, ciField*, bool)')
f(15,6,1,4,'GraphKit::access_store_at(Node*, Node*, TypePtr const*, Node*, Type const*, BasicType, unsigned long)')
f(16,6,1,4,'BarrierSetC2::store_at(C2Access&, C2AccessValue&) const')
f(17,6,1,4,'ModRefBarrierSetC2::store_at_resolved(C2Access&, C2AccessValue&) const')
f(18,6,1,4,'G1BarrierSetC2::post_barrier(GraphKit*, Node*, Node*, Node*, Node*, unsigned int, Node*, BasicType, bool) const')
f(19,6,1,4,'URShiftLNode::bottom_type() const')
f(4,7,1,4,'VMThread::run()')
f(5,7,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,7,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,7,1,4,'VM_Operation::evaluate()')
f(8,7,1,4,'VM_G1CollectForAllocation::doit()')
f(9,7,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,7,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,7,1,4,'G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo&, G1RedirtyCardsQueueSet*, G1ParScanThreadStateSet*)')
f(12,7,1,4,'void WeakProcessor::weak_oops_do<G1STWIsAliveClosure, G1KeepAliveClosure>(WorkGang*, G1STWIsAliveClosure*, G1KeepAliveClosure*, WeakProcessorTimes*)')
f(1,8,8,3,'[unknown_Java]')
f(2,8,1,1,'cats/FlatMap$$Lambda$101.0x0000000800d7b0d8.apply')
f(2,9,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(2,11,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(2,14,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(2,15,1,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d84840.apply')
f(1,16,283,1,'cats/effect/unsafe/WorkerThread.run')
f(2,16,283,1,'cats/effect/IOFiber.run')
f(3,16,281,1,'cats/effect/IOFiber.autoCedeR')
f(4,16,281,1,'cats/effect/IOFiber.runLoop')
f(5,41,1,1,'cats/FlatMap$$Lambda$101.0x0000000800d7b0d8.apply')
f(5,42,11,6,'cats/effect/IO$Delay.tag',0,11,0)
f(5,53,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,57,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(5,58,10,6,'cats/effect/IO$Uncancelable.tag',0,10,0)
f(5,68,4,2,'cats/effect/IOFiber$$anon$1.<init>',4,0,0)
f(5,72,38,2,'cats/effect/IOFiber.rescheduleFiber',38,0,0)
f(6,72,38,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',38,0,0)
f(7,91,1,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',1,0,0)
f(7,92,18,2,'cats/effect/unsafe/WorkerThread.reschedule',18,0,0)
f(8,105,5,2,'cats/effect/unsafe/LocalQueue.isEmpty',5,0,0)
f(9,107,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',3,0,0)
f(5,110,2,2,'cats/effect/IOFiber.shouldFinalize',2,0,0)
f(5,112,38,1,'cats/effect/IOFiber.succeeded')
f(6,118,5,2,'cats/effect/ArrayStack.pop',5,0,0)
f(6,123,5,2,'cats/effect/ByteStack$.pop',5,0,0)
f(7,125,3,2,'cats/effect/ByteStack$.peek',3,0,0)
f(6,128,9,3,'itable stub')
f(6,137,4,1,'kyo/bench/EnqueueDequeueBench$$Lambda$107.0x0000000800d7eb70.apply')
f(7,138,3,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1',3,0,0)
f(8,139,2,2,'cats/effect/IO.flatMap',2,0,0)
f(9,139,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(6,141,9,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d84840.apply')
f(7,143,7,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1',7,0,0)
f(8,144,6,2,'kyo/bench/EnqueueDequeueBench.loop$1',6,0,0)
f(9,144,2,2,'cats/effect/IO.flatMap',2,0,0)
f(10,144,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(9,146,3,2,'cats/effect/std/Queue$AbstractQueue.offer',3,0,0)
f(10,146,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(11,146,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(12,146,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(13,146,1,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(10,147,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(11,147,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(12,147,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(9,149,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d80800.linkToTargetMethod',1,0,0)
f(10,149,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d80000.newInvokeSpecial',1,0,0)
f(11,149,1,2,'kyo/bench/EnqueueDequeueBench$$Lambda$107.0x0000000800d7eb70.<init>',1,0,0)
f(5,150,65,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d7ac10.apply')
f(6,150,65,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,150,65,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,165,24,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$110.0x0000000800d84470.apply',23,0,0)
f(9,167,22,2,'cats/effect/std/Queue$AbstractQueue.$anonfun$11',21,0,0)
f(10,167,3,2,'cats/effect/IO$$anon$2.unit',3,0,0)
f(11,167,3,2,'cats/Applicative.unit$',3,0,0)
f(12,167,3,2,'cats/Applicative.unit',3,0,0)
f(13,167,3,2,'cats/effect/IO$$anon$2.pure',3,0,0)
f(14,167,3,2,'cats/effect/IO$$anon$2.pure',3,0,0)
f(15,167,3,2,'cats/effect/IO$.pure',3,0,0)
f(16,167,3,2,'cats/effect/IO$Pure$.apply',3,0,0)
f(10,170,1,1,'cats/effect/std/Queue$State$.apply')
f(11,170,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,170,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(13,170,1,4,'MemAllocator::allocate() const')
f(14,170,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(15,170,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,171,3,2,'scala/Predef$ArrowAssoc$.$minus$greater$extension',3,0,0)
f(10,174,8,2,'scala/collection/AbstractIterable.nonEmpty',8,0,0)
f(11,174,8,2,'scala/collection/IterableOnceOps.nonEmpty$',8,0,0)
f(12,174,8,2,'scala/collection/IterableOnceOps.nonEmpty',8,0,0)
f(13,174,8,2,'scala/collection/immutable/Queue.isEmpty',8,0,0)
f(10,182,7,2,'scala/collection/immutable/Queue.enqueue',7,0,0)
f(11,183,6,2,'scala/collection/immutable/Queue.<init>',6,0,0)
f(8,189,15,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d84fe0.apply',1,0,0)
f(9,190,14,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,193,2,2,'scala/collection/AbstractIterable.nonEmpty',2,0,0)
f(11,193,2,2,'scala/collection/IterableOnceOps.nonEmpty$',2,0,0)
f(12,193,2,2,'scala/collection/IterableOnceOps.nonEmpty',2,0,0)
f(13,193,2,2,'scala/collection/immutable/Queue.isEmpty',2,0,0)
f(10,195,5,2,'scala/collection/immutable/Queue.dequeue',5,0,0)
f(11,195,1,2,'scala/collection/immutable/List.equals',1,0,0)
f(11,196,4,2,'scala/collection/immutable/List.reverse',4,0,0)
f(12,199,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(13,199,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(14,199,1,2,'scala/collection/immutable/List.<init>',1,0,0)
f(15,199,1,2,'scala/collection/immutable/AbstractSeq.<init>',1,0,0)
f(10,200,4,2,'scala/collection/immutable/Queue.isEmpty',4,0,0)
f(11,200,4,2,'scala/collection/immutable/Queue.out',4,0,0)
f(8,204,10,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',10,0,0)
f(9,204,10,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',10,0,0)
f(10,204,10,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',10,0,0)
f(8,214,1,2,'java/util/concurrent/atomic/AtomicReference.get',1,0,0)
f(5,215,31,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7e7a0.apply',31,0,0)
f(6,217,29,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2',29,0,0)
f(7,230,3,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',3,0,0)
f(8,230,3,2,'cats/FlatMap$Ops.flatMap$',3,0,0)
f(9,230,3,2,'cats/FlatMap$Ops.flatMap',3,0,0)
f(10,230,3,2,'cats/effect/IO$$anon$2.flatMap',3,0,0)
f(11,230,3,2,'cats/effect/IO$$anon$2.flatMap',3,0,0)
f(12,230,3,2,'cats/effect/IO.flatMap',3,0,0)
f(13,230,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(14,231,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(15,231,1,2,'cats/effect/IO.<init>',1,0,0)
f(16,231,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(13,232,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(7,233,13,2,'cats/effect/IO$$anon$2.deferred',13,0,0)
f(8,233,13,2,'cats/effect/IO$$anon$2.deferred',13,0,0)
f(9,233,13,2,'cats/effect/IO$.deferred',13,0,0)
f(10,233,9,2,'cats/effect/IO$.apply',9,0,0)
f(11,233,9,2,'cats/effect/IO$.delay',9,0,0)
f(12,233,9,2,'cats/effect/IO$Delay$.apply',9,0,0)
f(10,242,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(11,242,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(12,245,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,246,13,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d7fbc8.apply')
f(6,248,11,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1',10,0,0)
f(7,248,7,2,'cats/effect/kernel/SyncRef.modify',6,0,0)
f(8,249,4,2,'cats/effect/IO$$anon$2.delay',4,0,0)
f(9,249,4,2,'cats/effect/IO$$anon$2.delay',4,0,0)
f(10,249,4,2,'cats/effect/IO$.apply',4,0,0)
f(11,249,4,2,'cats/effect/IO$.delay',4,0,0)
f(12,249,3,2,'cats/effect/IO$Delay$.apply',3,0,0)
f(12,252,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(8,253,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(9,253,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(10,253,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,254,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,254,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(13,254,1,4,'MemAllocator::allocate() const')
f(14,254,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(15,254,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(16,254,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(17,254,1,4,'G1Policy::preventive_collection_required(unsigned int)')
f(7,255,2,2,'cats/syntax/FlattenOps$.flatten$extension',2,0,0)
f(8,255,2,2,'cats/effect/IO$$anon$2.flatten',2,0,0)
f(9,255,2,2,'cats/FlatMap.flatten$',2,0,0)
f(10,255,2,2,'cats/FlatMap.flatten',2,0,0)
f(11,255,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,255,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(13,255,2,2,'cats/effect/IO.flatMap',2,0,0)
f(14,255,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(7,257,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(8,257,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial',2,0,0)
f(9,257,2,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$110.0x0000000800d84470.<init>',2,0,0)
f(5,259,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d84c10.apply')
f(6,261,8,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1',8,0,0)
f(7,261,3,2,'cats/effect/kernel/SyncRef.modify',3,0,0)
f(8,261,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(9,261,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(10,261,3,2,'cats/effect/IO$.apply',3,0,0)
f(11,261,3,2,'cats/effect/IO$.delay',3,0,0)
f(12,261,3,2,'cats/effect/IO$Delay$.apply',3,0,0)
f(7,264,4,2,'cats/syntax/FlattenOps$.flatten$extension',4,0,0)
f(8,264,4,2,'cats/effect/IO$$anon$2.flatten',4,0,0)
f(9,264,4,2,'cats/FlatMap.flatten$',4,0,0)
f(10,264,4,2,'cats/FlatMap.flatten',4,0,0)
f(11,264,4,2,'cats/effect/IO$$anon$2.flatMap',4,0,0)
f(12,264,4,2,'cats/effect/IO$$anon$2.flatMap',4,0,0)
f(13,264,4,2,'cats/effect/IO.flatMap',4,0,0)
f(14,264,4,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(7,268,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d82800.linkToTargetMethod',1,0,0)
f(8,268,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d82000.newInvokeSpecial',1,0,0)
f(9,268,1,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d84fe0.<init>',1,0,0)
f(5,269,6,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$98.0x0000000800d79188.apply',6,0,0)
f(6,269,6,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2',6,0,0)
f(7,271,4,2,'cats/effect/IO$$anon$2.deferred',4,0,0)
f(8,271,4,2,'cats/effect/IO$$anon$2.deferred',4,0,0)
f(9,271,4,2,'cats/effect/IO$.deferred',4,0,0)
f(10,271,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(11,271,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(5,275,4,3,'itable stub')
f(5,279,18,3,'vtable stub')
f(3,297,2,1,'cats/effect/IOFiber.cedeR')
f(4,297,2,1,'cats/effect/IOFiber.runLoop')
f(5,297,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,298,1,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d7ac10.apply')
f(6,298,1,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,298,1,1,'cats/effect/kernel/SyncRef.spin$4')
f(1,299,1,1,'java/lang/Thread.run')
f(2,299,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,299,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,299,1,1,'java/util/concurrent/FutureTask.run')
f(5,299,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,299,1,1,'java/util/concurrent/FutureTask.run')
f(7,299,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,299,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,299,1,1,'java/lang/reflect/Method.invoke')
f(10,299,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,299,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,299,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,299,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_Throughput')
f(14,299,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,299,1,1,'kyo/bench/Bench.forkCats')
f(16,299,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,299,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,299,1,1,'scala/concurrent/package$.blocking')
f(19,299,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,299,1,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5abc8.apply')
f(21,299,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,299,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,299,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,299,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,299,1,1,'jdk/internal/misc/Unsafe.park')
f(26,299,1,3,'[unknown]')
f(27,299,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,299,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,299,1,5,'do_syscall_64')
f(30,299,1,5,'__x64_sys_futex')
f(31,299,1,5,'do_futex')
f(32,299,1,5,'futex_wait')
f(33,299,1,5,'futex_wait_queue_me')
f(34,299,1,5,'schedule')
f(35,299,1,5,'__schedule')
f(36,299,1,5,'finish_task_switch.isra.0')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 432px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(27);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,19093,3,'all')
f(1,0,18451,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18451,1,'cats/effect/IOFiber.run')
f(3,0,18103,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,18103,1,'cats/effect/IOFiber.runLoop')
f(5,0,920,2,'cats.effect.IOFiber$$anon$1')
f(5,920,2992,1,'cats/effect/IO$$$Lambda$107.0x0000000800d80768.apply')
f(6,920,2992,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,920,958,2,'cats.effect.IODeferred')
f(7,1878,2034,1,'cats/effect/IODeferred.<init>')
f(8,1878,898,1,'cats/effect/CallbackStack$.apply')
f(9,1878,898,2,'cats.effect.CallbackStack')
f(8,2776,558,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,3334,578,2,'java.util.concurrent.atomic.AtomicReference')
f(5,3912,2618,1,'cats/effect/IOFiber.succeeded')
f(6,3912,898,1,'kyo/bench/EnqueueDequeueBench$$Lambda$106.0x0000000800d7f7d0.apply')
f(7,3912,898,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,3912,464,1,'cats/effect/IO.flatMap')
f(9,3912,464,1,'cats/effect/IO$FlatMap$.apply')
f(10,3912,464,2,'cats.effect.IO$FlatMap')
f(8,4376,434,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(9,4376,434,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(10,4376,434,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,4376,434,2,'kyo.bench.EnqueueDequeueBench$$Lambda$110+0x0000000800d81898')
f(6,4810,1720,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d81898.apply')
f(7,4810,1720,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,4810,1720,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,4810,479,1,'cats/effect/IO.flatMap')
f(10,4810,479,1,'cats/effect/IO$FlatMap$.apply')
f(11,4810,479,2,'cats.effect.IO$FlatMap')
f(9,5289,807,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,5289,396,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,5289,396,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,5289,396,1,'cats/effect/IO$.uncancelable')
f(13,5289,396,1,'cats/effect/IO$Uncancelable$.apply')
f(14,5289,396,2,'cats.effect.IO$Uncancelable')
f(10,5685,411,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,5685,411,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,5685,411,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,5685,411,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$105+0x0000000800d7f400')
f(9,6096,434,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(10,6096,434,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(11,6096,434,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,6096,434,2,'kyo.bench.EnqueueDequeueBench$$Lambda$106+0x0000000800d7f7d0')
f(5,6530,4342,1,'cats/effect/kernel/SyncRef$$Lambda$99.0x0000000800d7ba98.apply')
f(6,6530,4342,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,6530,4342,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,6530,2180,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d814c8.apply')
f(9,6530,2180,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$11')
f(10,6530,271,1,'cats/effect/IO$$anon$2.unit')
f(11,6530,271,1,'cats/Applicative.unit$')
f(12,6530,271,1,'cats/Applicative.unit')
f(13,6530,271,1,'cats/effect/IO$$anon$2.pure')
f(14,6530,271,1,'cats/effect/IO$$anon$2.pure')
f(15,6530,271,1,'cats/effect/IO$.pure')
f(16,6530,271,1,'cats/effect/IO$Pure$.apply')
f(17,6530,271,2,'cats.effect.IO$Pure')
f(10,6801,598,1,'cats/effect/std/Queue$State$.apply')
f(11,6801,598,2,'cats.effect.std.Queue$State')
f(10,7399,434,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,7399,434,2,'scala.Tuple2')
f(10,7833,877,1,'scala/collection/immutable/Queue.enqueue')
f(11,7833,412,2,'scala.collection.immutable.$colon$colon')
f(11,8245,465,2,'scala.collection.immutable.Queue')
f(8,8710,2162,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d82038.apply')
f(9,8710,2162,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,8710,277,1,'cats/effect/IO$$anon$2.pure')
f(11,8710,277,1,'cats/effect/IO$$anon$2.pure')
f(12,8710,277,1,'cats/effect/IO$.pure')
f(13,8710,277,1,'cats/effect/IO$Pure$.apply')
f(14,8710,277,2,'cats.effect.IO$Pure')
f(10,8987,559,1,'cats/effect/std/Queue$State$.apply')
f(11,8987,559,2,'cats.effect.std.Queue$State')
f(10,9546,434,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,9546,434,2,'scala.Tuple2')
f(10,9980,892,1,'scala/collection/immutable/Queue.dequeue')
f(11,9980,465,2,'scala.collection.immutable.Queue')
f(11,10445,427,1,'scala/collection/immutable/List.reverse')
f(12,10445,427,1,'scala/collection/immutable/List.$colon$colon')
f(13,10445,427,2,'scala.collection.immutable.$colon$colon')
f(5,10872,1587,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f400.apply')
f(6,10872,1587,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,10872,473,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,10872,473,1,'cats/FlatMap$Ops.flatMap$')
f(9,10872,473,1,'cats/FlatMap$Ops.flatMap')
f(10,10872,473,1,'cats/effect/IO$$anon$2.flatMap')
f(11,10872,473,1,'cats/effect/IO$$anon$2.flatMap')
f(12,10872,473,1,'cats/effect/IO.flatMap')
f(13,10872,473,1,'cats/effect/IO$FlatMap$.apply')
f(14,10872,473,2,'cats.effect.IO$FlatMap')
f(7,11345,644,1,'cats/effect/IO$$anon$2.deferred')
f(8,11345,644,1,'cats/effect/IO$$anon$2.deferred')
f(9,11345,644,1,'cats/effect/IO$.deferred')
f(10,11345,386,1,'cats/effect/IO$.apply')
f(11,11345,386,1,'cats/effect/IO$.delay')
f(12,11345,386,1,'cats/effect/IO$Delay$.apply')
f(13,11345,386,2,'cats.effect.IO$Delay')
f(10,11731,258,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,11731,258,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,11731,258,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,11731,258,2,'cats.effect.IO$$$Lambda$107+0x0000000800d80768')
f(7,11989,470,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,11989,470,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,11989,470,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,11989,470,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$108+0x0000000800d80c88')
f(5,12459,1877,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80c88.apply')
f(6,12459,1877,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,12459,896,1,'cats/effect/kernel/SyncRef.modify')
f(8,12459,472,1,'cats/effect/IO$$anon$2.delay')
f(9,12459,472,1,'cats/effect/IO$$anon$2.delay')
f(10,12459,472,1,'cats/effect/IO$.apply')
f(11,12459,472,1,'cats/effect/IO$.delay')
f(12,12459,472,1,'cats/effect/IO$Delay$.apply')
f(13,12459,472,2,'cats.effect.IO$Delay')
f(8,12931,424,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,12931,424,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,12931,424,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,12931,424,2,'cats.effect.kernel.SyncRef$$Lambda$99+0x0000000800d7ba98')
f(7,13355,390,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,13355,390,1,'cats/effect/IO$$anon$2.flatten')
f(9,13355,390,1,'cats/FlatMap.flatten$')
f(10,13355,390,1,'cats/FlatMap.flatten')
f(11,13355,390,1,'cats/effect/IO$$anon$2.flatMap')
f(12,13355,390,1,'cats/effect/IO$$anon$2.flatMap')
f(13,13355,390,1,'cats/effect/IO.flatMap')
f(14,13355,390,1,'cats/effect/IO$FlatMap$.apply')
f(15,13355,390,2,'cats.effect.IO$FlatMap')
f(7,13745,591,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,13745,591,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(9,13745,591,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,13745,591,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d814c8')
f(5,14336,2029,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d81c68.apply')
f(6,14336,2029,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1')
f(7,14336,917,1,'cats/effect/kernel/SyncRef.modify')
f(8,14336,425,1,'cats/effect/IO$$anon$2.delay')
f(9,14336,425,1,'cats/effect/IO$$anon$2.delay')
f(10,14336,425,1,'cats/effect/IO$.apply')
f(11,14336,425,1,'cats/effect/IO$.delay')
f(12,14336,425,1,'cats/effect/IO$Delay$.apply')
f(13,14336,425,2,'cats.effect.IO$Delay')
f(8,14761,492,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,14761,492,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,14761,492,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,14761,492,2,'cats.effect.kernel.SyncRef$$Lambda$99+0x0000000800d7ba98')
f(7,15253,412,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,15253,412,1,'cats/effect/IO$$anon$2.flatten')
f(9,15253,412,1,'cats/FlatMap.flatten$')
f(10,15253,412,1,'cats/FlatMap.flatten')
f(11,15253,412,1,'cats/effect/IO$$anon$2.flatMap')
f(12,15253,412,1,'cats/effect/IO$$anon$2.flatMap')
f(13,15253,412,1,'cats/effect/IO.flatMap')
f(14,15253,412,1,'cats/effect/IO$FlatMap$.apply')
f(15,15253,412,2,'cats.effect.IO$FlatMap')
f(7,15665,700,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85800.linkToTargetMethod')
f(8,15665,700,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85000.newInvokeSpecial')
f(9,15665,700,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,15665,700,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d82038')
f(5,16365,1738,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$97.0x0000000800d7a010.apply')
f(6,16365,1738,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2')
f(7,16365,457,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,16365,457,1,'cats/FlatMap$Ops.flatMap$')
f(9,16365,457,1,'cats/FlatMap$Ops.flatMap')
f(10,16365,457,1,'cats/effect/IO$$anon$2.flatMap')
f(11,16365,457,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16365,457,1,'cats/effect/IO.flatMap')
f(13,16365,457,1,'cats/effect/IO$FlatMap$.apply')
f(14,16365,457,2,'cats.effect.IO$FlatMap')
f(7,16822,725,1,'cats/effect/IO$$anon$2.deferred')
f(8,16822,725,1,'cats/effect/IO$$anon$2.deferred')
f(9,16822,725,1,'cats/effect/IO$.deferred')
f(10,16822,478,1,'cats/effect/IO$.apply')
f(11,16822,478,1,'cats/effect/IO$.delay')
f(12,16822,478,1,'cats/effect/IO$Delay$.apply')
f(13,16822,478,2,'cats.effect.IO$Delay')
f(10,17300,247,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,17300,247,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,17300,247,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,17300,247,2,'cats.effect.IO$$$Lambda$107+0x0000000800d80768')
f(7,17547,556,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84800.linkToTargetMethod')
f(8,17547,556,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84000.newInvokeSpecial')
f(9,17547,556,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,17547,556,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$111+0x0000000800d81c68')
f(3,18103,348,1,'cats/effect/IOFiber.execR')
f(4,18103,237,1,'cats/effect/ByteStack$.create')
f(5,18103,237,2,'int[]')
f(4,18340,111,1,'cats/effect/IOFiber.runLoop')
f(5,18340,4,2,'cats.effect.IOFiber$$anon$1')
f(5,18344,15,1,'cats/effect/IO$$$Lambda$107.0x0000000800d80768.apply')
f(6,18344,15,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,18344,6,2,'cats.effect.IODeferred')
f(7,18350,9,1,'cats/effect/IODeferred.<init>')
f(8,18350,3,1,'cats/effect/CallbackStack$.apply')
f(9,18350,3,2,'cats.effect.CallbackStack')
f(8,18353,4,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,18357,2,2,'java.util.concurrent.atomic.AtomicReference')
f(5,18359,19,1,'cats/effect/IOFiber.succeeded')
f(6,18359,8,1,'kyo/bench/EnqueueDequeueBench$$Lambda$106.0x0000000800d7f7d0.apply')
f(7,18359,8,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,18359,4,1,'cats/effect/IO.flatMap')
f(9,18359,4,1,'cats/effect/IO$FlatMap$.apply')
f(10,18359,4,2,'cats.effect.IO$FlatMap')
f(8,18363,4,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(9,18363,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(10,18363,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18363,4,2,'kyo.bench.EnqueueDequeueBench$$Lambda$110+0x0000000800d81898')
f(6,18367,11,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d81898.apply')
f(7,18367,11,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,18367,11,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,18367,2,1,'cats/effect/IO.flatMap')
f(10,18367,2,1,'cats/effect/IO$FlatMap$.apply')
f(11,18367,2,2,'cats.effect.IO$FlatMap')
f(9,18369,7,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,18369,4,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,18369,4,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,18369,4,1,'cats/effect/IO$.uncancelable')
f(13,18369,4,1,'cats/effect/IO$Uncancelable$.apply')
f(14,18369,4,2,'cats.effect.IO$Uncancelable')
f(10,18373,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18373,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18373,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18373,3,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$105+0x0000000800d7f400')
f(9,18376,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(10,18376,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(11,18376,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,18376,2,2,'kyo.bench.EnqueueDequeueBench$$Lambda$106+0x0000000800d7f7d0')
f(5,18378,21,1,'cats/effect/kernel/SyncRef$$Lambda$99.0x0000000800d7ba98.apply')
f(6,18378,21,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,18378,21,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,18378,11,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d814c8.apply')
f(9,18378,11,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$11')
f(10,18378,1,1,'cats/effect/IO$$anon$2.unit')
f(11,18378,1,1,'cats/Applicative.unit$')
f(12,18378,1,1,'cats/Applicative.unit')
f(13,18378,1,1,'cats/effect/IO$$anon$2.pure')
f(14,18378,1,1,'cats/effect/IO$$anon$2.pure')
f(15,18378,1,1,'cats/effect/IO$.pure')
f(16,18378,1,1,'cats/effect/IO$Pure$.apply')
f(17,18378,1,2,'cats.effect.IO$Pure')
f(10,18379,5,1,'cats/effect/std/Queue$State$.apply')
f(11,18379,5,2,'cats.effect.std.Queue$State')
f(10,18384,3,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,18384,3,2,'scala.Tuple2')
f(10,18387,2,1,'scala/collection/immutable/Queue.enqueue')
f(11,18387,1,2,'scala.collection.immutable.$colon$colon')
f(11,18388,1,2,'scala.collection.immutable.Queue')
f(8,18389,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d82038.apply')
f(9,18389,10,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,18389,1,1,'cats/effect/IO$$anon$2.pure')
f(11,18389,1,1,'cats/effect/IO$$anon$2.pure')
f(12,18389,1,1,'cats/effect/IO$.pure')
f(13,18389,1,1,'cats/effect/IO$Pure$.apply')
f(14,18389,1,2,'cats.effect.IO$Pure')
f(10,18390,3,1,'cats/effect/std/Queue$State$.apply')
f(11,18390,3,2,'cats.effect.std.Queue$State')
f(10,18393,3,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,18393,3,2,'scala.Tuple2')
f(10,18396,3,1,'scala/collection/immutable/Queue.dequeue')
f(11,18396,2,2,'scala.collection.immutable.Queue')
f(11,18398,1,1,'scala/collection/immutable/List.reverse')
f(12,18398,1,1,'scala/collection/immutable/List.$colon$colon')
f(13,18398,1,2,'scala.collection.immutable.$colon$colon')
f(5,18399,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f400.apply')
f(6,18399,10,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,18399,3,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,18399,3,1,'cats/FlatMap$Ops.flatMap$')
f(9,18399,3,1,'cats/FlatMap$Ops.flatMap')
f(10,18399,3,1,'cats/effect/IO$$anon$2.flatMap')
f(11,18399,3,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18399,3,1,'cats/effect/IO.flatMap')
f(13,18399,3,1,'cats/effect/IO$FlatMap$.apply')
f(14,18399,3,2,'cats.effect.IO$FlatMap')
f(7,18402,2,1,'cats/effect/IO$$anon$2.deferred')
f(8,18402,2,1,'cats/effect/IO$$anon$2.deferred')
f(9,18402,2,1,'cats/effect/IO$.deferred')
f(10,18402,2,1,'cats/effect/IO$.apply')
f(11,18402,2,1,'cats/effect/IO$.delay')
f(12,18402,2,1,'cats/effect/IO$Delay$.apply')
f(13,18402,2,2,'cats.effect.IO$Delay')
f(7,18404,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,18404,5,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,18404,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18404,5,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$108+0x0000000800d80c88')
f(5,18409,13,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80c88.apply')
f(6,18409,13,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,18409,5,1,'cats/effect/kernel/SyncRef.modify')
f(8,18409,5,1,'cats/effect/IO$$anon$2.delay')
f(9,18409,5,1,'cats/effect/IO$$anon$2.delay')
f(10,18409,5,1,'cats/effect/IO$.apply')
f(11,18409,5,1,'cats/effect/IO$.delay')
f(12,18409,5,1,'cats/effect/IO$Delay$.apply')
f(13,18409,5,2,'cats.effect.IO$Delay')
f(7,18414,1,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18414,1,1,'cats/effect/IO$$anon$2.flatten')
f(9,18414,1,1,'cats/FlatMap.flatten$')
f(10,18414,1,1,'cats/FlatMap.flatten')
f(11,18414,1,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18414,1,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18414,1,1,'cats/effect/IO.flatMap')
f(14,18414,1,1,'cats/effect/IO$FlatMap$.apply')
f(15,18414,1,2,'cats.effect.IO$FlatMap')
f(7,18415,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,18415,7,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(9,18415,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18415,7,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d814c8')
f(5,18422,22,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d81c68.apply')
f(6,18422,22,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1')
f(7,18422,11,1,'cats/effect/kernel/SyncRef.modify')
f(8,18422,2,1,'cats/effect/IO$$anon$2.delay')
f(9,18422,2,1,'cats/effect/IO$$anon$2.delay')
f(10,18422,2,1,'cats/effect/IO$.apply')
f(11,18422,2,1,'cats/effect/IO$.delay')
f(12,18422,2,1,'cats/effect/IO$Delay$.apply')
f(13,18422,2,2,'cats.effect.IO$Delay')
f(8,18424,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18424,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18424,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18424,9,2,'cats.effect.kernel.SyncRef$$Lambda$99+0x0000000800d7ba98')
f(7,18433,3,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18433,3,1,'cats/effect/IO$$anon$2.flatten')
f(9,18433,3,1,'cats/FlatMap.flatten$')
f(10,18433,3,1,'cats/FlatMap.flatten')
f(11,18433,3,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18433,3,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18433,3,1,'cats/effect/IO.flatMap')
f(14,18433,3,1,'cats/effect/IO$FlatMap$.apply')
f(15,18433,3,2,'cats.effect.IO$FlatMap')
f(7,18436,8,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85800.linkToTargetMethod')
f(8,18436,8,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85000.newInvokeSpecial')
f(9,18436,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18436,8,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d82038')
f(5,18444,7,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$97.0x0000000800d7a010.apply')
f(6,18444,7,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2')
f(7,18444,2,1,'cats/effect/IO$$anon$2.deferred')
f(8,18444,2,1,'cats/effect/IO$$anon$2.deferred')
f(9,18444,2,1,'cats/effect/IO$.deferred')
f(10,18444,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,18444,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,18444,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,18444,2,2,'cats.effect.IO$$$Lambda$107+0x0000000800d80768')
f(7,18446,5,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84800.linkToTargetMethod')
f(8,18446,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84000.newInvokeSpecial')
f(9,18446,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18446,5,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$111+0x0000000800d81c68')
f(1,18451,639,1,'java/lang/Thread.run')
f(2,18451,639,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18451,639,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18451,639,1,'java/util/concurrent/FutureTask.run')
f(5,18451,639,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18451,639,1,'java/util/concurrent/FutureTask.run')
f(7,18451,639,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18451,639,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18451,639,1,'java/lang/reflect/Method.invoke')
f(10,18451,639,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18451,639,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18451,639,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18451,639,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_Throughput')
f(14,18451,639,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,18451,639,1,'kyo/bench/Bench.syncCats')
f(16,18451,510,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18451,467,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18451,299,1,'cats/effect/IO.unsafeRunAsync')
f(19,18451,295,1,'cats/effect/IO.unsafeRunFiber')
f(20,18451,6,2,'cats.effect.IOFiber')
f(20,18457,86,5,'cats.effect.IOFiber')
f(20,18543,170,1,'cats/effect/IOFiber.<init>')
f(21,18543,122,1,'cats/effect/ArrayStack$.apply')
f(22,18543,122,2,'cats.effect.ArrayStack')
f(21,18665,22,1,'cats/effect/IO$.uncancelable')
f(22,18665,22,1,'cats/effect/IO$Uncancelable$.apply')
f(23,18665,22,2,'cats.effect.IO$Uncancelable')
f(21,18687,26,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,18687,26,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,18687,26,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,18687,26,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,18687,1,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d78200')
f(25,18688,25,2,'cats.effect.IOFiber$$Lambda$95+0x0000000800d787f0')
f(20,18713,31,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,18713,31,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,18713,31,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,18713,31,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,18713,31,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,18744,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,18744,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(22,18744,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,18744,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,18744,2,2,'cats.effect.IO$$Lambda$93+0x0000000800d75530')
f(19,18746,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,18746,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,18746,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,18746,4,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,18746,4,2,'cats.effect.IO$$Lambda$91+0x0000000800d76e28')
f(18,18750,1,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,18751,31,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,18751,31,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,18751,31,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,18751,31,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,18751,31,2,'cats.effect.IOPlatform$$Lambda$96+0x0000000800d791d0')
f(18,18782,99,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,18782,99,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,18782,27,2,'java.lang.Object[]')
f(20,18809,30,2,'java.util.concurrent.locks.ReentrantLock')
f(20,18839,42,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,18839,42,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,18839,42,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,18881,37,1,'scala/util/Either.fold')
f(19,18881,37,1,'cats/effect/IOPlatform$$Lambda$117.0x0000000800d86000.apply')
f(20,18881,37,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,18881,37,1,'scala/Some$.apply')
f(22,18881,37,2,'scala.Some')
f(17,18918,1,2,'scala.concurrent.duration.package$DurationLong')
f(17,18919,42,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,18919,42,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,18919,42,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,18919,42,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,18919,42,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,18919,42,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,18919,42,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,18919,42,2,'scala.concurrent.duration.FiniteDuration')
f(16,18961,129,1,'kyo/bench/EnqueueDequeueBench.catsBench')
f(17,18961,15,1,'cats/effect/std/Queue$.bounded')
f(18,18961,15,1,'cats/effect/std/Queue$.boundedForConcurrent')
f(19,18961,1,1,'cats/Functor$ToFunctorOps$$anon$4.map')
f(20,18961,1,1,'cats/Functor$Ops.map$')
f(21,18961,1,1,'cats/Functor$Ops.map')
f(22,18961,1,1,'cats/effect/IO$$anon$2.map')
f(23,18961,1,1,'cats/effect/IO$$anon$2.map')
f(24,18961,1,1,'cats/effect/IO.map')
f(25,18961,1,1,'cats/effect/IO$Map$.apply')
f(26,18961,1,2,'cats.effect.IO$Map')
f(19,18962,5,1,'cats/effect/IO$$anon$2.ref')
f(20,18962,5,1,'cats/effect/IO$$anon$2.ref')
f(21,18962,5,1,'cats/effect/IO$.ref')
f(22,18962,5,1,'cats/effect/IO$.apply')
f(23,18962,5,1,'cats/effect/IO$.delay')
f(24,18962,5,1,'cats/effect/IO$Delay$.apply')
f(25,18962,5,2,'cats.effect.IO$Delay')
f(19,18967,5,1,'cats/effect/std/Queue$State$.empty')
f(20,18967,5,1,'cats/effect/std/Queue$State$.apply')
f(21,18967,5,2,'cats.effect.std.Queue$State')
f(19,18972,2,1,'cats/syntax/AllSyntaxBinCompat.toFunctorOps')
f(20,18972,2,1,'cats/Functor$ToFunctorOps.toFunctorOps$')
f(21,18972,2,1,'cats/Functor$ToFunctorOps.toFunctorOps')
f(22,18972,2,2,'cats.Functor$ToFunctorOps$$anon$4')
f(19,18974,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d20c00.linkToTargetMethod')
f(20,18974,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d20400.newInvokeSpecial')
f(21,18974,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,18974,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,18974,2,2,'cats.effect.std.Queue$$$Lambda$43+0x0000000800d1c450')
f(17,18976,114,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,18976,114,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,18976,114,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,18976,114,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(21,18976,114,2,'kyo.bench.EnqueueDequeueBench$$Lambda$44+0x0000000800d1ca40')
f(1,19090,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,19090,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,19090,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,19090,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,19090,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,19090,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,19090,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,19090,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,19090,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,19090,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,19090,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,19090,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,19090,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,299,3,'all')
f(1,0,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(3,0,1,5,'do_syscall_64')
f(4,0,1,5,'__x64_sys_futex')
f(5,0,1,5,'do_futex')
f(6,0,1,5,'futex_wait')
f(7,0,1,5,'futex_wait_queue_me')
f(8,0,1,5,'schedule')
f(9,0,1,5,'__schedule')
f(10,0,1,5,'finish_task_switch.isra.0')
f(2,1,7,3,'thread_native_entry(Thread*)')
f(3,1,7,4,'Thread::call_run()')
f(4,1,7,4,'JavaThread::thread_main_inner()')
f(5,1,7,4,'CompileBroker::compiler_thread_loop()')
f(6,1,7,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,1,7,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,1,7,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,1,4,4,'Compile::Code_Gen()')
f(10,1,2,4,'PhaseCFG::do_global_code_motion()')
f(11,1,2,4,'PhaseCFG::global_code_motion()')
f(12,1,1,4,'PhaseCFG::schedule_late(VectorSet&, Node_Stack&)')
f(13,1,1,4,'PhaseCFG::hoist_to_cheaper_block(Block*, Block*, Node*)')
f(12,2,1,4,'PhaseCFG::schedule_pinned_nodes(VectorSet&)')
f(10,3,1,4,'PhaseOutput::Output()')
f(11,3,1,4,'PhaseOutput::BuildOopMaps()')
f(10,4,1,4,'PhaseOutput::install()')
f(11,4,1,4,'PhaseOutput::install_code(ciMethod*, int, AbstractCompiler*, bool, bool, RTMState)')
f(12,4,1,4,'ciEnv::register_method(ciMethod*, int, CodeOffsets*, int, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, bool, bool, RTMState, GrowableArrayView<RuntimeStub*> const&)')
f(13,4,1,4,'nmethod::new_nmethod(methodHandle const&, int, int, CodeOffsets*, int, DebugInformationRecorder*, Dependencies*, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, int, GrowableArrayView<RuntimeStub*> const&, char*, int, int, char const*, FailedSpeculation**)')
f(14,4,1,4,'nmethod::copy_values(GrowableArray<Metadata*>*)')
f(15,4,1,5,'asm_exc_page_fault')
f(16,4,1,5,'exc_page_fault')
f(17,4,1,5,'do_user_addr_fault')
f(18,4,1,5,'handle_mm_fault')
f(19,4,1,5,'__handle_mm_fault')
f(20,4,1,5,'handle_pte_fault')
f(21,4,1,5,'do_anonymous_page')
f(22,4,1,5,'__mem_cgroup_charge')
f(23,4,1,5,'charge_memcg')
f(9,5,3,4,'Compile::Optimize()')
f(10,5,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,5,1,4,'PhaseIdealLoop::Dominators()')
f(12,5,1,4,'Node::is_CFG() const')
f(10,6,1,4,'PhaseIterGVN::PhaseIterGVN(PhaseGVN*)')
f(11,6,1,4,'PhaseIterGVN::add_users_to_worklist(Node*)')
f(10,7,1,4,'PhaseIterGVN::optimize()')
f(11,7,1,4,'PhaseIterGVN::transform_old(Node*)')
f(12,7,1,4,'IfNode::Ideal(PhaseGVN*, bool)')
f(13,7,1,4,'IfNode::Ideal_common(PhaseGVN*, bool)')
f(14,7,1,4,'PhaseIterGVN::subsume_node(Node*, Node*)')
f(15,7,1,4,'PhaseIterGVN::remove_globally_dead_node(Node*)')
f(16,7,1,4,'Unique_Node_List::remove(Node*)')
f(1,8,4,3,'[unknown_Java]')
f(2,8,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(2,10,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,11,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(1,12,286,1,'cats/effect/unsafe/WorkerThread.run')
f(2,12,286,1,'cats/effect/IOFiber.run')
f(3,12,282,1,'cats/effect/IOFiber.autoCedeR')
f(4,12,282,1,'cats/effect/IOFiber.runLoop')
f(5,51,2,5,'asm_sysvec_hyperv_stimer0')
f(6,51,2,5,'sysvec_hyperv_stimer0')
f(7,51,2,5,'irq_exit_rcu')
f(8,51,2,5,'__irq_exit_rcu')
f(9,51,2,5,'__softirqentry_text_start')
f(10,52,1,5,'run_rebalance_domains')
f(11,52,1,5,'update_blocked_averages')
f(5,53,3,1,'cats/FlatMap$$Lambda$100.0x0000000800d7e000.apply')
f(5,56,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(6,56,1,2,'cats/effect/ByteStack$.growIfNeeded',1,0,0)
f(5,57,3,6,'cats/effect/IO$Delay.tag',0,3,0)
f(5,60,6,6,'cats/effect/IO$FlatMap.tag',0,6,0)
f(5,66,4,6,'cats/effect/IO$Uncancelable.tag',0,4,0)
f(5,70,14,2,'cats/effect/IOFiber$$anon$1.<init>',14,0,0)
f(5,84,29,2,'cats/effect/IOFiber.rescheduleFiber',29,0,0)
f(6,89,24,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',24,0,0)
f(7,92,2,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',2,0,0)
f(7,94,19,2,'cats/effect/unsafe/WorkerThread.reschedule',19,0,0)
f(8,101,12,2,'cats/effect/unsafe/LocalQueue.isEmpty',12,0,0)
f(9,109,4,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',4,0,0)
f(10,112,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(5,113,48,1,'cats/effect/IOFiber.succeeded')
f(6,120,8,2,'cats/effect/ArrayStack.pop',8,0,0)
f(6,128,5,2,'cats/effect/ByteStack$.pop',5,0,0)
f(7,131,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,133,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,133,2,1,'cats/effect/IOFiber.done')
f(8,133,2,1,'cats/effect/CallbackStack.apply')
f(9,133,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,133,2,1,'scala/runtime/function/JProcedure1.apply')
f(11,133,2,1,'cats/effect/IO$$Lambda$93.0x0000000800d75530.applyVoid')
f(12,133,2,1,'cats/effect/IO.$anonfun$6')
f(13,133,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,133,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,133,1,1,'cats/effect/kernel/Outcome.fold')
f(16,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,133,1,1,'cats/effect/IO$$Lambda$115.0x0000000800d82fd0.applyVoid')
f(19,133,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,133,1,1,'cats/effect/IO$$Lambda$92.0x0000000800d77230.applyVoid')
f(23,133,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,133,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,133,1,1,'cats/effect/IOPlatform$$Lambda$89.0x0000000800d76760.applyVoid')
f(27,133,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,133,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,133,1,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,133,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,133,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,133,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,133,1,1,'jdk/internal/misc/Unsafe.unpark')
f(34,133,1,3,'pthread_cond_signal')
f(35,133,1,5,'entry_SYSCALL_64_after_hwframe')
f(36,133,1,5,'do_syscall_64')
f(37,133,1,5,'__x64_sys_futex')
f(38,133,1,5,'do_futex')
f(39,133,1,5,'futex_wake')
f(40,133,1,5,'wake_up_q')
f(41,133,1,5,'_raw_spin_unlock_irqrestore')
f(13,134,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,134,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,134,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,134,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(17,134,1,3,'Unsafe_AllocateInstance')
f(18,134,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(19,134,1,4,'MemAllocator::allocate() const')
f(6,135,11,3,'itable stub')
f(6,146,7,1,'kyo/bench/EnqueueDequeueBench$$Lambda$106.0x0000000800d7f7d0.apply')
f(7,150,3,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1',3,0,0)
f(8,150,2,2,'cats/effect/IO.flatMap',2,0,0)
f(9,150,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(8,152,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod',1,0,0)
f(9,152,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial',1,0,0)
f(10,152,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(6,153,8,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d81898.apply')
f(7,158,3,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1',3,0,0)
f(8,159,2,2,'kyo/bench/EnqueueDequeueBench.loop$1',2,0,0)
f(9,159,2,2,'cats/effect/IO.flatMap',2,0,0)
f(10,159,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(5,161,56,1,'cats/effect/kernel/SyncRef$$Lambda$99.0x0000000800d7ba98.apply')
f(6,164,53,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',34,0,0)
f(7,164,53,2,'cats/effect/kernel/SyncRef.spin$4',34,0,0)
f(8,173,12,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d814c8.apply',12,0,0)
f(9,173,12,2,'cats/effect/std/Queue$AbstractQueue.$anonfun$11',12,0,0)
f(10,173,1,2,'cats/effect/IO$$anon$2.unit',1,0,0)
f(11,173,1,2,'cats/Applicative.unit$',1,0,0)
f(12,173,1,2,'cats/Applicative.unit',1,0,0)
f(13,173,1,2,'cats/effect/IO$$anon$2.pure',1,0,0)
f(14,173,1,2,'cats/effect/IO$$anon$2.pure',1,0,0)
f(15,173,1,2,'cats/effect/IO$.pure',1,0,0)
f(16,173,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,174,2,2,'cats/effect/std/Queue$State$.apply',2,0,0)
f(10,176,1,2,'scala/Predef$ArrowAssoc$.$minus$greater$extension',1,0,0)
f(10,177,2,2,'scala/collection/AbstractIterable.nonEmpty',2,0,0)
f(11,177,2,2,'scala/collection/IterableOnceOps.nonEmpty$',2,0,0)
f(12,177,2,2,'scala/collection/IterableOnceOps.nonEmpty',2,0,0)
f(13,177,2,2,'scala/collection/immutable/Queue.isEmpty',2,0,0)
f(14,178,1,2,'scala/collection/immutable/Queue.in',1,0,0)
f(10,179,6,2,'scala/collection/immutable/Queue.enqueue',6,0,0)
f(11,181,4,2,'scala/collection/immutable/Queue.<init>',4,0,0)
f(8,185,23,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d82038.apply',4,0,0)
f(9,189,19,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,195,7,2,'scala/collection/AbstractIterable.nonEmpty',6,0,0)
f(11,196,6,2,'scala/collection/IterableOnceOps.nonEmpty$',5,0,0)
f(12,197,5,2,'scala/collection/IterableOnceOps.nonEmpty',4,0,0)
f(13,197,5,2,'scala/collection/immutable/Queue.isEmpty',4,0,0)
f(14,200,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(15,200,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(16,200,1,4,'MemAllocator::allocate() const')
f(17,200,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(18,200,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(19,200,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(20,200,1,4,'G1AllocRegion::new_alloc_region_and_allocate(unsigned long, bool)')
f(21,200,1,4,'G1CollectedHeap::new_mutator_alloc_region(unsigned long, bool, unsigned int)')
f(22,200,1,4,'G1Policy::should_allocate_mutator_region() const')
f(14,201,1,2,'scala/collection/immutable/Queue.in',1,0,0)
f(10,202,5,2,'scala/collection/immutable/Queue.dequeue',5,0,0)
f(11,202,5,2,'scala/collection/immutable/List.reverse',5,0,0)
f(12,206,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(13,206,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(14,206,1,2,'scala/collection/immutable/List.<init>',1,0,0)
f(15,206,1,2,'scala/collection/immutable/AbstractSeq.<init>',1,0,0)
f(10,207,1,2,'scala/collection/immutable/Queue.isEmpty',1,0,0)
f(8,208,6,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',6,0,0)
f(9,208,6,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',6,0,0)
f(10,208,6,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',6,0,0)
f(8,214,2,2,'java/util/concurrent/atomic/AtomicReference.get',2,0,0)
f(8,216,1,2,'scala/Tuple2._1',1,0,0)
f(5,217,26,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f400.apply',26,0,0)
f(6,218,25,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2',25,0,0)
f(7,218,12,2,'cats/effect/IO$$anon$2.deferred',12,0,0)
f(8,218,12,2,'cats/effect/IO$$anon$2.deferred',12,0,0)
f(9,218,12,2,'cats/effect/IO$.deferred',12,0,0)
f(10,218,8,2,'cats/effect/IO$.apply',8,0,0)
f(11,218,8,2,'cats/effect/IO$.delay',8,0,0)
f(12,218,4,2,'cats/effect/IO$Delay$.apply',4,0,0)
f(13,219,3,2,'cats/effect/IO$Delay.<init>',3,0,0)
f(14,219,3,2,'cats/effect/IO.<init>',3,0,0)
f(15,219,3,2,'cats/effect/IOPlatform.<init>',3,0,0)
f(16,219,3,2,'java/lang/Object.<init>',3,0,0)
f(12,222,4,2,'cats/effect/Thunk$.asFunction0',4,0,0)
f(10,226,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(11,226,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(12,226,4,2,'cats/effect/IO$$$Lambda$107.0x0000000800d80768.<init>',4,0,0)
f(13,226,4,2,'java/lang/Object.<init>',4,0,0)
f(7,230,13,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',13,0,0)
f(8,230,13,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',13,0,0)
f(9,230,13,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80c88.<init>',13,0,0)
f(10,242,1,2,'java/lang/Object.<init>',1,0,0)
f(5,243,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80c88.apply')
f(6,247,6,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1',6,0,0)
f(7,248,2,2,'cats/effect/kernel/SyncRef.modify',2,0,0)
f(8,249,1,2,'cats/effect/IO$$anon$2.delay',1,0,0)
f(9,249,1,2,'cats/effect/IO$$anon$2.delay',1,0,0)
f(10,249,1,2,'cats/effect/IO$.apply',1,0,0)
f(11,249,1,2,'cats/effect/IO$.delay',1,0,0)
f(12,249,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(7,250,2,2,'cats/syntax/FlattenOps$.flatten$extension',2,0,0)
f(8,250,2,2,'cats/effect/IO$$anon$2.flatten',2,0,0)
f(9,250,2,2,'cats/FlatMap.flatten$',2,0,0)
f(10,250,2,2,'cats/FlatMap.flatten',2,0,0)
f(11,250,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,250,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(13,250,2,2,'cats/effect/IO.flatMap',2,0,0)
f(14,250,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(7,252,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(8,252,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial',1,0,0)
f(9,252,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,253,8,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d81c68.apply')
f(6,255,6,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2$$anonfun$1',6,0,0)
f(7,256,1,2,'cats/effect/kernel/SyncRef.modify',1,0,0)
f(8,256,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(9,256,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(10,256,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(7,257,4,2,'cats/syntax/FlattenOps$.flatten$extension',4,0,0)
f(8,259,2,2,'cats/effect/IO$$anon$2.flatten',2,0,0)
f(9,259,2,2,'cats/FlatMap.flatten$',2,0,0)
f(10,259,2,2,'cats/FlatMap.flatten',2,0,0)
f(11,259,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,259,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(13,259,2,2,'cats/effect/IO.flatMap',2,0,0)
f(14,259,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(5,261,7,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$97.0x0000000800d7a010.apply',7,0,0)
f(6,261,7,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2',7,0,0)
f(7,261,7,2,'cats/effect/IO$$anon$2.deferred',7,0,0)
f(8,261,7,2,'cats/effect/IO$$anon$2.deferred',7,0,0)
f(9,261,7,2,'cats/effect/IO$.deferred',7,0,0)
f(10,261,4,2,'cats/effect/IO$.apply',4,0,0)
f(11,261,4,2,'cats/effect/IO$.delay',4,0,0)
f(12,261,2,2,'cats/effect/IO$Delay$.apply',2,0,0)
f(13,261,2,2,'cats/effect/IO$Delay.<init>',2,0,0)
f(12,263,2,2,'cats/effect/Thunk$.asFunction0',2,0,0)
f(13,263,2,2,'cats/effect/Thunk$$$Lambda$42.0x0000000800d1bbe8.apply',2,0,0)
f(10,265,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(11,265,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(12,266,2,2,'java/lang/invoke/DirectMethodHandle.constructorMethod',2,0,0)
f(5,268,14,3,'itable stub')
f(5,282,12,3,'vtable stub')
f(3,294,4,1,'cats/effect/IOFiber.execR')
f(4,294,4,1,'cats/effect/IOFiber.runLoop')
f(5,294,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(5,295,1,1,'cats/effect/kernel/SyncRef$$Lambda$99.0x0000000800d7ba98.apply')
f(6,295,1,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,295,1,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,295,1,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d82038.apply')
f(9,295,1,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$8')
f(10,295,1,2,'scala/collection/AbstractIterable.nonEmpty',1,0,0)
f(11,295,1,2,'scala/collection/IterableOnceOps.nonEmpty$',1,0,0)
f(12,295,1,2,'scala/collection/IterableOnceOps.nonEmpty',1,0,0)
f(13,295,1,2,'scala/collection/immutable/Queue.isEmpty',1,0,0)
f(5,296,1,1,'cats/effect/std/Queue$$$Lambda$43.0x0000000800d1c450.apply')
f(6,296,1,1,'cats/effect/std/Queue$.boundedForConcurrent$$anonfun$1')
f(7,296,1,1,'cats/effect/std/Queue$BoundedQueue.<init>')
f(8,296,1,6,'cats/effect/std/Queue$AbstractQueue.<init>',0,1,0)
f(5,297,1,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$97.0x0000000800d7a010.apply',1,0,0)
f(6,297,1,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$2',1,0,0)
f(7,297,1,2,'cats/effect/IO$$anon$2.deferred',1,0,0)
f(8,297,1,2,'cats/effect/IO$$anon$2.deferred',1,0,0)
f(9,297,1,2,'cats/effect/IO$.deferred',1,0,0)
f(10,297,1,2,'cats/effect/IO$.apply',1,0,0)
f(11,297,1,2,'cats/effect/IO$.delay',1,0,0)
f(1,298,1,1,'java/lang/Thread.run')
f(2,298,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,298,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,298,1,1,'java/util/concurrent/FutureTask.run')
f(5,298,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,298,1,1,'java/util/concurrent/FutureTask.run')
f(7,298,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,298,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,298,1,1,'java/lang/reflect/Method.invoke')
f(10,298,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,298,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,298,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,298,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_Throughput')
f(14,298,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,298,1,1,'kyo/bench/Bench.syncCats')
f(16,298,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,298,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,298,1,1,'scala/concurrent/package$.blocking')
f(19,298,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,298,1,1,'cats/effect/IOPlatform$$Lambda$96.0x0000000800d791d0.apply')
f(21,298,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,298,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,298,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,298,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,298,1,1,'jdk/internal/misc/Unsafe.park')
f(26,298,1,3,'[unknown]')
f(27,298,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,19053,3,'all')
f(1,0,18304,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18304,1,'cats/effect/IOFiber.run')
f(3,0,8460,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,8460,1,'cats/effect/IOFiber.runLoop')
f(5,0,2263,2,'cats.effect.IOFiber')
f(5,2263,1,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,2263,1,2,'cats.effect.IO$IOCont$Get')
f(5,2264,1,1,'cats/effect/IODeferred$$anon$1$$Lambda$115.0x0000000800d62d48.apply')
f(6,2264,1,1,'cats/effect/IODeferred$$anon$1.$anonfun$1')
f(7,2264,1,1,'cats/effect/IO$.apply')
f(8,2264,1,1,'cats/effect/IO$.delay')
f(9,2264,1,1,'cats/effect/IO$Delay$.apply')
f(10,2264,1,2,'cats.effect.IO$Delay')
f(5,2265,4849,1,'cats/effect/IOFiber.<init>')
f(6,2265,1288,1,'cats/effect/ArrayStack$.apply')
f(7,2265,1288,2,'cats.effect.ArrayStack')
f(6,3553,703,1,'cats/effect/CallbackStack$.apply')
f(7,3553,703,2,'cats.effect.CallbackStack')
f(6,4256,1128,1,'cats/effect/IO$.async')
f(7,4256,378,2,'cats.effect.IO$$anon$3')
f(7,4634,750,1,'cats/effect/IO$IOCont$.apply')
f(8,4634,750,2,'cats.effect.IO$IOCont')
f(6,5384,694,1,'cats/effect/IO$.uncancelable')
f(7,5384,694,1,'cats/effect/IO$Uncancelable$.apply')
f(8,5384,694,2,'cats.effect.IO$Uncancelable')
f(6,6078,1036,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,6078,1036,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,6078,1036,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,6078,516,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d9f0')
f(9,6594,520,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5dfe0')
f(5,7114,4,1,'cats/effect/IOFiber.scheduleFiber')
f(6,7114,4,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,7114,4,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,7114,4,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(9,7114,4,2,'java.lang.Runnable[]')
f(5,7118,1342,1,'cats/effect/IOFiber.succeeded')
f(6,7118,1342,1,'kyo/bench/ForkManyBench$$Lambda$102.0x0000000800d59220.apply')
f(7,7118,1342,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,7118,1342,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,7118,671,1,'cats/effect/IO.flatMap')
f(10,7118,671,1,'cats/effect/IO$FlatMap$.apply')
f(11,7118,671,2,'cats.effect.IO$FlatMap')
f(9,7789,671,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7789,671,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d60400.newInvokeSpecial')
f(11,7789,671,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7789,671,2,'kyo.bench.ForkManyBench$$Lambda$102+0x0000000800d59220')
f(3,8460,397,1,'cats/effect/IOFiber.cedeR')
f(4,8460,397,1,'cats/effect/IOFiber.runLoop')
f(5,8460,82,2,'cats.effect.IOFiber')
f(5,8542,258,1,'cats/effect/IOFiber.<init>')
f(6,8542,58,1,'cats/effect/ArrayStack$.apply')
f(7,8542,58,2,'cats.effect.ArrayStack')
f(6,8600,31,1,'cats/effect/CallbackStack$.apply')
f(7,8600,31,2,'cats.effect.CallbackStack')
f(6,8631,75,1,'cats/effect/IO$.async')
f(7,8631,26,2,'cats.effect.IO$$anon$3')
f(7,8657,49,1,'cats/effect/IO$IOCont$.apply')
f(8,8657,49,2,'cats.effect.IO$IOCont')
f(6,8706,34,1,'cats/effect/IO$.uncancelable')
f(7,8706,34,1,'cats/effect/IO$Uncancelable$.apply')
f(8,8706,34,2,'cats.effect.IO$Uncancelable')
f(6,8740,60,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,8740,60,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,8740,60,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,8740,27,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d9f0')
f(9,8767,33,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5dfe0')
f(5,8800,56,1,'cats/effect/IOFiber.succeeded')
f(6,8800,56,1,'kyo/bench/ForkManyBench$$Lambda$102.0x0000000800d59220.apply')
f(7,8800,56,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,8800,56,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,8800,26,1,'cats/effect/IO.flatMap')
f(10,8800,26,1,'cats/effect/IO$FlatMap$.apply')
f(11,8800,26,2,'cats.effect.IO$FlatMap')
f(9,8826,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,8826,30,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d60400.newInvokeSpecial')
f(11,8826,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,8826,30,2,'kyo.bench.ForkManyBench$$Lambda$102+0x0000000800d59220')
f(5,8856,1,1,'kyo/bench/ForkManyBench$$Lambda$98.0x0000000800d5ab00.apply')
f(6,8856,1,1,'kyo/bench/ForkManyBench.catsBench$$anonfun$1$$anonfun$1')
f(7,8856,1,1,'cats/effect/kernel/SyncRef.modify')
f(8,8856,1,1,'cats/effect/IO$$anon$2.delay')
f(9,8856,1,1,'cats/effect/IO$$anon$2.delay')
f(10,8856,1,1,'cats/effect/IO$.apply')
f(11,8856,1,1,'cats/effect/IO$.delay')
f(12,8856,1,1,'cats/effect/IO$Delay$.apply')
f(13,8856,1,2,'cats.effect.IO$Delay')
f(3,8857,9447,1,'cats/effect/IOFiber.execR')
f(4,8857,4712,1,'cats/effect/ArrayStack.init')
f(5,8857,4712,2,'java.lang.Object[]')
f(4,13569,1110,1,'cats/effect/ByteStack$.create')
f(5,13569,1110,2,'int[]')
f(4,14679,3625,1,'cats/effect/IOFiber.runLoop')
f(5,14679,1284,1,'cats/effect/IOFiber.succeeded')
f(6,14679,1284,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,14679,358,1,'cats/effect/IO$.pure')
f(8,14679,358,1,'cats/effect/IO$Pure$.apply')
f(9,14679,358,2,'cats.effect.IO$Pure')
f(7,15037,496,1,'cats/effect/IOFiber.done')
f(8,15037,496,1,'cats/effect/IO$.pure')
f(9,15037,496,1,'cats/effect/IO$Pure$.apply')
f(10,15037,496,2,'cats.effect.IO$Pure')
f(7,15533,430,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,15533,430,2,'cats.effect.kernel.Outcome$Succeeded')
f(5,15963,2341,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d5bb38.apply')
f(6,15963,2341,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,15963,2341,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,15963,2341,1,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d5b768.apply')
f(9,15963,2341,1,'kyo/bench/ForkManyBench.$anonfun$adapted$1')
f(10,15963,2341,1,'kyo/bench/ForkManyBench.$anonfun$1')
f(11,15963,1337,1,'scala/Tuple2$.apply')
f(12,15963,1337,2,'scala.Tuple2')
f(11,17300,1004,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(12,17300,1004,1,'java/lang/Integer.valueOf')
f(13,17300,1004,2,'java.lang.Integer')
f(1,18304,746,1,'java/lang/Thread.run')
f(2,18304,746,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18304,746,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18304,746,1,'java/util/concurrent/FutureTask.run')
f(5,18304,746,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18304,746,1,'java/util/concurrent/FutureTask.run')
f(7,18304,746,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18304,746,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18304,746,1,'java/lang/reflect/Method.invoke')
f(10,18304,746,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18304,746,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18304,746,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18304,746,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_Throughput')
f(14,18304,745,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,18304,745,1,'kyo/bench/Bench.forkCats')
f(16,18304,2,1,'cats/effect/IO.flatMap')
f(17,18304,2,1,'cats/effect/IO$FlatMap$.apply')
f(18,18304,2,2,'cats.effect.IO$FlatMap')
f(16,18306,741,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18306,654,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18306,362,1,'cats/effect/IO.unsafeRunAsync')
f(19,18306,294,1,'cats/effect/IO.unsafeRunFiber')
f(20,18306,76,2,'cats.effect.IOFiber')
f(20,18382,1,5,'cats.effect.IOFiber')
f(20,18383,160,1,'cats/effect/IOFiber.<init>')
f(21,18383,88,1,'cats/effect/ArrayStack$.apply')
f(22,18383,88,2,'cats.effect.ArrayStack')
f(21,18471,3,1,'cats/effect/CallbackStack$.apply')
f(22,18471,3,2,'cats.effect.CallbackStack')
f(21,18474,13,1,'cats/effect/IO$.async')
f(22,18474,2,2,'cats.effect.IO$$anon$3')
f(22,18476,11,1,'cats/effect/IO$IOCont$.apply')
f(23,18476,11,2,'cats.effect.IO$IOCont')
f(21,18487,46,1,'cats/effect/IO$.uncancelable')
f(22,18487,46,1,'cats/effect/IO$Uncancelable$.apply')
f(23,18487,46,2,'cats.effect.IO$Uncancelable')
f(21,18533,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,18533,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,18533,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,18533,8,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5d9f0')
f(24,18541,2,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5dfe0')
f(20,18543,52,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,18543,52,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,18543,52,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,18543,52,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,18543,52,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,18595,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,18595,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,18595,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,18595,5,2,'cats.effect.IO$$Lambda$90+0x0000000800d5cbb8')
f(19,18600,68,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,18600,68,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,18600,68,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,18600,7,2,'cats.effect.IO$$Lambda$87+0x0000000800d57348')
f(22,18607,61,2,'cats.effect.IO$$Lambda$88+0x0000000800d57608')
f(18,18668,14,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,18682,13,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,18682,13,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,18682,13,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,18682,10,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d56f40')
f(21,18692,3,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5e9c0')
f(18,18695,178,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,18695,178,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,18695,80,2,'java.lang.Object[]')
f(20,18775,15,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,18775,15,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,18790,83,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,18790,83,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,18790,83,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,18873,18,1,'scala/concurrent/package$.blocking')
f(19,18873,18,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,18873,18,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e9c0.apply')
f(21,18873,18,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,18873,18,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,18873,18,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,18873,18,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,18891,69,1,'scala/util/Either.fold')
f(19,18891,69,1,'cats/effect/IOPlatform$$Lambda$111.0x0000000800d65d98.apply')
f(20,18891,69,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,18891,69,1,'scala/Some$.apply')
f(22,18891,69,2,'scala.Some')
f(17,18960,87,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,18960,87,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,18960,87,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,18960,87,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,18960,87,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,18960,87,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,18960,87,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,18960,87,2,'scala.concurrent.duration.FiniteDuration')
f(16,19047,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,19047,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,19047,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,19047,2,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8e190')
f(14,19049,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,19049,1,2,'java.lang.StringBuilder')
f(1,19050,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,19050,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,19050,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,19050,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,19050,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,19050,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,19050,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,19050,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,19050,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,19050,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,19050,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,19050,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,19050,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 496px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(31);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,1052,3,'all')
f(1,0,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,4,3,'thread_native_entry(Thread*)')
f(3,0,4,4,'Thread::call_run()')
f(4,0,3,4,'JavaThread::thread_main_inner()')
f(5,0,3,4,'CompileBroker::compiler_thread_loop()')
f(6,0,3,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,3,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,3,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseChaitin::Register_Allocate()')
f(11,0,1,4,'PhaseLive::compute(unsigned int)')
f(9,1,1,4,'Compile::Optimize()')
f(10,1,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,1,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,1,1,4,'PhaseIdealLoop::build_loop_tree()')
f(9,2,1,4,'ParseGenerator::generate(JVMState*)')
f(10,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,2,1,4,'Parse::do_all_blocks()')
f(12,2,1,4,'Parse::do_one_block()')
f(13,2,1,4,'Parse::do_call()')
f(14,2,1,4,'ParseGenerator::generate(JVMState*)')
f(15,2,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(16,2,1,4,'Parse::do_all_blocks()')
f(17,2,1,4,'Parse::do_one_block()')
f(18,2,1,4,'Parse::do_call()')
f(19,2,1,4,'GraphKit::record_profiled_arguments_for_speculation(ciMethod*, Bytecodes::Code)')
f(20,2,1,4,'GraphKit::record_profile_for_speculation(Node*, ciKlass*, ProfilePtrKind)')
f(21,2,1,4,'PhaseGVN::transform_no_reclaim(Node*)')
f(22,2,1,4,'TypePtr::speculative() const')
f(4,3,1,4,'VMThread::run()')
f(5,3,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,3,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,3,1,4,'VM_Operation::evaluate()')
f(8,3,1,4,'VM_G1CollectForAllocation::doit()')
f(9,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,3,1,4,'G1CollectedHeap::gc_epilogue(bool)')
f(12,3,1,4,'LowMemoryDetector::detect_low_memory()')
f(13,3,1,3,'pthread_mutex_lock')
f(1,4,6,3,'[unknown_Java]')
f(2,4,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(2,5,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(2,7,2,1,'cats/effect/IOFiber.<init>')
f(2,9,1,1,'cats/effect/IOFiber.succeeded')
f(1,10,1041,1,'cats/effect/unsafe/WorkerThread.run')
f(2,13,842,1,'cats/effect/IOFiber.run',11,0,0)
f(3,14,4,2,'cats/effect/IOFiber.asyncContinueSuccessfulR',4,0,0)
f(4,15,3,2,'cats/effect/ArrayStack.pop',3,0,0)
f(3,18,206,1,'cats/effect/IOFiber.autoCedeR')
f(4,18,206,1,'cats/effect/IOFiber.runLoop')
f(5,25,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,26,8,6,'cats/effect/IO$Start.tag',0,8,0)
f(5,34,38,1,'cats/effect/IOFiber.<init>')
f(6,69,1,2,'cats/effect/IO$.async',1,0,0)
f(6,70,2,2,'cats/effect/IO$.uncancelable',1,0,0)
f(7,70,2,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(8,71,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(9,71,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(10,71,1,4,'MemAllocator::allocate() const')
f(11,71,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(12,71,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(13,71,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(14,71,1,4,'G1AllocRegion::new_alloc_region_and_allocate(unsigned long, bool)')
f(15,71,1,4,'G1CollectedHeap::new_mutator_alloc_region(unsigned long, bool, unsigned int)')
f(16,71,1,4,'G1CollectedHeap::new_region(unsigned long, HeapRegionType, bool, unsigned int)')
f(17,71,1,4,'HeapRegionManager::allocate_free_region(HeapRegionType, unsigned int)')
f(18,71,1,4,'Mutex::owned_by_self() const')
f(5,72,5,2,'cats/effect/IOFiber.rescheduleFiber',5,0,0)
f(6,73,4,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',4,0,0)
f(7,76,1,2,'cats/effect/unsafe/WorkerThread.reschedule',1,0,0)
f(5,77,87,1,'cats/effect/IOFiber.scheduleFiber')
f(6,77,87,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,82,1,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',1,0,0)
f(7,83,81,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,85,18,2,'cats/effect/unsafe/LocalQueue.enqueue',18,0,0)
f(9,96,1,2,'cats/effect/unsafe/LocalQueue.msb',1,0,0)
f(9,97,3,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',3,0,0)
f(10,97,3,2,'cats/effect/unsafe/LocalQueue.lsb',3,0,0)
f(9,100,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(9,101,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',2,0,0)
f(8,103,61,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',13,0,0)
f(9,103,1,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyShouldWakeup',1,0,0)
f(9,104,11,2,'java/util/concurrent/ThreadLocalRandom.nextInt',11,0,0)
f(10,104,11,2,'java/util/Random.nextInt',11,0,0)
f(11,104,11,2,'java/util/concurrent/ThreadLocalRandom.next',11,0,0)
f(12,104,11,2,'java/util/concurrent/ThreadLocalRandom.nextInt',11,0,0)
f(13,104,11,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',11,0,0)
f(9,115,1,2,'java/util/concurrent/atomic/AtomicInteger.getAndAdd',1,0,0)
f(9,116,48,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,116,48,1,'jdk/internal/misc/Unsafe.unpark')
f(11,117,1,3,'Unsafe_Unpark')
f(11,118,46,3,'pthread_cond_signal')
f(12,118,46,5,'entry_SYSCALL_64_after_hwframe')
f(13,118,46,5,'do_syscall_64')
f(14,118,44,5,'__x64_sys_futex')
f(15,120,42,5,'do_futex')
f(16,120,41,5,'futex_wake')
f(17,123,3,5,'mark_wake_futex')
f(17,126,35,5,'wake_up_q')
f(18,126,35,5,'_raw_spin_unlock_irqrestore')
f(16,161,1,5,'hash_futex')
f(14,162,2,5,'syscall_enter_from_user_mode')
f(5,164,21,1,'cats/effect/IOFiber.succeeded')
f(6,173,12,2,'cats/effect/IOFiber.runTerminusSuccessK',12,0,0)
f(7,173,12,2,'cats/effect/IOFiber.done',12,0,0)
f(8,174,9,2,'cats/effect/CallbackStack.apply',9,0,0)
f(8,183,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,183,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(10,184,1,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',1,0,0)
f(11,184,1,2,'java/lang/invoke/VarHandle.checkExactAccessMode',1,0,0)
f(5,185,33,2,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d5bb38.apply',33,0,0)
f(6,185,33,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',33,0,0)
f(7,185,33,2,'cats/effect/kernel/SyncRef.spin$4',33,0,0)
f(8,185,33,2,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d5b768.apply',33,0,0)
f(9,185,33,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',33,0,0)
f(10,185,33,2,'kyo/bench/ForkManyBench.$anonfun$1',33,0,0)
f(11,185,33,2,'scala/runtime/BoxesRunTime.boxToInteger',33,0,0)
f(5,218,6,3,'vtable stub')
f(3,224,11,1,'cats/effect/IOFiber.cedeR')
f(4,224,11,1,'cats/effect/IOFiber.runLoop')
f(5,225,1,6,'cats/effect/IO$Start.tag',0,1,0)
f(5,226,1,1,'cats/effect/IOFiber.<init>')
f(5,227,4,1,'cats/effect/IOFiber.scheduleFiber')
f(6,227,4,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,228,3,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,228,3,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(9,228,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(10,228,1,2,'java/util/Random.nextInt',1,0,0)
f(11,228,1,2,'java/util/concurrent/ThreadLocalRandom.next',1,0,0)
f(12,228,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(13,228,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(9,229,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,229,2,1,'jdk/internal/misc/Unsafe.unpark')
f(11,229,2,3,'pthread_cond_signal')
f(12,229,2,5,'entry_SYSCALL_64_after_hwframe')
f(13,229,2,5,'do_syscall_64')
f(14,229,2,5,'__x64_sys_futex')
f(15,229,2,5,'do_futex')
f(16,229,2,5,'futex_wake')
f(17,229,2,5,'wake_up_q')
f(18,229,2,5,'_raw_spin_unlock_irqrestore')
f(5,231,3,1,'cats/effect/IOFiber.succeeded')
f(5,234,1,2,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d5bb38.apply',1,0,0)
f(6,234,1,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',1,0,0)
f(7,234,1,2,'cats/effect/kernel/SyncRef.spin$4',1,0,0)
f(8,234,1,2,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d5b768.apply',1,0,0)
f(9,234,1,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',1,0,0)
f(10,234,1,2,'kyo/bench/ForkManyBench.$anonfun$1',1,0,0)
f(11,234,1,2,'scala/runtime/BoxesRunTime.boxToInteger',1,0,0)
f(3,235,620,1,'cats/effect/IOFiber.execR',6,0,0)
f(4,237,6,2,'cats/effect/ArrayStack.init',4,0,0)
f(5,241,2,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(6,241,1,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(7,241,1,4,'MemAllocator::allocate() const')
f(8,241,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(9,241,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(6,242,1,4,'ObjArrayKlass::array_klass(int, JavaThread*)')
f(4,243,612,1,'cats/effect/IOFiber.runLoop')
f(5,298,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,299,8,6,'cats/effect/IO$Delay.tag',0,8,0)
f(5,307,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,308,2,6,'cats/effect/IO$Pure.tag',0,2,0)
f(5,310,110,2,'cats/effect/IOFiber.rescheduleFiber',110,0,0)
f(6,310,110,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',110,0,0)
f(7,310,110,2,'cats/effect/unsafe/WorkerThread.reschedule',110,0,0)
f(8,405,15,2,'cats/effect/unsafe/LocalQueue.isEmpty',15,0,0)
f(9,410,10,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',10,0,0)
f(10,419,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(5,420,2,2,'cats/effect/IOFiber.scheduleFiber',2,0,0)
f(5,422,48,1,'cats/effect/IOFiber.succeeded')
f(6,439,31,2,'cats/effect/IOFiber.runTerminusSuccessK',30,0,0)
f(7,440,10,2,'cats/effect/IO$.pure',10,0,0)
f(8,440,10,2,'cats/effect/IO$Pure$.apply',10,0,0)
f(9,449,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(10,449,1,2,'cats/effect/IO.<init>',1,0,0)
f(7,450,16,2,'cats/effect/IOFiber.done',15,0,0)
f(8,456,2,2,'cats/effect/CallbackStack.apply',2,0,0)
f(8,458,8,2,'cats/effect/IO$.pure',7,0,0)
f(9,459,7,2,'cats/effect/IO$Pure$.apply',6,0,0)
f(10,459,7,2,'cats/effect/IO$Pure.<init>',6,0,0)
f(11,459,7,2,'cats/effect/IO.<init>',6,0,0)
f(12,465,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,465,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(14,465,1,4,'MemAllocator::allocate() const')
f(15,465,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(16,465,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(7,466,4,2,'cats/effect/kernel/Outcome$Succeeded$.apply',4,0,0)
f(8,466,4,2,'cats/effect/kernel/Outcome$Succeeded.<init>',4,0,0)
f(9,466,4,2,'java/lang/Object.<init>',4,0,0)
f(5,470,368,2,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d5bb38.apply',366,0,0)
f(6,470,368,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',366,0,0)
f(7,470,368,2,'cats/effect/kernel/SyncRef.spin$4',366,0,0)
f(8,470,368,2,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d5b768.apply',366,0,0)
f(9,470,368,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',366,0,0)
f(10,470,368,2,'kyo/bench/ForkManyBench.$anonfun$1',366,0,0)
f(11,470,368,2,'scala/runtime/BoxesRunTime.boxToInteger',366,0,0)
f(12,836,2,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,836,2,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(14,836,1,4,'MemAllocator::allocate() const')
f(15,836,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(16,836,1,4,'ThreadLocalAllocBuffer::fill(HeapWordImpl**, HeapWordImpl**, unsigned long)')
f(14,837,1,3,'__tls_get_addr')
f(5,838,17,3,'vtable stub')
f(6,854,1,5,'asm_sysvec_hyperv_stimer0')
f(7,854,1,5,'sysvec_hyperv_stimer0')
f(8,854,1,5,'irq_exit_rcu')
f(9,854,1,5,'__irq_exit_rcu')
f(10,854,1,5,'__softirqentry_text_start')
f(2,855,87,2,'cats/effect/unsafe/ScalQueue.poll',87,0,0)
f(3,855,87,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',87,0,0)
f(4,856,3,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',3,0,0)
f(5,857,2,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',2,0,0)
f(6,857,2,2,'java/lang/invoke/VarForm.getMemberName',2,0,0)
f(4,859,83,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',83,0,0)
f(5,905,7,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',7,0,0)
f(6,905,7,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',7,0,0)
f(5,912,30,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',30,0,0)
f(6,912,7,2,'java/lang/invoke/VarForm.getMemberName',7,0,0)
f(6,919,23,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.setRelease',23,0,0)
f(2,942,3,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,942,3,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,942,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,942,3,1,'jdk/internal/misc/Unsafe.unpark')
f(6,942,3,3,'pthread_cond_signal')
f(7,942,3,5,'entry_SYSCALL_64_after_hwframe')
f(8,942,3,5,'do_syscall_64')
f(9,942,3,5,'__x64_sys_futex')
f(10,942,3,5,'do_futex')
f(11,942,3,5,'futex_wake')
f(12,942,3,5,'wake_up_q')
f(13,942,3,5,'_raw_spin_unlock_irqrestore')
f(2,945,43,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,945,39,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,963,6,2,'cats/effect/unsafe/LocalQueue.msb',6,0,0)
f(4,969,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',1,0,0)
f(5,969,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(4,970,9,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',9,0,0)
f(4,979,4,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',4,0,0)
f(4,983,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',1,0,0)
f(3,984,3,2,'cats/effect/unsafe/ScalQueue.poll',3,0,0)
f(4,986,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(3,987,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,987,1,2,'java/util/Random.nextInt',1,0,0)
f(5,987,1,2,'java/util/concurrent/ThreadLocalRandom.next',1,0,0)
f(6,987,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(7,987,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(2,988,6,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToSearching')
f(2,994,57,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,994,57,1,'java/util/concurrent/locks/LockSupport.park')
f(4,994,57,1,'jdk/internal/misc/Unsafe.park')
f(5,994,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(5,995,7,3,'Unsafe_Park')
f(6,995,5,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,995,5,5,'entry_SYSCALL_64_after_hwframe')
f(8,995,1,5,'__x64_sys_futex')
f(8,996,4,5,'do_syscall_64')
f(9,996,2,5,'__x64_sys_futex')
f(10,996,2,5,'do_futex')
f(11,996,1,5,'futex_wake')
f(11,997,1,5,'hash_futex')
f(9,998,2,5,'syscall_enter_from_user_mode')
f(6,1000,1,4,'Parker::park(bool, long)')
f(7,1000,1,4,'JavaThread::is_interrupted(bool)')
f(6,1001,1,3,'__tls_get_addr')
f(5,1002,49,3,'[unknown]')
f(6,1002,45,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,1004,43,5,'entry_SYSCALL_64_after_hwframe')
f(8,1004,1,5,'__x64_sys_futex')
f(8,1005,42,5,'do_syscall_64')
f(9,1005,32,5,'__x64_sys_futex')
f(10,1006,31,5,'do_futex')
f(11,1006,31,5,'futex_wait')
f(12,1007,29,5,'futex_wait_queue_me')
f(13,1009,27,5,'schedule')
f(14,1009,27,5,'__schedule')
f(15,1010,26,5,'finish_task_switch.isra.0')
f(12,1036,1,5,'futex_wait_setup')
f(9,1037,4,5,'syscall_enter_from_user_mode')
f(9,1041,6,5,'syscall_exit_to_user_mode')
f(10,1041,6,5,'exit_to_user_mode_prepare')
f(11,1041,6,5,'exit_to_user_mode_loop')
f(12,1044,2,5,'__rseq_handle_notify_resume')
f(13,1045,1,5,'__put_user_nocheck_8')
f(12,1046,1,5,'blkcg_maybe_throttle_current')
f(6,1047,4,3,'pthread_mutex_trylock')
f(1,1051,1,1,'java/lang/Thread.run')
f(2,1051,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1051,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1051,1,1,'java/util/concurrent/FutureTask.run')
f(5,1051,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1051,1,1,'java/util/concurrent/FutureTask.run')
f(7,1051,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1051,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1051,1,1,'java/lang/reflect/Method.invoke')
f(10,1051,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1051,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1051,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1051,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_Throughput')
f(14,1051,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,1051,1,1,'kyo/bench/Bench.forkCats')
f(16,1051,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,1051,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,1051,1,1,'scala/concurrent/package$.blocking')
f(19,1051,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,1051,1,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5e9c0.apply')
f(21,1051,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,1051,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,1051,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,1051,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,1051,1,1,'jdk/internal/misc/Unsafe.park')
f(26,1051,1,3,'Unsafe_Park')
f(27,1051,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,1051,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,1051,1,5,'do_syscall_64')
f(30,1051,1,5,'syscall_enter_from_user_mode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,19405,3,'all')
f(1,0,18553,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,18553,1,'cats/effect/IOFiber.run')
f(3,0,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,1,1,'cats/effect/IOFiber.succeeded')
f(5,0,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,0,1,1,'cats/effect/IOFiber.done')
f(7,0,1,1,'cats/effect/CallbackStack.apply')
f(8,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,0,1,1,'cats/effect/IO$$Lambda$92.0x0000000800d5a400.applyVoid')
f(11,0,1,1,'cats/effect/IO.$anonfun$6')
f(12,0,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,0,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,0,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,0,1,2,'cats.effect.IO$$Lambda$108+0x0000000800d619a0')
f(3,1,8528,1,'cats/effect/IOFiber.autoCedeR')
f(4,1,8528,1,'cats/effect/IOFiber.runLoop')
f(5,1,2284,2,'cats.effect.IOFiber')
f(5,2285,1,1,'cats/arrow/FunctionK$.id')
f(6,2285,1,2,'cats.arrow.FunctionK$$anon$4')
f(5,2286,4814,1,'cats/effect/IOFiber.<init>')
f(6,2286,1333,1,'cats/effect/ArrayStack$.apply')
f(7,2286,1333,2,'cats.effect.ArrayStack')
f(6,3619,753,1,'cats/effect/CallbackStack$.apply')
f(7,3619,753,2,'cats.effect.CallbackStack')
f(6,4372,1040,1,'cats/effect/IO$.async')
f(7,4372,372,2,'cats.effect.IO$$anon$3')
f(7,4744,668,1,'cats/effect/IO$IOCont$.apply')
f(8,4744,668,2,'cats.effect.IO$IOCont')
f(6,5412,678,1,'cats/effect/IO$.uncancelable')
f(7,5412,678,1,'cats/effect/IO$Uncancelable$.apply')
f(8,5412,678,2,'cats.effect.IO$Uncancelable')
f(6,6090,1010,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,6090,1010,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,6090,1010,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,6090,512,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5b238')
f(9,6602,498,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5b828')
f(5,7100,1,1,'cats/effect/IOFiber.scheduleFiber')
f(6,7100,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,7100,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,7100,1,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(9,7100,1,2,'java.lang.Runnable[]')
f(5,7101,1428,1,'cats/effect/IOFiber.succeeded')
f(6,7101,1427,1,'kyo/bench/ForkManyBench$$Lambda$101.0x0000000800d5d8b0.apply')
f(7,7101,1427,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,7101,1427,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,7101,697,1,'cats/effect/IO.flatMap')
f(10,7101,697,1,'cats/effect/IO$FlatMap$.apply')
f(11,7101,697,2,'cats.effect.IO$FlatMap')
f(9,7798,730,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7798,730,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5cc00.newInvokeSpecial')
f(11,7798,730,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7798,730,2,'kyo.bench.ForkManyBench$$Lambda$101+0x0000000800d5d8b0')
f(6,8528,1,1,'kyo/bench/ForkManyBench$$Lambda$102.0x0000000800d60000.apply')
f(7,8528,1,1,'kyo/bench/ForkManyBench.catsBench$$anonfun$1$$anonfun$2$$anonfun$1')
f(8,8528,1,1,'cats/effect/IODeferred.get')
f(9,8528,1,1,'cats/effect/IODeferred.get')
f(10,8528,1,1,'cats/effect/IO$.defer')
f(11,8528,1,1,'cats/effect/IO$.delay')
f(12,8528,1,1,'cats/effect/IO$Delay$.apply')
f(13,8528,1,2,'cats.effect.IO$Delay')
f(3,8529,10024,1,'cats/effect/IOFiber.execR')
f(4,8529,4854,1,'cats/effect/ArrayStack.init')
f(5,8529,4854,2,'java.lang.Object[]')
f(4,13383,1206,1,'cats/effect/ByteStack$.create')
f(5,13383,1206,2,'int[]')
f(4,14589,3964,1,'cats/effect/IOFiber.runLoop')
f(5,14589,106,2,'cats.effect.IOFiber')
f(5,14695,243,1,'cats/effect/IOFiber.<init>')
f(6,14695,73,1,'cats/effect/ArrayStack$.apply')
f(7,14695,73,2,'cats.effect.ArrayStack')
f(6,14768,40,1,'cats/effect/CallbackStack$.apply')
f(7,14768,40,2,'cats.effect.CallbackStack')
f(6,14808,59,1,'cats/effect/IO$.async')
f(7,14808,24,2,'cats.effect.IO$$anon$3')
f(7,14832,35,1,'cats/effect/IO$IOCont$.apply')
f(8,14832,35,2,'cats.effect.IO$IOCont')
f(6,14867,31,1,'cats/effect/IO$.uncancelable')
f(7,14867,31,1,'cats/effect/IO$Uncancelable$.apply')
f(8,14867,31,2,'cats.effect.IO$Uncancelable')
f(6,14898,40,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,14898,40,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,14898,40,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,14898,23,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5b238')
f(9,14921,17,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5b828')
f(5,14938,1356,1,'cats/effect/IOFiber.succeeded')
f(6,14938,1286,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,14938,385,1,'cats/effect/IO$.pure')
f(8,14938,385,1,'cats/effect/IO$Pure$.apply')
f(9,14938,385,2,'cats.effect.IO$Pure')
f(7,15323,498,1,'cats/effect/IOFiber.done')
f(8,15323,498,1,'cats/effect/IO$.pure')
f(9,15323,498,1,'cats/effect/IO$Pure$.apply')
f(10,15323,498,2,'cats.effect.IO$Pure')
f(7,15821,403,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,15821,403,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,16224,70,1,'kyo/bench/ForkManyBench$$Lambda$101.0x0000000800d5d8b0.apply')
f(7,16224,70,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,16224,70,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,16224,30,1,'cats/effect/IO.flatMap')
f(10,16224,30,1,'cats/effect/IO$FlatMap$.apply')
f(11,16224,30,2,'cats.effect.IO$FlatMap')
f(9,16254,40,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,16254,40,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5cc00.newInvokeSpecial')
f(11,16254,40,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,16254,40,2,'kyo.bench.ForkManyBench$$Lambda$101+0x0000000800d5d8b0')
f(5,16294,2259,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d5d3d0.apply')
f(6,16294,2259,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,16294,2259,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,16294,2259,1,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d5d000.apply')
f(9,16294,2259,1,'kyo/bench/ForkManyBench.$anonfun$adapted$1')
f(10,16294,2259,1,'kyo/bench/ForkManyBench.$anonfun$1')
f(11,16294,1,1,'cats/effect/IODeferred.complete')
f(12,16294,1,1,'cats/effect/IODeferred.complete')
f(13,16294,1,1,'cats/effect/IO$.apply')
f(14,16294,1,1,'cats/effect/IO$.delay')
f(15,16294,1,1,'cats/effect/IO$Delay$.apply')
f(16,16294,1,2,'cats.effect.IO$Delay')
f(11,16295,1284,1,'scala/Tuple2$.apply')
f(12,16295,1284,2,'scala.Tuple2')
f(11,17579,974,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(12,17579,974,1,'java/lang/Integer.valueOf')
f(13,17579,974,2,'java.lang.Integer')
f(1,18553,849,1,'java/lang/Thread.run')
f(2,18553,849,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,18553,849,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,18553,849,1,'java/util/concurrent/FutureTask.run')
f(5,18553,849,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,18553,849,1,'java/util/concurrent/FutureTask.run')
f(7,18553,849,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,18553,849,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,18553,849,1,'java/lang/reflect/Method.invoke')
f(10,18553,849,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,18553,849,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,18553,849,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,18553,849,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_Throughput')
f(14,18553,849,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,18553,849,1,'kyo/bench/Bench.syncCats')
f(16,18553,829,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,18553,818,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,18553,677,1,'cats/effect/IO.unsafeRunAsync')
f(19,18553,675,1,'cats/effect/IO.unsafeRunFiber')
f(20,18553,276,2,'cats.effect.IOFiber')
f(20,18829,62,5,'cats.effect.IOFiber')
f(20,18891,270,1,'cats/effect/IOFiber.<init>')
f(21,18891,109,1,'cats/effect/ArrayStack$.apply')
f(22,18891,109,2,'cats.effect.ArrayStack')
f(21,19000,48,1,'cats/effect/CallbackStack$.apply')
f(22,19000,48,2,'cats.effect.CallbackStack')
f(21,19048,52,1,'cats/effect/IO$.async')
f(22,19048,4,2,'cats.effect.IO$$anon$3')
f(22,19052,48,1,'cats/effect/IO$IOCont$.apply')
f(23,19052,48,2,'cats.effect.IO$IOCont')
f(21,19100,45,1,'cats/effect/IO$.uncancelable')
f(22,19100,45,1,'cats/effect/IO$Uncancelable$.apply')
f(23,19100,45,2,'cats.effect.IO$Uncancelable')
f(21,19145,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,19145,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,19145,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,19145,4,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5b238')
f(24,19149,12,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5b828')
f(20,19161,6,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,19161,6,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,19161,6,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,19161,6,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,19161,6,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,19167,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,19167,61,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,19167,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,19167,61,2,'cats.effect.IO$$Lambda$92+0x0000000800d5a400')
f(19,19228,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,19228,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,19228,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,19228,2,2,'cats.effect.IO$$Lambda$90+0x0000000800d59038')
f(18,19230,15,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,19245,50,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,19245,50,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,19245,50,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,19245,50,2,'cats.effect.IOPlatform$$Lambda$95+0x0000000800d5e208')
f(18,19295,16,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,19295,16,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,19295,8,2,'java.lang.Object[]')
f(20,19303,5,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,19303,5,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,19308,3,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,19308,3,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,19308,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,19311,5,1,'scala/concurrent/package$.blocking')
f(19,19311,5,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,19311,5,1,'cats/effect/IOPlatform$$Lambda$95.0x0000000800d5e208.apply')
f(21,19311,5,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,19311,5,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,19311,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,19311,5,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,19316,55,1,'scala/util/Either.fold')
f(19,19316,55,1,'cats/effect/IOPlatform$$Lambda$110.0x0000000800d62448.apply')
f(20,19316,55,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,19316,55,1,'scala/Some$.apply')
f(22,19316,55,2,'scala.Some')
f(17,19371,11,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,19371,11,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,19371,11,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,19371,11,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,19371,11,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,19371,11,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,19371,11,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,19371,11,2,'scala.concurrent.duration.FiniteDuration')
f(16,19382,20,1,'kyo/bench/ForkManyBench.catsBench')
f(17,19382,2,1,'cats/effect/IO$.deferred')
f(18,19382,2,1,'cats/effect/IO$.apply')
f(19,19382,2,1,'cats/effect/IO$.delay')
f(20,19382,2,1,'cats/effect/IO$Delay$.apply')
f(21,19382,2,2,'cats.effect.IO$Delay')
f(17,19384,1,1,'cats/effect/IO.flatMap')
f(18,19384,1,1,'cats/effect/IO$FlatMap$.apply')
f(19,19384,1,2,'cats.effect.IO$FlatMap')
f(17,19385,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,19385,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,19385,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,19385,17,2,'kyo.bench.ForkManyBench$$Lambda$41+0x0000000800c8f0b0')
f(1,19402,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,19402,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,19402,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,19402,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,19402,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,19402,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,19402,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,19402,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,19402,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,19402,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,19402,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,19402,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,19402,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 656px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(41);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,1109,3,'all')
f(1,0,25,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,25,3,'thread_native_entry(Thread*)')
f(3,0,25,4,'Thread::call_run()')
f(4,0,24,4,'JavaThread::thread_main_inner()')
f(5,0,24,4,'CompileBroker::compiler_thread_loop()')
f(6,0,24,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,24,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,24,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,14,4,'Compile::Code_Gen()')
f(10,0,2,4,'Matcher::match()')
f(11,0,2,4,'Arena::contains(void const*) const')
f(10,2,1,4,'PhaseCFG::do_global_code_motion()')
f(11,2,1,4,'PhaseCFG::global_code_motion()')
f(12,2,1,4,'PhaseLive::compute(unsigned int)')
f(13,2,1,4,'IndexSet::initialize(unsigned int)')
f(10,3,11,4,'PhaseChaitin::Register_Allocate()')
f(11,3,1,4,'MachSpillCopyNode::ideal_reg() const')
f(11,4,1,4,'PhaseAggressiveCoalesce::insert_copies(Matcher&)')
f(11,5,3,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(11,8,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(11,9,1,4,'PhaseChaitin::cache_lrg_info()')
f(11,10,1,4,'PhaseChaitin::merge_multidefs()')
f(11,11,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,11,1,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(13,11,1,4,'PhaseChaitin::skip_copies(Node*)')
f(11,12,1,4,'PhaseIFG::Compute_Effective_Degree()')
f(12,12,1,4,'PhaseIFG::effective_degree(unsigned int) const')
f(11,13,1,4,'PhaseLive::compute(unsigned int)')
f(9,14,6,4,'Compile::Optimize()')
f(10,14,1,4,'ConnectionGraph::do_analysis(Compile*, PhaseIterGVN*)')
f(11,14,1,4,'ConnectionGraph::compute_escape()')
f(12,14,1,4,'ConnectionGraph::complete_connection_graph(GrowableArray<PointsToNode*>&, GrowableArray<JavaObjectNode*>&, GrowableArray<JavaObjectNode*>&, GrowableArray<FieldNode*>&) [clone .part.0]')
f(13,14,1,4,'elapsedTimer::start()')
f(14,14,1,4,'os::elapsed_counter()')
f(15,14,1,3,'clock_gettime')
f(16,14,1,3,'[vdso]')
f(10,15,2,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,15,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,15,1,4,'PhaseIdealLoop::Dominators()')
f(13,15,1,4,'NTarjan::DFS(NTarjan*, VectorSet&, PhaseIdealLoop*, unsigned int*)')
f(11,16,1,4,'PhaseIterGVN::optimize()')
f(12,16,1,4,'PhaseIterGVN::transform_old(Node*)')
f(13,16,1,4,'PhiNode::Ideal(PhaseGVN*, bool)')
f(14,16,1,4,'PhiNode::unique_input(PhaseTransform*, bool)')
f(10,17,1,4,'PhaseIterGVN::optimize()')
f(11,17,1,4,'PhaseIterGVN::transform_old(Node*)')
f(12,17,1,4,'RegionNode::Ideal(PhaseGVN*, bool)')
f(13,17,1,4,'PhaseIterGVN::remove_globally_dead_node(Node*)')
f(14,17,1,4,'Unique_Node_List::remove(Node*)')
f(10,18,2,4,'PhaseMacroExpand::expand_macro_nodes()')
f(11,18,2,4,'PhaseIterGVN::optimize()')
f(12,18,2,4,'PhaseIterGVN::transform_old(Node*)')
f(13,18,1,4,'NodeHash::hash_find_insert(Node*)')
f(13,19,1,4,'StoreNode::Identity(PhaseGVN*)')
f(14,19,1,4,'MemNode::find_previous_store(PhaseTransform*)')
f(15,19,1,4,'AddPNode::bottom_type() const')
f(9,20,1,4,'Compile::remove_useless_nodes(Unique_Node_List&)')
f(9,21,3,4,'ParseGenerator::generate(JVMState*)')
f(10,21,3,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,21,2,4,'Parse::do_all_blocks()')
f(12,21,2,4,'Parse::do_one_block()')
f(13,21,2,4,'Parse::do_call()')
f(14,21,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(15,21,1,4,'InlineTree::ok_to_inline(ciMethod*, JVMState*, ciCallProfile&, bool&)')
f(16,21,1,4,'ciMethod::get_flow_analysis()')
f(17,21,1,4,'ciTypeFlow::do_flow()')
f(18,21,1,4,'ciTypeFlow::flow_types()')
f(19,21,1,4,'ciTypeFlow::df_flow_types(ciTypeFlow::Block*, bool, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(20,21,1,4,'ciTypeFlow::flow_block(ciTypeFlow::Block*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(21,21,1,4,'ciTypeFlow::Block::successors(ciBytecodeStream*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(22,21,1,4,'ciTypeFlow::get_block_for(int, ciTypeFlow::JsrSet*, ciTypeFlow::CreateOption)')
f(23,21,1,4,'ciTypeFlow::Block::Block(ciTypeFlow*, ciBlock*, ciTypeFlow::JsrSet*)')
f(14,22,1,4,'ParseGenerator::generate(JVMState*)')
f(15,22,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(16,22,1,4,'Parse::do_all_blocks()')
f(17,22,1,4,'Parse::do_one_block()')
f(18,22,1,4,'Parse::do_call()')
f(19,22,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(20,22,1,4,'ParseGenerator::generate(JVMState*)')
f(21,22,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(22,22,1,4,'Parse::do_all_blocks()')
f(23,22,1,4,'Parse::do_one_block()')
f(24,22,1,4,'Parse::do_call()')
f(25,22,1,4,'ParseGenerator::generate(JVMState*)')
f(26,22,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(27,22,1,4,'Parse::do_all_blocks()')
f(28,22,1,4,'Parse::do_one_block()')
f(29,22,1,4,'Parse::do_call()')
f(30,22,1,4,'ParseGenerator::generate(JVMState*)')
f(31,22,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(32,22,1,4,'Parse::do_all_blocks()')
f(33,22,1,4,'GraphKit::stopped()')
f(11,23,1,4,'ciMethod::get_osr_flow_analysis(int)')
f(12,23,1,4,'ciTypeFlow::do_flow()')
f(13,23,1,4,'ciTypeFlow::flow_types()')
f(14,23,1,4,'ciTypeFlow::df_flow_types(ciTypeFlow::Block*, bool, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(15,23,1,4,'ciTypeFlow::flow_block(ciTypeFlow::Block*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(16,23,1,4,'ciTypeFlow::StateVector::apply_one_bytecode(ciBytecodeStream*)')
f(17,23,1,4,'ciTypeFlow::StateVector::do_invoke(ciBytecodeStream*, bool)')
f(4,24,1,4,'VMThread::run()')
f(5,24,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,24,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,24,1,4,'VM_Operation::evaluate()')
f(8,24,1,4,'VM_G1CollectForAllocation::doit()')
f(9,24,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,24,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,24,1,4,'G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo&, G1RedirtyCardsQueueSet*, G1ParScanThreadStateSet*)')
f(12,24,1,4,'G1CollectedHeap::post_evacuate_cleanup_1(G1ParScanThreadStateSet*, G1RedirtyCardsQueueSet*)')
f(13,24,1,4,'G1PostEvacuateCollectionSetCleanupTask1::G1PostEvacuateCollectionSetCleanupTask1(G1ParScanThreadStateSet*, G1RedirtyCardsQueueSet*)')
f(14,24,1,4,'G1BatchedGangTask::G1BatchedGangTask(char const*, G1GCPhaseTimes*)')
f(15,24,1,3,'__tls_get_addr')
f(1,25,4,3,'[unknown_Java]')
f(2,25,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(2,27,1,1,'cats/effect/IOFiber.succeeded')
f(2,28,1,1,'jdk/internal/misc/Unsafe.park')
f(1,29,1079,1,'cats/effect/unsafe/WorkerThread.run',0,2,0)
f(2,41,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(3,41,1,4,'G1CardTable::is_in_young(oopDesc*) const')
f(2,42,889,1,'cats/effect/IOFiber.run',25,0,0)
f(3,45,5,2,'cats/effect/IOFiber.asyncContinueSuccessfulR',3,0,0)
f(4,47,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(4,48,2,1,'cats/effect/IOFiber.succeeded')
f(5,48,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,48,2,1,'cats/effect/IOFiber.done')
f(7,48,2,1,'cats/effect/CallbackStack.apply')
f(8,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,48,2,1,'cats/effect/IO$$Lambda$92.0x0000000800d5a400.applyVoid')
f(11,48,2,1,'cats/effect/IO.$anonfun$6')
f(12,48,2,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,48,2,1,'cats/effect/kernel/Outcome.fold$')
f(14,48,2,1,'cats/effect/kernel/Outcome.fold')
f(15,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(16,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(17,48,2,1,'cats/effect/IO$$Lambda$113.0x0000000800d7b918.applyVoid')
f(18,48,2,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(20,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(21,48,2,1,'cats/effect/IO$$Lambda$91.0x0000000800d59440.applyVoid')
f(22,48,2,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(24,48,2,1,'scala/runtime/function/JProcedure1.apply')
f(25,48,2,1,'cats/effect/IOPlatform$$Lambda$88.0x0000000800d58970.applyVoid')
f(26,48,2,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,48,2,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,48,2,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(29,48,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(30,48,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(31,48,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(32,48,2,1,'jdk/internal/misc/Unsafe.unpark')
f(33,48,2,3,'pthread_cond_signal')
f(34,48,2,5,'entry_SYSCALL_64_after_hwframe')
f(35,48,2,5,'do_syscall_64')
f(36,48,2,5,'__x64_sys_futex')
f(37,48,2,5,'do_futex')
f(38,48,2,5,'futex_wake')
f(39,48,1,5,'get_futex_key')
f(39,49,1,5,'wake_up_q')
f(40,49,1,5,'_raw_spin_unlock_irqrestore')
f(3,50,209,1,'cats/effect/IOFiber.autoCedeR')
f(4,50,209,1,'cats/effect/IOFiber.runLoop')
f(5,56,3,2,'cats/effect/ArrayStack.push',3,0,0)
f(5,59,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,60,6,6,'cats/effect/IO$Start.tag',0,6,0)
f(5,66,60,1,'cats/effect/IOFiber.<init>')
f(6,105,3,2,'cats/effect/CallbackStack$.apply',2,0,0)
f(7,107,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(8,107,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(9,107,1,4,'MemAllocator::allocate() const')
f(10,107,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(11,107,1,4,'CollectedHeap::tlab_alloc_reserve() const')
f(6,108,5,2,'cats/effect/IO$.async',5,0,0)
f(7,110,3,2,'cats/effect/IO$IOCont$.apply',3,0,0)
f(6,113,12,2,'cats/effect/IO$.uncancelable',5,0,0)
f(7,114,4,2,'cats/effect/IO$Uncancelable$.apply',4,0,0)
f(8,117,1,2,'cats/effect/IO$Uncancelable.<init>',1,0,0)
f(7,118,7,1,'cats/effect/tracing/TracingPlatform.calculateTracingEvent')
f(6,125,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,125,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(8,125,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,126,7,2,'cats/effect/IOFiber.rescheduleFiber',7,0,0)
f(6,126,7,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',7,0,0)
f(7,126,7,2,'cats/effect/unsafe/WorkerThread.reschedule',7,0,0)
f(8,128,3,2,'cats/effect/unsafe/LocalQueue.isEmpty',3,0,0)
f(9,129,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',2,0,0)
f(8,131,2,2,'cats/effect/unsafe/WorkerThread.schedule',2,0,0)
f(9,132,1,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(5,133,78,1,'cats/effect/IOFiber.scheduleFiber')
f(6,133,78,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,133,78,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,133,22,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(9,143,6,2,'cats/effect/unsafe/LocalQueue.index',6,0,0)
f(9,149,3,2,'cats/effect/unsafe/ScalQueue.offer',3,0,0)
f(9,152,2,2,'cats/effect/unsafe/ScalQueue.offerAll',2,0,0)
f(9,154,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',1,0,0)
f(10,154,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(8,155,56,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,155,56,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,155,56,1,'jdk/internal/misc/Unsafe.unpark')
f(11,155,4,3,'Unsafe_Unpark')
f(12,157,2,4,'SafeThreadsListPtr::release_stable_list()')
f(11,159,52,3,'pthread_cond_signal')
f(12,162,49,5,'entry_SYSCALL_64_after_hwframe')
f(13,162,49,5,'do_syscall_64')
f(14,162,47,5,'__x64_sys_futex')
f(15,163,45,5,'do_futex')
f(16,163,45,5,'futex_wake')
f(17,169,1,5,'mark_wake_futex')
f(17,170,38,5,'wake_up_q')
f(18,170,38,5,'_raw_spin_unlock_irqrestore')
f(15,208,1,5,'futex_wake')
f(14,209,1,5,'do_futex')
f(14,210,1,5,'syscall_exit_to_user_mode_prepare')
f(5,211,15,1,'cats/effect/IOFiber.succeeded')
f(6,216,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,216,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,217,9,2,'cats/effect/IOFiber.runTerminusSuccessK',9,0,0)
f(7,217,9,2,'cats/effect/IOFiber.done',9,0,0)
f(8,217,6,2,'cats/effect/CallbackStack.apply',6,0,0)
f(8,223,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,223,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(8,225,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,225,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,225,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(5,226,29,2,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d5d3d0.apply',29,0,0)
f(6,226,29,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',29,0,0)
f(7,226,29,2,'cats/effect/kernel/SyncRef.spin$4',29,0,0)
f(8,226,29,2,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d5d000.apply',29,0,0)
f(9,226,29,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',29,0,0)
f(10,226,29,2,'kyo/bench/ForkManyBench.$anonfun$1',29,0,0)
f(11,226,29,2,'scala/runtime/BoxesRunTime.boxToInteger',29,0,0)
f(5,255,4,3,'vtable stub')
f(3,259,672,1,'cats/effect/IOFiber.execR',21,0,0)
f(4,267,8,2,'cats/effect/ArrayStack.init',7,0,0)
f(5,274,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(6,274,1,4,'InstanceKlass::array_klass(int, JavaThread*)')
f(4,275,7,2,'cats/effect/ByteStack$.push',7,0,0)
f(5,280,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(4,282,649,1,'cats/effect/IOFiber.runLoop')
f(5,378,4,6,'cats/effect/IO$Delay.tag',0,4,0)
f(5,382,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,386,5,6,'cats/effect/IO$Pure.tag',0,5,0)
f(5,391,1,1,'cats/effect/IODeferred$$Lambda$105.0x0000000800d61240.apply')
f(6,391,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,391,1,1,'cats/effect/CallbackStack.apply')
f(8,391,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,391,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,391,1,1,'cats/effect/IOFiber$$Lambda$106.0x0000000800d61920.applyVoid')
f(11,391,1,1,'cats/effect/IOFiber.$anonfun$2')
f(12,391,1,1,'cats/effect/IOFiber.stateLoop$1')
f(13,391,1,1,'cats/effect/IOFiber.loop$1')
f(14,391,1,1,'cats/effect/IOFiber.scheduleFiber')
f(15,391,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,391,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,391,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,391,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,391,1,1,'jdk/internal/misc/Unsafe.unpark')
f(20,391,1,3,'Unsafe_Unpark')
f(21,391,1,3,'pthread_mutex_lock')
f(5,392,4,1,'cats/effect/IOFiber.<init>')
f(6,395,1,2,'cats/effect/CallbackStack$.apply',1,0,0)
f(5,396,126,2,'cats/effect/IOFiber.rescheduleFiber',126,0,0)
f(6,396,126,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',126,0,0)
f(7,396,126,2,'cats/effect/unsafe/WorkerThread.reschedule',126,0,0)
f(8,396,5,2,'cats/effect/unsafe/LocalQueue.isEmpty',5,0,0)
f(8,401,121,2,'cats/effect/unsafe/WorkerThread.schedule',121,0,0)
f(9,401,121,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',121,0,0)
f(10,517,4,2,'java/util/concurrent/ThreadLocalRandom.nextInt',4,0,0)
f(11,517,4,2,'java/util/Random.nextInt',4,0,0)
f(12,519,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(13,519,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(14,519,2,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',2,0,0)
f(10,521,1,2,'java/util/concurrent/atomic/AtomicBoolean.get',1,0,0)
f(5,522,3,2,'cats/effect/IOFiber.scheduleFiber',1,0,0)
f(6,522,3,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',1,0,0)
f(7,522,3,2,'cats/effect/unsafe/WorkerThread.schedule',1,0,0)
f(8,522,3,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(9,523,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,523,2,1,'jdk/internal/misc/Unsafe.unpark')
f(11,523,2,3,'pthread_cond_signal')
f(12,523,2,5,'entry_SYSCALL_64_after_hwframe')
f(13,523,2,5,'do_syscall_64')
f(14,523,2,5,'__x64_sys_futex')
f(15,523,2,5,'do_futex')
f(16,523,1,5,'futex_wake')
f(17,523,1,5,'wake_up_q')
f(18,523,1,5,'_raw_spin_unlock_irqrestore')
f(16,524,1,5,'hash_futex')
f(5,525,48,1,'cats/effect/IOFiber.succeeded')
f(6,546,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,546,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,547,26,2,'cats/effect/IOFiber.runTerminusSuccessK',26,0,0)
f(7,548,5,2,'cats/effect/IO$.pure',5,0,0)
f(8,548,5,2,'cats/effect/IO$Pure$.apply',5,0,0)
f(7,553,18,2,'cats/effect/IOFiber.done',18,0,0)
f(8,559,2,2,'cats/effect/CallbackStack.apply',2,0,0)
f(8,561,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,561,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(8,563,8,2,'cats/effect/IO$.pure',8,0,0)
f(9,563,8,2,'cats/effect/IO$Pure$.apply',8,0,0)
f(10,563,8,2,'cats/effect/IO$Pure.<init>',8,0,0)
f(11,563,8,2,'cats/effect/IO.<init>',8,0,0)
f(12,563,8,2,'cats/effect/IOPlatform.<init>',8,0,0)
f(13,563,8,2,'java/lang/Object.<init>',8,0,0)
f(7,571,2,2,'cats/effect/kernel/Outcome$Succeeded$.apply',2,0,0)
f(8,571,2,2,'cats/effect/kernel/Outcome$Succeeded.<init>',2,0,0)
f(9,571,2,2,'java/lang/Object.<init>',2,0,0)
f(5,573,345,2,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d5d3d0.apply',345,0,0)
f(6,573,345,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',345,0,0)
f(7,573,345,2,'cats/effect/kernel/SyncRef.spin$4',345,0,0)
f(8,573,345,2,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d5d000.apply',345,0,0)
f(9,573,345,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',345,0,0)
f(10,573,345,2,'kyo/bench/ForkManyBench.$anonfun$1',345,0,0)
f(11,573,345,2,'scala/runtime/BoxesRunTime.boxToInteger',345,0,0)
f(12,917,1,5,'asm_sysvec_hyperv_stimer0')
f(13,917,1,5,'sysvec_hyperv_stimer0')
f(14,917,1,5,'irq_exit_rcu')
f(15,917,1,5,'__irq_exit_rcu')
f(16,917,1,5,'__softirqentry_text_start')
f(17,917,1,5,'run_rebalance_domains')
f(18,917,1,5,'update_blocked_averages')
f(5,918,13,3,'vtable stub')
f(2,931,2,2,'cats/effect/unsafe/LocalQueue.enqueueBatch',2,0,0)
f(2,933,53,2,'cats/effect/unsafe/ScalQueue.poll',49,0,0)
f(3,937,49,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',46,0,0)
f(4,938,5,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',5,0,0)
f(5,938,5,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',5,0,0)
f(6,941,2,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',2,0,0)
f(4,943,43,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',40,0,0)
f(5,944,25,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',24,0,0)
f(6,946,3,2,'java/lang/invoke/VarForm.getMemberName',3,0,0)
f(7,946,3,2,'java/lang/invoke/VarForm.getMemberNameOrNull',3,0,0)
f(6,949,20,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',20,0,0)
f(5,969,17,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',15,0,0)
f(6,978,2,2,'java/lang/invoke/VarForm.getMemberName',2,0,0)
f(6,980,6,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.setRelease',6,0,0)
f(2,986,5,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,986,1,1,'cats/effect/unsafe/ScalQueue.nonEmpty')
f(4,986,1,1,'cats/effect/unsafe/ScalQueue.isEmpty')
f(5,986,1,1,'java/util/concurrent/ConcurrentLinkedQueue.isEmpty')
f(6,986,1,6,'java/util/concurrent/ConcurrentLinkedQueue.first',0,1,0)
f(7,986,1,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',1,0,0)
f(3,987,4,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,987,4,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,987,4,1,'jdk/internal/misc/Unsafe.unpark')
f(6,987,4,3,'pthread_cond_signal')
f(7,987,4,5,'entry_SYSCALL_64_after_hwframe')
f(8,987,4,5,'do_syscall_64')
f(9,987,3,5,'__x64_sys_futex')
f(10,987,3,5,'do_futex')
f(11,987,3,5,'futex_wake')
f(12,987,3,5,'wake_up_q')
f(13,987,3,5,'_raw_spin_unlock_irqrestore')
f(9,990,1,5,'syscall_enter_from_user_mode')
f(2,991,1,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(3,991,1,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyShouldWakeup',1,0,0)
f(2,992,54,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,994,49,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,1022,1,2,'cats/effect/unsafe/LocalQueue.bufferForwarder',1,0,0)
f(4,1023,3,2,'cats/effect/unsafe/LocalQueue.index',3,0,0)
f(4,1026,8,2,'cats/effect/unsafe/LocalQueue.msb',8,0,0)
f(4,1034,1,2,'cats/effect/unsafe/LocalQueue.pack',1,0,0)
f(4,1035,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',1,0,0)
f(4,1036,7,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',7,0,0)
f(3,1043,3,2,'cats/effect/unsafe/ScalQueue.poll',3,0,0)
f(4,1043,3,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',3,0,0)
f(2,1046,3,2,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerFromSearching',2,0,0)
f(3,1048,1,1,'java/util/concurrent/atomic/AtomicInteger.getAndDecrement')
f(2,1049,7,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToSearching')
f(2,1056,52,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,1056,52,1,'java/util/concurrent/locks/LockSupport.park')
f(4,1056,52,1,'jdk/internal/misc/Unsafe.park')
f(5,1060,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(5,1061,9,3,'Unsafe_Park')
f(6,1062,5,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,1063,4,5,'entry_SYSCALL_64_after_hwframe')
f(8,1063,4,5,'do_syscall_64')
f(9,1063,3,5,'__x64_sys_futex')
f(10,1063,3,5,'do_futex')
f(11,1063,3,5,'futex_wake')
f(12,1065,1,5,'get_futex_key')
f(9,1066,1,5,'syscall_enter_from_user_mode')
f(6,1067,1,4,'Parker::park(bool, long)')
f(6,1068,2,3,'__tls_get_addr')
f(5,1070,37,3,'[unknown]')
f(6,1070,36,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,1074,32,5,'entry_SYSCALL_64_after_hwframe')
f(8,1074,32,5,'do_syscall_64')
f(9,1074,31,5,'__x64_sys_futex')
f(10,1074,31,5,'do_futex')
f(11,1074,31,5,'futex_wait')
f(12,1075,29,5,'futex_wait_queue_me')
f(13,1075,29,5,'schedule')
f(14,1075,29,5,'__schedule')
f(15,1075,29,5,'finish_task_switch.isra.0')
f(12,1104,1,5,'hash_futex')
f(9,1105,1,5,'syscall_enter_from_user_mode')
f(6,1106,1,3,'pthread_cond_wait')
f(5,1107,1,4,'java_lang_Thread::get_thread_status(oopDesc*)')
f(1,1108,1,1,'java/lang/Thread.run')
f(2,1108,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1108,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1108,1,1,'java/util/concurrent/FutureTask.run')
f(5,1108,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1108,1,1,'java/util/concurrent/FutureTask.run')
f(7,1108,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1108,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1108,1,1,'java/lang/reflect/Method.invoke')
f(10,1108,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1108,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1108,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1108,1,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_Throughput')
f(14,1108,1,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,1108,1,1,'kyo/bench/Bench.syncCats')
f(16,1108,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,1108,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,1108,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,1108,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,1108,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,1108,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,1108,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,1108,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,1108,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,1108,1,3,'pthread_cond_signal')
f(26,1108,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,1108,1,5,'do_syscall_64')
f(28,1108,1,5,'__x64_sys_futex')
f(29,1108,1,5,'do_futex')
f(30,1108,1,5,'futex_wake')
f(31,1108,1,5,'wake_up_q')
f(32,1108,1,5,'_raw_spin_unlock_irqrestore')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,11352,3,'all')
f(1,0,10067,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10067,1,'cats/effect/IOFiber.run')
f(3,0,9588,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,8593,1,'cats/effect/IOFiber.runLoop')
f(5,0,374,2,'cats.effect.ContState')
f(5,374,549,2,'cats.effect.IOFiber$$anon$1')
f(5,923,693,2,'cats.effect.IOFiber')
f(5,1616,180,1,'cats/arrow/FunctionK$.id')
f(6,1616,180,2,'cats.arrow.FunctionK$$anon$4')
f(5,1796,664,1,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d60000.apply')
f(6,1796,664,1,'cats/effect/IO$$anon$3.apply$$anonfun$1')
f(7,1796,322,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,1796,322,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,1796,322,1,'cats/effect/IO$.uncancelable')
f(10,1796,322,1,'cats/effect/IO$Uncancelable$.apply')
f(11,1796,322,2,'cats.effect.IO$Uncancelable')
f(7,2118,342,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2118,342,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,2118,342,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2118,342,2,'cats.effect.IO$$anon$3$$Lambda$101+0x0000000800d608c0')
f(5,2460,1194,1,'cats/effect/IO$$anon$3$$Lambda$101.0x0000000800d608c0.apply')
f(6,2460,1194,1,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1')
f(7,2460,271,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,2460,271,1,'cats/FlatMap$Ops.flatMap$')
f(9,2460,271,1,'cats/FlatMap$Ops.flatMap')
f(10,2460,271,1,'cats/effect/IO$$anon$2.flatMap')
f(11,2460,271,1,'cats/effect/IO$$anon$2.flatMap')
f(12,2460,271,1,'cats/effect/IO.flatMap')
f(13,2460,271,1,'cats/effect/IO$FlatMap$.apply')
f(14,2460,271,2,'cats.effect.IO$FlatMap')
f(7,2731,573,1,'cats/effect/IOFiber$$Lambda$92.0x0000000800d5a1e8.apply')
f(8,2731,573,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,2731,313,1,'cats/effect/IO$.apply')
f(10,2731,313,1,'cats/effect/IO$.delay')
f(11,2731,313,1,'cats/effect/IO$Delay$.apply')
f(12,2731,313,2,'cats.effect.IO$Delay')
f(9,3044,260,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,3044,260,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,3044,260,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,3044,260,2,'cats.effect.IOFiber$$Lambda$102+0x0000000800d769e0')
f(7,3304,350,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3304,350,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,3304,350,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3304,350,2,'cats.effect.IO$$anon$3$$Lambda$103+0x0000000800d76f00')
f(5,3654,525,1,'cats/effect/IO$$anon$3$$Lambda$103.0x0000000800d76f00.apply')
f(6,3654,525,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,3654,259,1,'cats/effect/IO$$anon$2.onCancel')
f(8,3654,259,1,'cats/effect/IO$$anon$2.onCancel')
f(9,3654,259,1,'cats/effect/IO.onCancel')
f(10,3654,259,1,'cats/effect/IO$OnCancel$.apply')
f(11,3654,259,2,'cats.effect.IO$OnCancel')
f(7,3913,266,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,3913,266,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,3913,266,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,3913,266,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,4179,240,1,'cats/effect/IO$.apply')
f(6,4179,240,1,'cats/effect/IO$.delay')
f(7,4179,240,1,'cats/effect/IO$Delay$.apply')
f(8,4179,240,2,'cats.effect.IO$Delay')
f(5,4419,242,1,'cats/effect/IO$EvalOn$.apply')
f(6,4419,242,2,'cats.effect.IO$EvalOn')
f(5,4661,219,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,4661,219,2,'cats.effect.IO$IOCont$Get')
f(5,4880,1130,1,'cats/effect/IOFiber$$Lambda$102.0x0000000800d769e0.apply')
f(6,4880,1130,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,4880,267,1,'cats/effect/IO$.apply')
f(8,4880,267,1,'cats/effect/IO$.delay')
f(9,4880,267,1,'cats/effect/IO$Delay$.apply')
f(10,4880,267,2,'cats.effect.IO$Delay')
f(7,5147,230,1,'cats/effect/IOFiber.registerListener')
f(8,5147,218,1,'cats/effect/CallbackStack.push')
f(9,5147,218,2,'cats.effect.CallbackStack')
f(8,5365,12,1,'scala/runtime/function/JProcedure1.apply')
f(9,5365,12,1,'scala/runtime/function/JProcedure1.apply')
f(10,5365,12,1,'cats/effect/IOFiber$$Lambda$104.0x0000000800d772d0.applyVoid')
f(11,5365,12,1,'cats/effect/IOFiber.$anonfun$1')
f(12,5365,12,1,'scala/util/Right$.apply')
f(13,5365,12,2,'scala.util.Right')
f(7,5377,438,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5377,246,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5377,246,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5377,246,2,'cats.effect.IOFiber$$Lambda$104+0x0000000800d772d0')
f(8,5623,192,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7c400.newInvokeSpecial')
f(9,5623,192,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5623,192,2,'cats.effect.IOFiber$$Lambda$106+0x0000000800d784f8')
f(7,5815,195,1,'scala/Some$.apply')
f(8,5815,195,2,'scala.Some')
f(5,6010,317,1,'cats/effect/IOFiber$$Lambda$91.0x0000000800d59bf8.apply')
f(6,6010,317,1,'cats/effect/IOFiber.$init$$$anonfun$1')
f(7,6010,317,1,'cats/effect/IO.void')
f(8,6010,317,1,'cats/effect/IO.map')
f(9,6010,317,1,'cats/effect/IO$Map$.apply')
f(10,6010,317,2,'cats.effect.IO$Map')
f(5,6327,1811,1,'cats/effect/IOFiber.<init>')
f(6,6327,490,1,'cats/effect/ArrayStack$.apply')
f(7,6327,490,2,'cats.effect.ArrayStack')
f(6,6817,237,1,'cats/effect/CallbackStack$.apply')
f(7,6817,237,2,'cats.effect.CallbackStack')
f(6,7054,464,1,'cats/effect/IO$.async')
f(7,7054,180,2,'cats.effect.IO$$anon$3')
f(7,7234,284,1,'cats/effect/IO$IOCont$.apply')
f(8,7234,284,2,'cats.effect.IO$IOCont')
f(6,7518,296,1,'cats/effect/IO$.uncancelable')
f(7,7518,296,1,'cats/effect/IO$Uncancelable$.apply')
f(8,7518,296,2,'cats.effect.IO$Uncancelable')
f(6,7814,324,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,7814,324,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,7814,324,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,7814,172,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d59bf8')
f(9,7986,152,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5a1e8')
f(5,8138,7,1,'cats/effect/IOFiber.succeeded')
f(6,8138,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,8138,1,1,'cats/effect/IOFiber.done')
f(8,8138,1,1,'cats/effect/CallbackStack.apply')
f(9,8138,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,8138,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,8138,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d58dc0.applyVoid')
f(12,8138,1,1,'cats/effect/IO.$anonfun$6')
f(13,8138,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,8138,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,8138,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,8138,1,2,'cats.effect.IO$$Lambda$108+0x0000000800d78eb8')
f(6,8139,6,1,'kyo/bench/InterruptBench$$Lambda$97.0x0000000800d5e5e8.apply')
f(7,8139,6,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(8,8139,6,1,'kyo/bench/InterruptBench.iterate$1')
f(9,8139,2,1,'cats/effect/IO.flatMap')
f(10,8139,2,1,'cats/effect/IO$FlatMap$.apply')
f(11,8139,2,2,'cats.effect.IO$FlatMap')
f(9,8141,2,1,'cats/effect/IO.start')
f(10,8141,2,1,'cats/effect/IO$Start$.apply')
f(11,8141,2,2,'cats.effect.IO$Start')
f(9,8143,2,1,'kyo/bench/InterruptBench.loop$1')
f(10,8143,2,1,'cats/effect/IO$.apply')
f(11,8143,2,1,'cats/effect/IO$.delay')
f(12,8143,2,1,'cats/effect/IO$Delay$.apply')
f(13,8143,2,2,'cats.effect.IO$Delay')
f(5,8145,448,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,8145,448,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,8145,448,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,8145,169,2,'cats.effect.IOFiber$$Lambda$105+0x0000000800d778f8')
f(8,8314,279,2,'cats.effect.IOFiber$$Lambda$99+0x0000000800d5d420')
f(4,8593,995,1,'cats/effect/IOFiber.succeeded')
f(5,8593,995,1,'kyo/bench/InterruptBench$$Lambda$97.0x0000000800d5e5e8.apply')
f(6,8593,995,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(7,8593,995,1,'kyo/bench/InterruptBench.iterate$1')
f(8,8593,488,1,'cats/effect/IO.flatMap')
f(9,8593,488,1,'cats/effect/IO$FlatMap$.apply')
f(10,8593,488,2,'cats.effect.IO$FlatMap')
f(8,9081,149,1,'cats/effect/IO.start')
f(9,9081,149,1,'cats/effect/IO$Start$.apply')
f(10,9081,149,2,'cats.effect.IO$Start')
f(8,9230,135,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9230,135,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9230,135,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9230,135,2,'kyo.bench.InterruptBench$$Lambda$97+0x0000000800d5e5e8')
f(8,9365,223,1,'kyo/bench/InterruptBench.loop$1')
f(9,9365,223,1,'cats/effect/IO$.apply')
f(10,9365,223,1,'cats/effect/IO$.delay')
f(11,9365,223,1,'cats/effect/IO$Delay$.apply')
f(12,9365,223,2,'cats.effect.IO$Delay')
f(3,9588,15,1,'cats/effect/IOFiber.cedeR')
f(4,9588,14,1,'cats/effect/IOFiber.runLoop')
f(5,9588,1,2,'cats.effect.IOFiber')
f(5,9589,4,1,'cats/effect/IO$$anon$3$$Lambda$101.0x0000000800d608c0.apply')
f(6,9589,4,1,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1')
f(7,9589,2,1,'cats/effect/IOFiber$$Lambda$92.0x0000000800d5a1e8.apply')
f(8,9589,2,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,9589,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,9589,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,9589,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,9589,2,2,'cats.effect.IOFiber$$Lambda$102+0x0000000800d769e0')
f(7,9591,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,9591,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,9591,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,9591,2,2,'cats.effect.IO$$anon$3$$Lambda$103+0x0000000800d76f00')
f(5,9593,3,1,'cats/effect/IO$$anon$3$$Lambda$103.0x0000000800d76f00.apply')
f(6,9593,3,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,9593,1,1,'cats/effect/IO$$anon$2.onCancel')
f(8,9593,1,1,'cats/effect/IO$$anon$2.onCancel')
f(9,9593,1,1,'cats/effect/IO.onCancel')
f(10,9593,1,1,'cats/effect/IO$OnCancel$.apply')
f(11,9593,1,2,'cats.effect.IO$OnCancel')
f(7,9594,2,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,9594,2,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,9594,2,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,9594,2,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,9596,2,1,'cats/effect/IOFiber$$Lambda$102.0x0000000800d769e0.apply')
f(6,9596,2,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,9596,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,9596,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,9596,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,9596,1,2,'cats.effect.IOFiber$$Lambda$104+0x0000000800d772d0')
f(7,9597,1,1,'scala/Some$.apply')
f(8,9597,1,2,'scala.Some')
f(5,9598,3,1,'cats/effect/IOFiber.<init>')
f(6,9598,1,1,'cats/effect/ArrayStack$.apply')
f(7,9598,1,2,'cats.effect.ArrayStack')
f(6,9599,1,1,'cats/effect/CallbackStack$.apply')
f(7,9599,1,2,'cats.effect.CallbackStack')
f(6,9600,1,1,'cats/effect/IO$.uncancelable')
f(7,9600,1,1,'cats/effect/IO$Uncancelable$.apply')
f(8,9600,1,2,'cats.effect.IO$Uncancelable')
f(5,9601,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,9601,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,9601,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,9601,1,2,'cats.effect.IOFiber$$Lambda$99+0x0000000800d5d420')
f(4,9602,1,1,'cats/effect/IOFiber.succeeded')
f(5,9602,1,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c8d788.apply')
f(6,9602,1,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,9602,1,1,'kyo/bench/InterruptBench.catsBench')
f(8,9602,1,1,'kyo/bench/InterruptBench.iterate$1')
f(9,9602,1,1,'kyo/bench/InterruptBench.loop$1')
f(10,9602,1,1,'cats/effect/IO$.apply')
f(11,9602,1,1,'cats/effect/IO$.delay')
f(12,9602,1,1,'cats/effect/IO$Delay$.apply')
f(13,9602,1,2,'cats.effect.IO$Delay')
f(3,9603,464,1,'cats/effect/IOFiber.execR')
f(4,9603,2,1,'cats/effect/ArrayStack.init')
f(5,9603,2,2,'java.lang.Object[]')
f(4,9605,9,1,'cats/effect/ByteStack$.create')
f(5,9605,9,2,'int[]')
f(4,9614,453,1,'cats/effect/IOFiber.done')
f(5,9614,161,1,'cats/effect/CallbackStack.apply')
f(6,9614,161,1,'scala/runtime/function/JProcedure1.apply')
f(7,9614,161,1,'scala/runtime/function/JProcedure1.apply')
f(8,9614,161,1,'cats/effect/IOFiber$$Lambda$104.0x0000000800d772d0.applyVoid')
f(9,9614,161,1,'cats/effect/IOFiber.$anonfun$1')
f(10,9614,161,1,'scala/util/Right$.apply')
f(11,9614,161,2,'scala.util.Right')
f(5,9775,292,1,'cats/effect/IO$.pure')
f(6,9775,292,1,'cats/effect/IO$Pure$.apply')
f(7,9775,292,2,'cats.effect.IO$Pure')
f(1,10067,1282,1,'java/lang/Thread.run')
f(2,10067,1282,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10067,1282,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10067,1282,1,'java/util/concurrent/FutureTask.run')
f(5,10067,1282,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10067,1282,1,'java/util/concurrent/FutureTask.run')
f(7,10067,1282,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10067,1282,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10067,1,2,'java.lang.Object[]')
f(9,10068,1281,1,'java/lang/reflect/Method.invoke')
f(10,10068,1281,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10068,1281,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10068,1281,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10068,1281,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_Throughput')
f(14,10068,1281,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,10068,1281,1,'kyo/bench/Bench.forkCats')
f(16,10068,40,1,'cats/effect/IO.flatMap')
f(17,10068,40,1,'cats/effect/IO$FlatMap$.apply')
f(18,10068,40,2,'cats.effect.IO$FlatMap')
f(16,10108,1174,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10108,1131,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10108,769,1,'cats/effect/IO.unsafeRunAsync')
f(19,10108,622,1,'cats/effect/IO.unsafeRunFiber')
f(20,10108,159,2,'cats.effect.IOFiber')
f(20,10267,358,1,'cats/effect/IOFiber.<init>')
f(21,10267,60,1,'cats/effect/ArrayStack$.apply')
f(22,10267,60,2,'cats.effect.ArrayStack')
f(21,10327,93,1,'cats/effect/CallbackStack$.apply')
f(22,10327,93,2,'cats.effect.CallbackStack')
f(21,10420,128,1,'cats/effect/IO$.async')
f(22,10420,52,2,'cats.effect.IO$$anon$3')
f(22,10472,76,1,'cats/effect/IO$IOCont$.apply')
f(23,10472,76,2,'cats.effect.IO$IOCont')
f(21,10548,46,1,'cats/effect/IO$.uncancelable')
f(22,10548,46,1,'cats/effect/IO$Uncancelable$.apply')
f(23,10548,46,2,'cats.effect.IO$Uncancelable')
f(21,10594,31,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10594,31,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10594,31,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10594,23,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d59bf8')
f(24,10617,8,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5a1e8')
f(20,10625,24,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,10625,24,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,10625,24,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,10625,24,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,10625,24,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,10649,81,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10649,81,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,10649,81,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10649,81,2,'cats.effect.IO$$Lambda$90+0x0000000800d58dc0')
f(19,10730,147,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,10730,147,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,10730,147,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,10730,52,2,'cats.effect.IO$$Lambda$87+0x0000000800d55b68')
f(22,10782,80,2,'cats.effect.IO$$Lambda$88+0x0000000800d54800')
f(22,10862,15,2,'cats.effect.IO$$Lambda$89+0x0000000800d58000')
f(18,10877,86,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,10963,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10963,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10963,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10963,9,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d55760')
f(18,10972,194,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,10972,194,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,10972,36,2,'java.lang.Object[]')
f(20,11008,33,2,'java.util.concurrent.locks.ReentrantLock')
f(20,11041,57,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,11041,57,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,11098,68,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,11098,68,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,11098,68,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,11166,49,1,'scala/concurrent/package$.blocking')
f(19,11166,49,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,11166,49,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5abc8.apply')
f(21,11166,49,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,11166,49,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,11166,49,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,11166,49,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,11215,24,1,'scala/util/Either.fold')
f(19,11215,24,1,'cats/effect/IOPlatform$$Lambda$111.0x0000000800d79a90.apply')
f(20,11215,24,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,11215,24,1,'scala/Some$.apply')
f(22,11215,24,2,'scala.Some')
f(17,11239,43,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,11239,43,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,11239,43,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,11239,43,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,11239,43,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,11239,43,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,11239,43,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,11239,43,2,'scala.concurrent.duration.FiniteDuration')
f(16,11282,67,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,11282,67,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,11282,67,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,11282,67,2,'kyo.bench.Bench$$Lambda$39+0x0000000800c8d788')
f(1,11349,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,11349,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,11349,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,11349,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,11349,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,11349,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,11349,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,11349,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,11349,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,11349,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,11349,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,11349,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,11349,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,436,3,'all')
f(1,0,432,1,'cats/effect/unsafe/WorkerThread.run')
f(2,4,269,1,'cats/effect/IOFiber.run')
f(3,5,208,1,'cats/effect/IOFiber.asyncContinueSuccessfulR',4,0,0)
f(4,8,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(4,9,175,1,'cats/effect/IOFiber.runLoop')
f(5,23,15,2,'cats/effect/ArrayStack.push',12,0,0)
f(6,36,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(7,36,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(8,36,1,4,'MemAllocator::allocate() const')
f(9,36,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(10,36,1,4,'CollectedHeap::fill_with_dummy_object(HeapWordImpl**, HeapWordImpl**, bool)')
f(6,37,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,38,9,2,'cats/effect/ByteStack$.push',4,0,0)
f(5,47,3,2,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d60000.apply',3,0,0)
f(6,48,2,2,'cats/effect/IO$$anon$3.apply$$anonfun$1',2,0,0)
f(7,48,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(8,48,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(9,48,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(10,48,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(7,49,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(8,49,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial',1,0,0)
f(5,50,3,2,'cats/effect/IO$$anon$3$$Lambda$101.0x0000000800d608c0.apply',3,0,0)
f(6,50,3,2,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1',3,0,0)
f(7,50,3,2,'cats/effect/IOFiber$$Lambda$92.0x0000000800d5a1e8.apply',3,0,0)
f(8,50,3,2,'cats/effect/IOFiber.$init$$$anonfun$2',3,0,0)
f(9,50,3,2,'cats/effect/IO$.apply',3,0,0)
f(10,50,3,2,'cats/effect/IO$.delay',3,0,0)
f(11,50,3,2,'cats/effect/IO$Delay$.apply',3,0,0)
f(5,53,4,1,'cats/effect/IO$$anon$3$$Lambda$103.0x0000000800d76f00.apply')
f(6,55,2,2,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1',2,0,0)
f(7,55,1,2,'cats/effect/IO$$anon$2.onCancel',1,0,0)
f(8,55,1,2,'cats/effect/IO$$anon$2.onCancel',1,0,0)
f(9,55,1,2,'cats/effect/IO.onCancel',1,0,0)
f(10,55,1,2,'cats/effect/IO$OnCancel$.apply',1,0,0)
f(7,56,1,2,'cats/effect/IOFiber$$anon$1.apply',1,0,0)
f(8,56,1,2,'cats/effect/IOFiber$$anon$1.apply',1,0,0)
f(5,57,1,2,'cats/effect/IO$$anon$3.apply',1,0,0)
f(6,57,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,57,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(8,57,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,58,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(5,61,1,2,'cats/effect/IO$IOCont$Get$.apply',1,0,0)
f(6,61,1,2,'cats/effect/IO$IOCont$Get.<init>',1,0,0)
f(5,62,1,6,'cats/effect/IO$IOCont$Get.tag',0,1,0)
f(5,63,3,6,'cats/effect/IO$IOCont.tag',0,3,0)
f(5,66,1,6,'cats/effect/IO$Map.tag',0,1,0)
f(5,67,4,6,'cats/effect/IO$Start.tag',0,4,0)
f(5,71,2,6,'cats/effect/IO$Uncancelable.tag',0,2,0)
f(5,73,2,2,'cats/effect/IOFiber$$Lambda$91.0x0000000800d59bf8.apply',2,0,0)
f(6,73,2,2,'cats/effect/IOFiber.$init$$$anonfun$1',2,0,0)
f(7,73,1,2,'cats/effect/IO.void',1,0,0)
f(7,74,1,2,'cats/effect/IOFiber.join',1,0,0)
f(5,75,23,1,'cats/effect/IOFiber.<init>')
f(6,89,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(7,89,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(8,89,1,4,'MemAllocator::allocate() const')
f(9,89,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(10,89,1,4,'ThreadLocalAllocBuffer::retire_before_allocation()')
f(11,89,1,4,'HandleMark::initialize(Thread*)')
f(6,90,3,2,'cats/effect/IO$.async',3,0,0)
f(7,92,1,2,'cats/effect/IO$IOCont$.apply',1,0,0)
f(6,93,2,2,'cats/effect/IO$.uncancelable',2,0,0)
f(7,93,2,2,'cats/effect/IO$Uncancelable$.apply',2,0,0)
f(6,95,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(7,95,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(8,95,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',3,0,0)
f(5,98,55,2,'cats/effect/IOFiber.scheduleFiber',32,0,0)
f(6,99,54,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',31,0,0)
f(7,100,53,2,'cats/effect/unsafe/WorkerThread.schedule',30,0,0)
f(8,109,13,2,'cats/effect/unsafe/LocalQueue.enqueue',13,0,0)
f(9,117,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',5,0,0)
f(10,117,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',5,0,0)
f(8,122,31,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',8,0,0)
f(9,123,4,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyShouldWakeup',3,0,0)
f(10,126,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(11,126,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(12,126,1,4,'MemAllocator::allocate() const')
f(9,127,4,2,'java/util/concurrent/ThreadLocalRandom.nextInt',4,0,0)
f(10,127,4,2,'java/util/Random.nextInt',4,0,0)
f(11,129,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(12,130,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(9,131,22,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,131,22,1,'jdk/internal/misc/Unsafe.unpark')
f(11,131,22,3,'pthread_cond_signal')
f(12,132,21,5,'entry_SYSCALL_64_after_hwframe')
f(13,132,21,5,'do_syscall_64')
f(14,132,21,5,'__x64_sys_futex')
f(15,132,21,5,'do_futex')
f(16,132,20,5,'futex_wake')
f(17,134,1,5,'mark_wake_futex')
f(17,135,17,5,'wake_up_q')
f(18,135,17,5,'_raw_spin_unlock_irqrestore')
f(16,152,1,5,'hash_futex')
f(5,153,9,1,'cats/effect/IOFiber.succeeded')
f(6,158,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(6,159,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,159,1,1,'cats/effect/IOFiber.done')
f(8,159,1,1,'cats/effect/CallbackStack.apply')
f(9,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,159,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d58dc0.applyVoid')
f(12,159,1,1,'cats/effect/IO.$anonfun$6')
f(13,159,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,159,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,159,1,1,'cats/effect/kernel/Outcome.fold')
f(16,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,159,1,1,'cats/effect/IO$$Lambda$109.0x0000000800d792c0.applyVoid')
f(19,159,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,159,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d58000.applyVoid')
f(23,159,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,159,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,159,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d55760.applyVoid')
f(27,159,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,159,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,159,1,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,159,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,159,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,159,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,159,1,1,'jdk/internal/misc/Unsafe.unpark')
f(34,159,1,3,'pthread_cond_signal')
f(35,159,1,5,'entry_SYSCALL_64_after_hwframe')
f(36,159,1,5,'do_syscall_64')
f(37,159,1,5,'__x64_sys_futex')
f(38,159,1,5,'do_futex')
f(39,159,1,5,'futex_wake')
f(40,159,1,5,'wake_up_q')
f(41,159,1,5,'_raw_spin_unlock_irqrestore')
f(6,160,1,3,'itable stub')
f(6,161,1,1,'kyo/bench/InterruptBench$$Lambda$96.0x0000000800d5e220.apply')
f(5,162,4,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',4,0,0)
f(6,163,3,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',3,0,0)
f(7,165,1,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.getAndSet',1,0,0)
f(8,165,1,2,'java/util/Objects.requireNonNull',1,0,0)
f(5,166,4,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',4,0,0)
f(6,167,3,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',3,0,0)
f(7,169,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(5,170,14,3,'vtable stub')
f(4,184,29,1,'cats/effect/IOFiber.succeeded')
f(5,201,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(5,202,4,3,'itable stub')
f(5,206,7,1,'kyo/bench/InterruptBench$$Lambda$97.0x0000000800d5e5e8.apply')
f(6,207,6,2,'kyo/bench/InterruptBench.iterate$1$$anonfun$2',6,0,0)
f(7,207,6,2,'kyo/bench/InterruptBench.iterate$1',6,0,0)
f(8,207,3,2,'cats/effect/IO.flatMap',3,0,0)
f(9,207,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(8,210,1,2,'cats/effect/IO.start',1,0,0)
f(9,210,1,2,'cats/effect/IO$Start$.apply',1,0,0)
f(8,211,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(9,211,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(10,211,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(3,213,1,1,'cats/effect/IOFiber.cedeR')
f(4,213,1,1,'cats/effect/IOFiber.runLoop')
f(5,213,1,1,'cats/effect/IOFiber.scheduleFiber')
f(6,213,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,213,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,213,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,213,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,213,1,1,'jdk/internal/misc/Unsafe.unpark')
f(11,213,1,3,'pthread_cond_signal')
f(12,213,1,5,'entry_SYSCALL_64_after_hwframe')
f(13,213,1,5,'do_syscall_64')
f(14,213,1,5,'__x64_sys_futex')
f(15,213,1,5,'do_futex')
f(16,213,1,5,'futex_wake')
f(17,213,1,5,'wake_up_q')
f(18,213,1,5,'_raw_spin_unlock_irqrestore')
f(3,214,59,2,'cats/effect/IOFiber.execR',27,0,0)
f(4,215,3,1,'cats/effect/IOFiber$.OutcomeCanceled')
f(4,218,55,2,'cats/effect/IOFiber.done',26,0,0)
f(5,229,36,1,'cats/effect/CallbackStack.apply',7,0,0)
f(6,230,35,1,'scala/runtime/function/JProcedure1.apply',6,0,0)
f(7,230,35,1,'scala/runtime/function/JProcedure1.apply',6,0,0)
f(8,231,34,1,'cats/effect/IOFiber$$Lambda$104.0x0000000800d772d0.applyVoid',5,0,0)
f(9,231,34,1,'cats/effect/IOFiber.$anonfun$1',5,0,0)
f(10,231,34,1,'scala/runtime/function/JProcedure1.apply',5,0,0)
f(11,231,34,1,'scala/runtime/function/JProcedure1.apply',5,0,0)
f(12,231,34,1,'cats/effect/IOFiber$$Lambda$99.0x0000000800d5d420.applyVoid',5,0,0)
f(13,231,34,1,'cats/effect/IOFiber.$anonfun$2',5,0,0)
f(14,231,34,1,'cats/effect/IOFiber.stateLoop$1',5,0,0)
f(15,233,31,1,'cats/effect/IOFiber.loop$1',2,0,0)
f(16,234,29,1,'cats/effect/IOFiber.scheduleFiber')
f(17,234,29,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(18,234,29,1,'cats/effect/unsafe/WorkerThread.schedule')
f(19,234,3,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(20,235,1,2,'cats/effect/unsafe/LocalQueue.index',1,0,0)
f(20,236,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(19,237,26,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(20,238,1,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyShouldWakeup',1,0,0)
f(21,238,1,2,'java/util/concurrent/atomic/AtomicInteger.get',1,0,0)
f(20,239,24,1,'java/util/concurrent/locks/LockSupport.unpark')
f(21,239,24,1,'jdk/internal/misc/Unsafe.unpark')
f(22,240,23,3,'pthread_cond_signal')
f(23,240,23,5,'entry_SYSCALL_64_after_hwframe')
f(24,240,23,5,'do_syscall_64')
f(25,240,22,5,'__x64_sys_futex')
f(26,240,22,5,'do_futex')
f(27,240,21,5,'futex_wake')
f(28,241,20,5,'wake_up_q')
f(29,241,20,5,'_raw_spin_unlock_irqrestore')
f(27,261,1,5,'hash_futex')
f(25,262,1,5,'syscall_enter_from_user_mode')
f(16,263,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(15,264,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(16,264,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(5,265,8,2,'cats/effect/IO$.pure',8,0,0)
f(6,266,7,2,'cats/effect/IO$Pure$.apply',7,0,0)
f(7,269,4,2,'cats/effect/IO$Pure.<init>',4,0,0)
f(8,272,1,2,'cats/effect/IO.<init>',1,0,0)
f(2,273,6,2,'cats/effect/unsafe/LocalQueue.dequeue',6,0,0)
f(3,276,3,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',3,0,0)
f(2,279,23,2,'cats/effect/unsafe/ScalQueue.poll',23,0,0)
f(3,279,22,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',22,0,0)
f(4,279,2,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',2,0,0)
f(5,280,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,280,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(4,281,20,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',20,0,0)
f(5,281,16,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',16,0,0)
f(6,282,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(6,283,14,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',14,0,0)
f(5,297,4,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',4,0,0)
f(6,299,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(7,299,1,2,'java/lang/invoke/VarForm.getMemberNameOrNull',1,0,0)
f(6,300,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.setRelease',1,0,0)
f(3,301,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,301,1,2,'java/util/Random.nextInt',1,0,0)
f(2,302,36,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,302,36,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,302,36,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,302,36,1,'jdk/internal/misc/Unsafe.unpark')
f(6,303,3,3,'Unsafe_Unpark')
f(7,304,2,4,'oopDesc::address_field(int) const')
f(6,306,32,3,'pthread_cond_signal')
f(7,307,31,5,'entry_SYSCALL_64_after_hwframe')
f(8,307,31,5,'do_syscall_64')
f(9,307,31,5,'__x64_sys_futex')
f(10,307,31,5,'do_futex')
f(11,307,30,5,'futex_wake')
f(12,307,1,5,'wake_q_add_safe')
f(12,308,29,5,'wake_up_q')
f(13,309,28,5,'_raw_spin_unlock_irqrestore')
f(11,337,1,5,'hash_futex')
f(2,338,10,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,340,3,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,341,1,2,'cats/effect/unsafe/LocalQueue.msb',1,0,0)
f(4,342,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',1,0,0)
f(5,342,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(3,343,5,2,'cats/effect/unsafe/ScalQueue.poll',5,0,0)
f(4,343,4,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',4,0,0)
f(4,347,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(5,347,1,2,'java/util/Random.nextInt',1,0,0)
f(2,348,84,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(3,348,84,1,'java/util/concurrent/locks/LockSupport.park')
f(4,348,84,1,'jdk/internal/misc/Unsafe.park')
f(5,352,5,3,'Unsafe_Park')
f(6,354,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,354,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,354,1,5,'__x64_sys_futex')
f(6,355,1,4,'Parker::park(bool, long)')
f(6,356,1,3,'pthread_mutex_unlock')
f(5,357,74,3,'[unknown]')
f(6,357,70,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(7,366,61,5,'entry_SYSCALL_64_after_hwframe')
f(8,366,1,5,'__x64_sys_futex')
f(8,367,60,5,'do_syscall_64')
f(9,367,53,5,'__x64_sys_futex')
f(10,367,53,5,'do_futex')
f(11,367,53,5,'futex_wait')
f(12,370,1,5,'__get_user_nocheck_4')
f(12,371,48,5,'futex_wait_queue_me')
f(13,371,48,5,'schedule')
f(14,372,47,5,'__schedule')
f(15,373,46,5,'finish_task_switch.isra.0')
f(12,419,1,5,'hash_futex')
f(9,420,1,5,'syscall_enter_from_user_mode')
f(9,421,6,5,'syscall_exit_to_user_mode')
f(10,421,6,5,'exit_to_user_mode_prepare')
f(11,421,6,5,'exit_to_user_mode_loop')
f(12,421,5,5,'__rseq_handle_notify_resume')
f(13,421,2,5,'__put_user_nocheck_8')
f(13,423,3,5,'rseq_ip_fixup')
f(14,423,3,5,'__get_user_8')
f(12,426,1,5,'blkcg_maybe_throttle_current')
f(6,427,3,3,'pthread_cond_wait')
f(6,430,1,3,'pthread_mutex_trylock')
f(5,431,1,4,'java_lang_Thread::get_thread_status(oopDesc*)')
f(1,432,4,1,'java/lang/Thread.run')
f(2,432,4,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,432,4,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,432,4,1,'java/util/concurrent/FutureTask.run')
f(5,432,4,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,432,4,1,'java/util/concurrent/FutureTask.run')
f(7,432,4,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,432,4,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,432,4,1,'java/lang/reflect/Method.invoke')
f(10,432,4,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,432,4,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,432,4,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,432,4,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_Throughput')
f(14,432,4,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_thrpt_jmhStub',0,0,1)
f(15,433,3,1,'kyo/bench/Bench.forkCats')
f(16,433,3,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,433,3,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,433,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,433,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,433,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,433,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,433,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,433,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,433,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,433,1,3,'pthread_cond_signal')
f(26,433,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,433,1,5,'do_syscall_64')
f(28,433,1,5,'__x64_sys_futex')
f(29,433,1,5,'do_futex')
f(30,433,1,5,'futex_wake')
f(31,433,1,5,'wake_up_q')
f(32,433,1,5,'_raw_spin_unlock_irqrestore')
f(18,434,2,1,'scala/concurrent/package$.blocking')
f(19,434,2,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,434,2,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5abc8.apply')
f(21,434,2,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,434,2,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,434,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,434,1,3,'clock_gettime')
f(25,434,1,3,'[vdso]')
f(24,435,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,435,1,1,'jdk/internal/misc/Unsafe.park')
f(26,435,1,3,'[unknown]')
f(27,435,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 560px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(35);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,11779,3,'all')
f(1,0,10467,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10467,1,'cats/effect/IOFiber.run')
f(3,0,9985,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,8924,1,'cats/effect/IOFiber.runLoop')
f(5,0,428,2,'cats.effect.ContState')
f(5,428,579,2,'cats.effect.IOFiber$$anon$1')
f(5,1007,713,2,'cats.effect.IOFiber')
f(5,1720,216,1,'cats/arrow/FunctionK$.id')
f(6,1720,216,2,'cats.arrow.FunctionK$$anon$4')
f(5,1936,1160,1,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d60250.apply')
f(6,1936,1160,1,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1')
f(7,1936,261,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,1936,261,1,'cats/FlatMap$Ops.flatMap$')
f(9,1936,261,1,'cats/FlatMap$Ops.flatMap')
f(10,1936,261,1,'cats/effect/IO$$anon$2.flatMap')
f(11,1936,261,1,'cats/effect/IO$$anon$2.flatMap')
f(12,1936,261,1,'cats/effect/IO.flatMap')
f(13,1936,261,1,'cats/effect/IO$FlatMap$.apply')
f(14,1936,261,2,'cats.effect.IO$FlatMap')
f(7,2197,567,1,'cats/effect/IOFiber$$Lambda$95.0x0000000800d5b628.apply')
f(8,2197,567,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,2197,292,1,'cats/effect/IO$.apply')
f(10,2197,292,1,'cats/effect/IO$.delay')
f(11,2197,292,1,'cats/effect/IO$Delay$.apply')
f(12,2197,292,2,'cats.effect.IO$Delay')
f(9,2489,275,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,2489,275,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,2489,275,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,2489,275,2,'cats.effect.IOFiber$$Lambda$101+0x0000000800d765e0')
f(7,2764,332,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2764,332,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,2764,332,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2764,332,2,'cats.effect.IO$$anon$3$$Lambda$102+0x0000000800d76b00')
f(5,3096,537,1,'cats/effect/IO$$anon$3$$Lambda$102.0x0000000800d76b00.apply')
f(6,3096,537,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,3096,270,1,'cats/effect/IO$$anon$2.onCancel')
f(8,3096,270,1,'cats/effect/IO$$anon$2.onCancel')
f(9,3096,270,1,'cats/effect/IO.onCancel')
f(10,3096,270,1,'cats/effect/IO$OnCancel$.apply')
f(11,3096,270,2,'cats.effect.IO$OnCancel')
f(7,3366,267,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,3366,267,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,3366,267,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,3366,267,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,3633,665,1,'cats/effect/IO$$anon$3$$Lambda$99.0x0000000800d5db10.apply')
f(6,3633,665,1,'cats/effect/IO$$anon$3.apply$$anonfun$1')
f(7,3633,345,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,3633,345,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,3633,345,1,'cats/effect/IO$.uncancelable')
f(10,3633,345,1,'cats/effect/IO$Uncancelable$.apply')
f(11,3633,345,2,'cats.effect.IO$Uncancelable')
f(7,3978,320,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3978,320,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,3978,320,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3978,320,2,'cats.effect.IO$$anon$3$$Lambda$100+0x0000000800d60250')
f(5,4298,272,1,'cats/effect/IO$.apply')
f(6,4298,272,1,'cats/effect/IO$.delay')
f(7,4298,272,1,'cats/effect/IO$Delay$.apply')
f(8,4298,272,2,'cats.effect.IO$Delay')
f(5,4570,271,1,'cats/effect/IO$EvalOn$.apply')
f(6,4570,271,2,'cats.effect.IO$EvalOn')
f(5,4841,192,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,4841,192,2,'cats.effect.IO$IOCont$Get')
f(5,5033,1194,1,'cats/effect/IOFiber$$Lambda$101.0x0000000800d765e0.apply')
f(6,5033,1194,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,5033,281,1,'cats/effect/IO$.apply')
f(8,5033,281,1,'cats/effect/IO$.delay')
f(9,5033,281,1,'cats/effect/IO$Delay$.apply')
f(10,5033,281,2,'cats.effect.IO$Delay')
f(7,5314,219,1,'cats/effect/IOFiber.registerListener')
f(8,5314,202,1,'cats/effect/CallbackStack.push')
f(9,5314,202,2,'cats.effect.CallbackStack')
f(8,5516,17,1,'scala/runtime/function/JProcedure1.apply')
f(9,5516,17,1,'scala/runtime/function/JProcedure1.apply')
f(10,5516,17,1,'cats/effect/IOFiber$$Lambda$103.0x0000000800d76ed0.applyVoid')
f(11,5516,17,1,'cats/effect/IOFiber.$anonfun$1')
f(12,5516,17,1,'scala/util/Right$.apply')
f(13,5516,17,2,'scala.util.Right')
f(7,5533,499,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5533,259,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5533,259,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5533,259,2,'cats.effect.IOFiber$$Lambda$103+0x0000000800d76ed0')
f(8,5792,240,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d78400.newInvokeSpecial')
f(9,5792,240,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5792,240,2,'cats.effect.IOFiber$$Lambda$105+0x0000000800d7c2d8')
f(7,6032,195,1,'scala/Some$.apply')
f(8,6032,195,2,'scala.Some')
f(5,6227,315,1,'cats/effect/IOFiber$$Lambda$94.0x0000000800d5b038.apply')
f(6,6227,315,1,'cats/effect/IOFiber.$init$$$anonfun$1')
f(7,6227,315,1,'cats/effect/IO.void')
f(8,6227,315,1,'cats/effect/IO.map')
f(9,6227,315,1,'cats/effect/IO$Map$.apply')
f(10,6227,315,2,'cats.effect.IO$Map')
f(5,6542,1872,1,'cats/effect/IOFiber.<init>')
f(6,6542,503,1,'cats/effect/ArrayStack$.apply')
f(7,6542,503,2,'cats.effect.ArrayStack')
f(6,7045,269,1,'cats/effect/CallbackStack$.apply')
f(7,7045,269,2,'cats.effect.CallbackStack')
f(6,7314,430,1,'cats/effect/IO$.async')
f(7,7314,182,2,'cats.effect.IO$$anon$3')
f(7,7496,248,1,'cats/effect/IO$IOCont$.apply')
f(8,7496,248,2,'cats.effect.IO$IOCont')
f(6,7744,314,1,'cats/effect/IO$.uncancelable')
f(7,7744,314,1,'cats/effect/IO$Uncancelable$.apply')
f(8,7744,314,2,'cats.effect.IO$Uncancelable')
f(6,8058,356,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,8058,356,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,8058,356,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,8058,185,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5b038')
f(9,8243,171,2,'cats.effect.IOFiber$$Lambda$95+0x0000000800d5b628')
f(5,8414,13,1,'cats/effect/IOFiber.succeeded')
f(6,8414,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,8414,1,1,'cats/effect/IOFiber.done')
f(8,8414,1,1,'cats/effect/CallbackStack.apply')
f(9,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,8414,1,1,'cats/effect/IO$$Lambda$93.0x0000000800d5a200.applyVoid')
f(12,8414,1,1,'cats/effect/IO.$anonfun$6')
f(13,8414,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,8414,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,8414,1,1,'cats/effect/kernel/Outcome.fold')
f(16,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,8414,1,1,'cats/effect/IO$$Lambda$108.0x0000000800d7d0a0.applyVoid')
f(19,8414,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,8414,1,1,'cats/effect/IO$$Lambda$92.0x0000000800d59440.applyVoid')
f(23,8414,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,8414,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,8414,1,1,'cats/effect/IOPlatform$$Lambda$89.0x0000000800d58970.applyVoid')
f(27,8414,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,8414,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,8414,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,8414,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,8414,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,8414,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,8414,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,8414,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(6,8415,12,1,'kyo/bench/InterruptBench$$Lambda$42.0x0000000800c8ee40.apply')
f(7,8415,12,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(8,8415,12,1,'kyo/bench/InterruptBench.iterate$1')
f(9,8415,3,1,'cats/effect/IO.flatMap')
f(10,8415,3,1,'cats/effect/IO$FlatMap$.apply')
f(11,8415,3,2,'cats.effect.IO$FlatMap')
f(9,8418,1,1,'cats/effect/IO.start')
f(10,8418,1,1,'cats/effect/IO$Start$.apply')
f(11,8418,1,2,'cats.effect.IO$Start')
f(9,8419,8,1,'kyo/bench/InterruptBench.loop$1')
f(10,8419,8,1,'cats/effect/IO$.apply')
f(11,8419,8,1,'cats/effect/IO$.delay')
f(12,8419,8,1,'cats/effect/IO$Delay$.apply')
f(13,8419,8,2,'cats.effect.IO$Delay')
f(5,8427,497,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,8427,497,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,8427,497,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,8427,181,2,'cats.effect.IOFiber$$Lambda$104+0x0000000800d774f8')
f(8,8608,316,2,'cats.effect.IOFiber$$Lambda$98+0x0000000800d5d4e8')
f(4,8924,1061,1,'cats/effect/IOFiber.succeeded')
f(5,8924,1061,1,'kyo/bench/InterruptBench$$Lambda$42.0x0000000800c8ee40.apply')
f(6,8924,1061,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(7,8924,1061,1,'kyo/bench/InterruptBench.iterate$1')
f(8,8924,460,1,'cats/effect/IO.flatMap')
f(9,8924,460,1,'cats/effect/IO$FlatMap$.apply')
f(10,8924,460,2,'cats.effect.IO$FlatMap')
f(8,9384,164,1,'cats/effect/IO.start')
f(9,9384,164,1,'cats/effect/IO$Start$.apply')
f(10,9384,164,2,'cats.effect.IO$Start')
f(8,9548,174,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9548,174,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9548,174,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9548,174,2,'kyo.bench.InterruptBench$$Lambda$42+0x0000000800c8ee40')
f(8,9722,263,1,'kyo/bench/InterruptBench.loop$1')
f(9,9722,263,1,'cats/effect/IO$.apply')
f(10,9722,263,1,'cats/effect/IO$.delay')
f(11,9722,263,1,'cats/effect/IO$Delay$.apply')
f(12,9722,263,2,'cats.effect.IO$Delay')
f(3,9985,482,1,'cats/effect/IOFiber.execR')
f(4,9985,4,1,'cats/effect/ArrayStack.init')
f(5,9985,4,2,'java.lang.Object[]')
f(4,9989,6,1,'cats/effect/ByteStack$.create')
f(5,9989,6,2,'int[]')
f(4,9995,462,1,'cats/effect/IOFiber.done')
f(5,9995,154,1,'cats/effect/CallbackStack.apply')
f(6,9995,154,1,'scala/runtime/function/JProcedure1.apply')
f(7,9995,154,1,'scala/runtime/function/JProcedure1.apply')
f(8,9995,154,1,'cats/effect/IOFiber$$Lambda$103.0x0000000800d76ed0.applyVoid')
f(9,9995,154,1,'cats/effect/IOFiber.$anonfun$1')
f(10,9995,154,1,'scala/util/Right$.apply')
f(11,9995,154,2,'scala.util.Right')
f(5,10149,308,1,'cats/effect/IO$.pure')
f(6,10149,308,1,'cats/effect/IO$Pure$.apply')
f(7,10149,308,2,'cats.effect.IO$Pure')
f(4,10457,10,1,'cats/effect/IOFiber.runLoop')
f(5,10457,2,2,'cats.effect.ContState')
f(5,10459,1,2,'cats.effect.IOFiber')
f(5,10460,1,1,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d60250.apply')
f(6,10460,1,1,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1')
f(7,10460,1,1,'cats/effect/IOFiber$$Lambda$95.0x0000000800d5b628.apply')
f(8,10460,1,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,10460,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,10460,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,10460,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,10460,1,2,'cats.effect.IOFiber$$Lambda$101+0x0000000800d765e0')
f(5,10461,1,1,'cats/effect/IO$$anon$3$$Lambda$102.0x0000000800d76b00.apply')
f(6,10461,1,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,10461,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,10461,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,10461,1,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,10461,1,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,10462,2,1,'cats/effect/IO$$anon$3$$Lambda$99.0x0000000800d5db10.apply')
f(6,10462,2,1,'cats/effect/IO$$anon$3.apply$$anonfun$1')
f(7,10462,2,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,10462,2,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,10462,2,1,'cats/effect/IO$.uncancelable')
f(10,10462,2,1,'cats/effect/IO$Uncancelable$.apply')
f(11,10462,2,2,'cats.effect.IO$Uncancelable')
f(5,10464,3,1,'cats/effect/IOFiber.<init>')
f(6,10464,2,1,'cats/effect/ArrayStack$.apply')
f(7,10464,2,2,'cats.effect.ArrayStack')
f(6,10466,1,1,'cats/effect/CallbackStack$.apply')
f(7,10466,1,2,'cats.effect.CallbackStack')
f(1,10467,1309,1,'java/lang/Thread.run')
f(2,10467,1309,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10467,1309,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10467,1309,1,'java/util/concurrent/FutureTask.run')
f(5,10467,1309,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10467,1309,1,'java/util/concurrent/FutureTask.run')
f(7,10467,1309,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10467,1309,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10467,1309,1,'java/lang/reflect/Method.invoke')
f(10,10467,1309,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10467,1309,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10467,1309,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10467,1309,1,'kyo/bench/jmh_generated/InterruptBench_syncCats_jmhTest.syncCats_Throughput')
f(14,10467,1309,1,'kyo/bench/jmh_generated/InterruptBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,10467,1309,1,'kyo/bench/Bench.syncCats')
f(16,10467,1303,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10467,1303,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10467,1270,1,'cats/effect/IO.unsafeRunAsync')
f(19,10467,1270,1,'cats/effect/IO.unsafeRunFiber')
f(20,10467,1079,2,'cats.effect.IOFiber')
f(20,11546,146,1,'cats/effect/IOFiber.<init>')
f(21,11546,51,1,'cats/effect/ArrayStack$.apply')
f(22,11546,51,2,'cats.effect.ArrayStack')
f(21,11597,28,1,'cats/effect/CallbackStack$.apply')
f(22,11597,28,2,'cats.effect.CallbackStack')
f(21,11625,28,1,'cats/effect/IO$.async')
f(22,11625,16,2,'cats.effect.IO$$anon$3')
f(22,11641,12,1,'cats/effect/IO$IOCont$.apply')
f(23,11641,12,2,'cats.effect.IO$IOCont')
f(21,11653,18,1,'cats/effect/IO$.uncancelable')
f(22,11653,18,1,'cats/effect/IO$Uncancelable$.apply')
f(23,11653,18,2,'cats.effect.IO$Uncancelable')
f(21,11671,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,11671,21,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,11671,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,11671,10,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d5b038')
f(24,11681,11,2,'cats.effect.IOFiber$$Lambda$95+0x0000000800d5b628')
f(20,11692,24,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,11692,24,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,11692,24,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,11692,24,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,11692,24,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,11716,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,11716,21,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,11716,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,11716,21,2,'cats.effect.IO$$Lambda$93+0x0000000800d5a200')
f(18,11737,12,1,'scala/concurrent/package$.blocking')
f(19,11737,12,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,11737,12,1,'cats/effect/IOPlatform$$Lambda$96.0x0000000800d5e000.apply')
f(21,11737,12,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,11737,12,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,11737,12,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,11737,12,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,11749,21,1,'scala/util/Either.fold')
f(19,11749,21,1,'cats/effect/IOPlatform$$Lambda$110.0x0000000800d7d870.apply')
f(20,11749,21,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,11749,21,1,'scala/Some$.apply')
f(22,11749,21,2,'scala.Some')
f(16,11770,6,1,'kyo/bench/InterruptBench.catsBench')
f(17,11770,6,1,'kyo/bench/InterruptBench.iterate$1')
f(18,11770,3,1,'cats/effect/IO.flatMap')
f(19,11770,3,1,'cats/effect/IO$FlatMap$.apply')
f(20,11770,3,2,'cats.effect.IO$FlatMap')
f(18,11773,3,1,'kyo/bench/InterruptBench.loop$1')
f(19,11773,3,1,'cats/effect/IO$.apply')
f(20,11773,3,1,'cats/effect/IO$.delay')
f(21,11773,3,1,'cats/effect/IO$Delay$.apply')
f(22,11773,3,2,'cats.effect.IO$Delay')
f(1,11776,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,11776,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,11776,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,11776,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,11776,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,11776,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,11776,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,11776,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,11776,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,11776,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,11776,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,11776,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,11776,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
search();
</script></body></html>
This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 672px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>CPU profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(42);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,436,3,'all')
f(1,0,3,3,'[unknown_Java]')
f(2,0,1,6,'cats/effect/IO$IOCont$Get.tag',0,1,0)
f(2,1,1,6,'cats/effect/IO$OnCancel.tag',0,1,0)
f(2,2,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(1,3,428,1,'cats/effect/unsafe/WorkerThread.run')
f(2,7,281,1,'cats/effect/IOFiber.run')
f(3,7,230,1,'cats/effect/IOFiber.asyncContinueSuccessfulR',9,0,0)
f(4,10,6,2,'cats/effect/ArrayStack.pop',6,0,0)
f(4,16,195,1,'cats/effect/IOFiber.runLoop')
f(5,32,10,2,'cats/effect/ArrayStack.push',8,0,0)
f(6,41,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,42,11,2,'cats/effect/ByteStack$.push',10,0,0)
f(6,51,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(5,53,1,2,'cats/effect/ContState.wasFinalizing_$eq',1,0,0)
f(5,54,11,2,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d60460.apply',11,0,0)
f(6,54,11,2,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1',11,0,0)
f(7,54,10,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',10,0,0)
f(8,54,10,2,'cats/FlatMap$Ops.flatMap$',10,0,0)
f(9,56,8,2,'cats/FlatMap$Ops.flatMap',8,0,0)
f(10,56,8,2,'cats/effect/IO$$anon$2.flatMap',8,0,0)
f(11,56,8,2,'cats/effect/IO$$anon$2.flatMap',8,0,0)
f(12,56,8,2,'cats/effect/IO.flatMap',8,0,0)
f(13,56,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(14,56,2,2,'cats/effect/IO$FlatMap.<init>',2,0,0)
f(15,56,2,2,'cats/effect/IO.<init>',2,0,0)
f(13,58,6,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',6,0,0)
f(7,64,1,2,'cats/effect/IOFiber$$Lambda$95.0x0000000800d5b628.apply',1,0,0)
f(8,64,1,2,'cats/effect/IOFiber.$init$$$anonfun$2',1,0,0)
f(9,64,1,2,'cats/effect/IO$.apply',1,0,0)
f(10,64,1,2,'cats/effect/IO$.delay',1,0,0)
f(11,64,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(5,65,10,1,'cats/effect/IO$$anon$3$$Lambda$102.0x0000000800d76d00.apply')
f(6,73,2,2,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1',2,0,0)
f(7,73,2,2,'cats/effect/IOFiber$$anon$1.apply',2,0,0)
f(8,74,1,2,'cats/effect/IOFiber$$anon$1.apply',1,0,0)
f(5,75,4,2,'cats/effect/IO$$anon$3$$Lambda$99.0x0000000800d5dc68.apply',4,0,0)
f(6,76,3,2,'cats/effect/IO$$anon$3.apply$$anonfun$1',3,0,0)
f(7,76,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(8,76,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(9,76,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(10,76,1,2,'cats/effect/tracing/TracingPlatform.calculateTracingEvent',1,0,0)
f(7,77,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(8,77,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial',2,0,0)
f(5,79,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(5,80,2,2,'cats/effect/IO$EvalOn$.apply',2,0,0)
f(5,82,7,6,'cats/effect/IO$FlatMap.tag',0,7,0)
f(5,89,2,6,'cats/effect/IO$IOCont$Get.tag',0,2,0)
f(5,91,1,6,'cats/effect/IO$IOCont.tag',0,1,0)
f(5,92,1,6,'cats/effect/IO$Map.ioe',0,1,0)
f(5,93,2,6,'cats/effect/IO$OnCancel.tag',0,2,0)
f(5,95,3,6,'cats/effect/IO$Uncancelable$UnmaskRunLoop.tag',0,3,0)
f(5,98,6,2,'cats/effect/IOFiber$$Lambda$94.0x0000000800d5b038.apply',6,0,0)
f(6,98,6,2,'cats/effect/IOFiber.$init$$$anonfun$1',6,0,0)
f(7,98,2,2,'cats/effect/IO.void',2,0,0)
f(7,100,4,2,'cats/effect/IOFiber.resume',4,0,0)
f(8,100,4,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',4,0,0)
f(9,100,4,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',4,0,0)
f(10,102,2,2,'java/lang/invoke/VarForm.getMemberName',2,0,0)
f(5,104,18,1,'cats/effect/IOFiber.<init>')
f(6,119,1,2,'cats/effect/CallbackStack$.apply',1,0,0)
f(6,120,1,2,'cats/effect/IO$.async',1,0,0)
f(6,121,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,121,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(8,121,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,122,64,2,'cats/effect/IOFiber.scheduleFiber',35,0,0)
f(6,127,59,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',30,0,0)
f(7,127,59,2,'cats/effect/unsafe/WorkerThread.schedule',30,0,0)
f(8,129,19,2,'cats/effect/unsafe/LocalQueue.enqueue',19,0,0)
f(9,140,2,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',2,0,0)
f(10,141,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(9,142,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',3,0,0)
f(10,142,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',3,0,0)
f(9,145,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',3,0,0)
f(10,147,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(8,148,38,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',9,0,0)
f(9,155,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(10,155,1,2,'java/util/Random.nextInt',1,0,0)
f(11,155,1,2,'java/util/concurrent/ThreadLocalRandom.next',1,0,0)
f(12,155,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(9,156,1,2,'java/util/concurrent/atomic/AtomicBoolean.get',1,0,0)
f(9,157,29,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,157,29,1,'jdk/internal/misc/Unsafe.unpark')
f(11,157,29,3,'pthread_cond_signal')
f(12,159,27,5,'entry_SYSCALL_64_after_hwframe')
f(13,159,27,5,'do_syscall_64')
f(14,159,27,5,'__x64_sys_futex')
f(15,159,27,5,'do_futex')
f(16,159,27,5,'futex_wake')
f(17,160,1,5,'mark_wake_futex')
f(17,161,25,5,'wake_up_q')
f(18,161,25,5,'_raw_spin_unlock_irqrestore')
f(5,186,5,1,'cats/effect/IOFiber.succeeded')
f(6,187,4,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,187,4,1,'cats/effect/IOFiber.done')
f(8,187,4,1,'cats/effect/CallbackStack.apply')
f(9,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(10,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(11,187,4,1,'cats/effect/IO$$Lambda$93.0x0000000800d5a200.applyVoid')
f(12,187,4,1,'cats/effect/IO.$anonfun$6')
f(13,187,4,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,187,4,1,'cats/effect/kernel/Outcome.fold$')
f(15,187,4,1,'cats/effect/kernel/Outcome.fold')
f(16,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(17,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(18,187,4,1,'cats/effect/IO$$Lambda$108.0x0000000800d7d0a0.applyVoid')
f(19,187,4,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(21,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(22,187,4,1,'cats/effect/IO$$Lambda$92.0x0000000800d59440.applyVoid')
f(23,187,4,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(25,187,4,1,'scala/runtime/function/JProcedure1.apply')
f(26,187,4,1,'cats/effect/IOPlatform$$Lambda$89.0x0000000800d58970.applyVoid')
f(27,187,4,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,187,4,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,187,4,1,'java/util/
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment