Skip to content

Instantly share code, notes, and snippets.

@fwbrasil
Created June 11, 2023 04:28
Show Gist options
  • Save fwbrasil/376840d73a4edaff09a2b42d751b43e1 to your computer and use it in GitHub Desktop.
Save fwbrasil/376840d73a4edaff09a2b42d751b43e1 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" : 15195.172009377871,
"scoreError" : 4998.866119908287,
"scoreConfidence" : [
10196.305889469584,
20194.038129286157
],
"scorePercentiles" : {
"0.0" : 14889.033843524827,
"50.0" : 15279.044603150733,
"90.0" : 15417.437581458058,
"95.0" : 15417.437581458058,
"99.0" : 15417.437581458058,
"99.9" : 15417.437581458058,
"99.99" : 15417.437581458058,
"99.999" : 15417.437581458058,
"99.9999" : 15417.437581458058,
"100.0" : 15417.437581458058
},
"scoreUnit" : "ops/s",
"rawData" : [
[
15279.044603150733,
15417.437581458058,
14889.033843524827
]
]
},
"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" : 20583.752981652346,
"scoreError" : 13510.275704096523,
"scoreConfidence" : [
7073.477277555823,
34094.02868574887
],
"scorePercentiles" : {
"0.0" : 19866.61870761523,
"50.0" : 20538.96674498708,
"90.0" : 21345.673492354723,
"95.0" : 21345.673492354723,
"99.0" : 21345.673492354723,
"99.9" : 21345.673492354723,
"99.99" : 21345.673492354723,
"99.999" : 21345.673492354723,
"99.9999" : 21345.673492354723,
"100.0" : 21345.673492354723
},
"scoreUnit" : "ops/s",
"rawData" : [
[
21345.673492354723,
20538.96674498708,
19866.61870761523
]
]
},
"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" : 667.7973155343273,
"scoreError" : 270.70498122663304,
"scoreConfidence" : [
397.0923343076942,
938.5022967609602
],
"scorePercentiles" : {
"0.0" : 650.7858426488303,
"50.0" : 674.5335580210278,
"90.0" : 678.0725459331236,
"95.0" : 678.0725459331236,
"99.0" : 678.0725459331236,
"99.9" : 678.0725459331236,
"99.99" : 678.0725459331236,
"99.999" : 678.0725459331236,
"99.9999" : 678.0725459331236,
"100.0" : 678.0725459331236
},
"scoreUnit" : "ops/s",
"rawData" : [
[
678.0725459331236,
674.5335580210278,
650.7858426488303
]
]
},
"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" : 653.6970508905275,
"scoreError" : 53.15790819725095,
"scoreConfidence" : [
600.5391426932765,
706.8549590877785
],
"scorePercentiles" : {
"0.0" : 650.6471481957092,
"50.0" : 653.9917206904681,
"90.0" : 656.4522837854054,
"95.0" : 656.4522837854054,
"99.0" : 656.4522837854054,
"99.9" : 656.4522837854054,
"99.99" : 656.4522837854054,
"99.999" : 656.4522837854054,
"99.9999" : 656.4522837854054,
"100.0" : 656.4522837854054
},
"scoreUnit" : "ops/s",
"rawData" : [
[
650.6471481957092,
653.9917206904681,
656.4522837854054
]
]
},
"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" : 8807.310562419465,
"scoreError" : 3417.826501986231,
"scoreConfidence" : [
5389.484060433234,
12225.137064405695
],
"scorePercentiles" : {
"0.0" : 8635.433264707352,
"50.0" : 8779.491147871835,
"90.0" : 9007.007274679207,
"95.0" : 9007.007274679207,
"99.0" : 9007.007274679207,
"99.9" : 9007.007274679207,
"99.99" : 9007.007274679207,
"99.999" : 9007.007274679207,
"99.9999" : 9007.007274679207,
"100.0" : 9007.007274679207
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8779.491147871835,
8635.433264707352,
9007.007274679207
]
]
},
"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" : 8354.133514527071,
"scoreError" : 1303.4796091567555,
"scoreConfidence" : [
7050.653905370316,
9657.613123683826
],
"scorePercentiles" : {
"0.0" : 8288.850858583519,
"50.0" : 8343.088867950908,
"90.0" : 8430.460817046789,
"95.0" : 8430.460817046789,
"99.0" : 8430.460817046789,
"99.9" : 8430.460817046789,
"99.99" : 8430.460817046789,
"99.999" : 8430.460817046789,
"99.9999" : 8430.460817046789,
"100.0" : 8430.460817046789
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8343.088867950908,
8288.850858583519,
8430.460817046789
]
]
},
"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" : 1479.3022821557108,
"scoreError" : 157.825721523521,
"scoreConfidence" : [
1321.4765606321898,
1637.1280036792318
],
"scorePercentiles" : {
"0.0" : 1469.491317946397,
"50.0" : 1482.5805423826268,
"90.0" : 1485.8349861381096,
"95.0" : 1485.8349861381096,
"99.0" : 1485.8349861381096,
"99.9" : 1485.8349861381096,
"99.99" : 1485.8349861381096,
"99.999" : 1485.8349861381096,
"99.9999" : 1485.8349861381096,
"100.0" : 1485.8349861381096
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1485.8349861381096,
1482.5805423826268,
1469.491317946397
]
]
},
"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" : 1456.6377521333063,
"scoreError" : 48.57806087864627,
"scoreConfidence" : [
1408.05969125466,
1505.2158130119526
],
"scorePercentiles" : {
"0.0" : 1453.566571159112,
"50.0" : 1458.0468397877066,
"90.0" : 1458.2998454531005,
"95.0" : 1458.2998454531005,
"99.0" : 1458.2998454531005,
"99.9" : 1458.2998454531005,
"99.99" : 1458.2998454531005,
"99.999" : 1458.2998454531005,
"99.9999" : 1458.2998454531005,
"100.0" : 1458.2998454531005
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1458.0468397877066,
1453.566571159112,
1458.2998454531005
]
]
},
"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" : 13818.990262499627,
"scoreError" : 1008.4239950113158,
"scoreConfidence" : [
12810.566267488311,
14827.414257510942
],
"scorePercentiles" : {
"0.0" : 13770.6258292485,
"50.0" : 13807.10309733387,
"90.0" : 13879.24186091651,
"95.0" : 13879.24186091651,
"99.0" : 13879.24186091651,
"99.9" : 13879.24186091651,
"99.99" : 13879.24186091651,
"99.999" : 13879.24186091651,
"99.9999" : 13879.24186091651,
"100.0" : 13879.24186091651
},
"scoreUnit" : "ops/s",
"rawData" : [
[
13770.6258292485,
13879.24186091651,
13807.10309733387
]
]
},
"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" : 13742.380476115504,
"scoreError" : 2959.7803434157113,
"scoreConfidence" : [
10782.600132699794,
16702.160819531215
],
"scorePercentiles" : {
"0.0" : 13560.659013551467,
"50.0" : 13793.828575505644,
"90.0" : 13872.653839289396,
"95.0" : 13872.653839289396,
"99.0" : 13872.653839289396,
"99.9" : 13872.653839289396,
"99.99" : 13872.653839289396,
"99.999" : 13872.653839289396,
"99.9999" : 13872.653839289396,
"100.0" : 13872.653839289396
},
"scoreUnit" : "ops/s",
"rawData" : [
[
13793.828575505644,
13560.659013551467,
13872.653839289396
]
]
},
"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" : 373.5154470347307,
"scoreError" : 133.4689028778256,
"scoreConfidence" : [
240.0465441569051,
506.9843499125563
],
"scorePercentiles" : {
"0.0" : 365.5367417623052,
"50.0" : 375.10119601774534,
"90.0" : 379.9084033241417,
"95.0" : 379.9084033241417,
"99.0" : 379.9084033241417,
"99.9" : 379.9084033241417,
"99.99" : 379.9084033241417,
"99.999" : 379.9084033241417,
"99.9999" : 379.9084033241417,
"100.0" : 379.9084033241417
},
"scoreUnit" : "ops/s",
"rawData" : [
[
379.9084033241417,
375.10119601774534,
365.5367417623052
]
]
},
"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" : 393.3763698333235,
"scoreError" : 97.35035409461716,
"scoreConfidence" : [
296.02601573870635,
490.72672392794067
],
"scorePercentiles" : {
"0.0" : 390.15784390377587,
"50.0" : 390.43538046412016,
"90.0" : 399.5358851320746,
"95.0" : 399.5358851320746,
"99.0" : 399.5358851320746,
"99.9" : 399.5358851320746,
"99.99" : 399.5358851320746,
"99.999" : 399.5358851320746,
"99.9999" : 399.5358851320746,
"100.0" : 399.5358851320746
},
"scoreUnit" : "ops/s",
"rawData" : [
[
399.5358851320746,
390.15784390377587,
390.43538046412016
]
]
},
"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" : 393.73353662309256,
"scoreError" : 46.75306982513107,
"scoreConfidence" : [
346.98046679796147,
440.48660644822365
],
"scorePercentiles" : {
"0.0" : 392.22356129807844,
"50.0" : 392.28457806188203,
"90.0" : 396.69247050931716,
"95.0" : 396.69247050931716,
"99.0" : 396.69247050931716,
"99.9" : 396.69247050931716,
"99.99" : 396.69247050931716,
"99.999" : 396.69247050931716,
"99.9999" : 396.69247050931716,
"100.0" : 396.69247050931716
},
"scoreUnit" : "ops/s",
"rawData" : [
[
396.69247050931716,
392.22356129807844,
392.28457806188203
]
]
},
"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" : 394.74906021546735,
"scoreError" : 27.32129335059012,
"scoreConfidence" : [
367.42776686487724,
422.07035356605746
],
"scorePercentiles" : {
"0.0" : 393.75468059636677,
"50.0" : 394.02104407742144,
"90.0" : 396.4714559726138,
"95.0" : 396.4714559726138,
"99.0" : 396.4714559726138,
"99.9" : 396.4714559726138,
"99.99" : 396.4714559726138,
"99.999" : 396.4714559726138,
"99.9999" : 396.4714559726138,
"100.0" : 396.4714559726138
},
"scoreUnit" : "ops/s",
"rawData" : [
[
394.02104407742144,
393.75468059636677,
396.4714559726138
]
]
},
"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" : 672.8062421073712,
"scoreError" : 68.5660373032014,
"scoreConfidence" : [
604.2402048041698,
741.3722794105726
],
"scorePercentiles" : {
"0.0" : 668.5410766352384,
"50.0" : 674.2450229007922,
"90.0" : 675.6326267860829,
"95.0" : 675.6326267860829,
"99.0" : 675.6326267860829,
"99.9" : 675.6326267860829,
"99.99" : 675.6326267860829,
"99.999" : 675.6326267860829,
"99.9999" : 675.6326267860829,
"100.0" : 675.6326267860829
},
"scoreUnit" : "ops/s",
"rawData" : [
[
668.5410766352384,
674.2450229007922,
675.6326267860829
]
]
},
"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" : 664.5786940236486,
"scoreError" : 43.56931347088162,
"scoreConfidence" : [
621.009380552767,
708.1480074945302
],
"scorePercentiles" : {
"0.0" : 661.8848896131927,
"50.0" : 665.4147417834265,
"90.0" : 666.4364506743266,
"95.0" : 666.4364506743266,
"99.0" : 666.4364506743266,
"99.9" : 666.4364506743266,
"99.99" : 666.4364506743266,
"99.999" : 666.4364506743266,
"99.9999" : 666.4364506743266,
"100.0" : 666.4364506743266
},
"scoreUnit" : "ops/s",
"rawData" : [
[
666.4364506743266,
665.4147417834265,
661.8848896131927
]
]
},
"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" : 2049.4145239925056,
"scoreError" : 152.27199558748146,
"scoreConfidence" : [
1897.1425284050242,
2201.686519579987
],
"scorePercentiles" : {
"0.0" : 2041.0574600755117,
"50.0" : 2049.4356079773547,
"90.0" : 2057.7505039246507,
"95.0" : 2057.7505039246507,
"99.0" : 2057.7505039246507,
"99.9" : 2057.7505039246507,
"99.99" : 2057.7505039246507,
"99.999" : 2057.7505039246507,
"99.9999" : 2057.7505039246507,
"100.0" : 2057.7505039246507
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2041.0574600755117,
2057.7505039246507,
2049.4356079773547
]
]
},
"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" : 2144.2423788338333,
"scoreError" : 78.60364012942799,
"scoreConfidence" : [
2065.638738704405,
2222.8460189632615
],
"scorePercentiles" : {
"0.0" : 2140.1710881956596,
"50.0" : 2143.801760507404,
"90.0" : 2148.754287798436,
"95.0" : 2148.754287798436,
"99.0" : 2148.754287798436,
"99.9" : 2148.754287798436,
"99.99" : 2148.754287798436,
"99.999" : 2148.754287798436,
"99.9999" : 2148.754287798436,
"100.0" : 2148.754287798436
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2143.801760507404,
2148.754287798436,
2140.1710881956596
]
]
},
"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.69947829142,
"scoreError" : 585.6295631798419,
"scoreConfidence" : [
7866.069915111579,
9037.329041471263
],
"scorePercentiles" : {
"0.0" : 8414.78115260917,
"50.0" : 8467.293459339737,
"90.0" : 8473.023822925361,
"95.0" : 8473.023822925361,
"99.0" : 8473.023822925361,
"99.9" : 8473.023822925361,
"99.99" : 8473.023822925361,
"99.999" : 8473.023822925361,
"99.9999" : 8473.023822925361,
"100.0" : 8473.023822925361
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8467.293459339737,
8414.78115260917,
8473.023822925361
]
]
},
"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" : 8608.801440223337,
"scoreError" : 1355.03083980817,
"scoreConfidence" : [
7253.770600415167,
9963.832280031507
],
"scorePercentiles" : {
"0.0" : 8525.6546857932,
"50.0" : 8632.165968756264,
"90.0" : 8668.583666120543,
"95.0" : 8668.583666120543,
"99.0" : 8668.583666120543,
"99.9" : 8668.583666120543,
"99.99" : 8668.583666120543,
"99.999" : 8668.583666120543,
"99.9999" : 8668.583666120543,
"100.0" : 8668.583666120543
},
"scoreUnit" : "ops/s",
"rawData" : [
[
8668.583666120543,
8632.165968756264,
8525.6546857932
]
]
},
"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" : 432.02748901277965,
"scoreError" : 12.41714045534762,
"scoreConfidence" : [
419.610348557432,
444.4446294681273
],
"scorePercentiles" : {
"0.0" : 431.4233905586634,
"50.0" : 431.8941651986064,
"90.0" : 432.7649112810693,
"95.0" : 432.7649112810693,
"99.0" : 432.7649112810693,
"99.9" : 432.7649112810693,
"99.99" : 432.7649112810693,
"99.999" : 432.7649112810693,
"99.9999" : 432.7649112810693,
"100.0" : 432.7649112810693
},
"scoreUnit" : "ops/s",
"rawData" : [
[
432.7649112810693,
431.8941651986064,
431.4233905586634
]
]
},
"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" : 419.8809492162388,
"scoreError" : 126.13197162244772,
"scoreConfidence" : [
293.74897759379104,
546.0129208386865
],
"scorePercentiles" : {
"0.0" : 412.27570785230944,
"50.0" : 421.5812526165635,
"90.0" : 425.7858871798433,
"95.0" : 425.7858871798433,
"99.0" : 425.7858871798433,
"99.9" : 425.7858871798433,
"99.99" : 425.7858871798433,
"99.999" : 425.7858871798433,
"99.9999" : 425.7858871798433,
"100.0" : 425.7858871798433
},
"scoreUnit" : "ops/s",
"rawData" : [
[
412.27570785230944,
425.7858871798433,
421.5812526165635
]
]
},
"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" : 1099.368353006932,
"scoreError" : 53.74274785801382,
"scoreConfidence" : [
1045.625605148918,
1153.111100864946
],
"scorePercentiles" : {
"0.0" : 1096.7198516876451,
"50.0" : 1098.8441058878536,
"90.0" : 1102.5411014452975,
"95.0" : 1102.5411014452975,
"99.0" : 1102.5411014452975,
"99.9" : 1102.5411014452975,
"99.99" : 1102.5411014452975,
"99.999" : 1102.5411014452975,
"99.9999" : 1102.5411014452975,
"100.0" : 1102.5411014452975
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1096.7198516876451,
1102.5411014452975,
1098.8441058878536
]
]
},
"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" : 1104.0901040253395,
"scoreError" : 105.08197933460391,
"scoreConfidence" : [
999.0081246907356,
1209.1720833599434
],
"scorePercentiles" : {
"0.0" : 1099.774461552748,
"50.0" : 1101.8652495930314,
"90.0" : 1110.6306009302389,
"95.0" : 1110.6306009302389,
"99.0" : 1110.6306009302389,
"99.9" : 1110.6306009302389,
"99.99" : 1110.6306009302389,
"99.999" : 1110.6306009302389,
"99.9999" : 1110.6306009302389,
"100.0" : 1110.6306009302389
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1101.8652495930314,
1110.6306009302389,
1099.774461552748
]
]
},
"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" : 790.6899876130487,
"scoreError" : 336.4778397235614,
"scoreConfidence" : [
454.21214788948737,
1127.1678273366101
],
"scorePercentiles" : {
"0.0" : 772.0117346542696,
"50.0" : 791.168847852084,
"90.0" : 808.8893803327926,
"95.0" : 808.8893803327926,
"99.0" : 808.8893803327926,
"99.9" : 808.8893803327926,
"99.99" : 808.8893803327926,
"99.999" : 808.8893803327926,
"99.9999" : 808.8893803327926,
"100.0" : 808.8893803327926
},
"scoreUnit" : "ops/s",
"rawData" : [
[
791.168847852084,
808.8893803327926,
772.0117346542696
]
]
},
"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" : 828.9602659421334,
"scoreError" : 300.246088835543,
"scoreConfidence" : [
528.7141771065905,
1129.2063547776766
],
"scorePercentiles" : {
"0.0" : 811.113164554855,
"50.0" : 832.2304922232842,
"90.0" : 843.5371410482611,
"95.0" : 843.5371410482611,
"99.0" : 843.5371410482611,
"99.9" : 843.5371410482611,
"99.99" : 843.5371410482611,
"99.999" : 843.5371410482611,
"99.9999" : 843.5371410482611,
"100.0" : 843.5371410482611
},
"scoreUnit" : "ops/s",
"rawData" : [
[
832.2304922232842,
843.5371410482611,
811.113164554855
]
]
},
"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" : 430.2966238339721,
"scoreError" : 16.47457075177352,
"scoreConfidence" : [
413.8220530821986,
446.7711945857456
],
"scorePercentiles" : {
"0.0" : 429.33019080673745,
"50.0" : 430.44077865786096,
"90.0" : 431.1189020373179,
"95.0" : 431.1189020373179,
"99.0" : 431.1189020373179,
"99.9" : 431.1189020373179,
"99.99" : 431.1189020373179,
"99.999" : 431.1189020373179,
"99.9999" : 431.1189020373179,
"100.0" : 431.1189020373179
},
"scoreUnit" : "ops/s",
"rawData" : [
[
430.44077865786096,
429.33019080673745,
431.1189020373179
]
]
},
"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" : 439.88026672595373,
"scoreError" : 26.897734544206592,
"scoreConfidence" : [
412.98253218174716,
466.7780012701603
],
"scorePercentiles" : {
"0.0" : 438.7936818435592,
"50.0" : 439.28855943862095,
"90.0" : 441.55855889568096,
"95.0" : 441.55855889568096,
"99.0" : 441.55855889568096,
"99.9" : 441.55855889568096,
"99.99" : 441.55855889568096,
"99.999" : 441.55855889568096,
"99.9999" : 441.55855889568096,
"100.0" : 441.55855889568096
},
"scoreUnit" : "ops/s",
"rawData" : [
[
438.7936818435592,
439.28855943862095,
441.55855889568096
]
]
},
"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" : 57144.065814091824,
"scoreError" : 26587.914824725067,
"scoreConfidence" : [
30556.150989366757,
83731.9806388169
],
"scorePercentiles" : {
"0.0" : 55466.72417159697,
"50.0" : 57865.13230198918,
"90.0" : 58100.34096868931,
"95.0" : 58100.34096868931,
"99.0" : 58100.34096868931,
"99.9" : 58100.34096868931,
"99.99" : 58100.34096868931,
"99.999" : 58100.34096868931,
"99.9999" : 58100.34096868931,
"100.0" : 58100.34096868931
},
"scoreUnit" : "ops/s",
"rawData" : [
[
58100.34096868931,
57865.13230198918,
55466.72417159697
]
]
},
"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" : 57116.86805753639,
"scoreError" : 34884.52911848252,
"scoreConfidence" : [
22232.338939053872,
92001.39717601892
],
"scorePercentiles" : {
"0.0" : 54910.090246627115,
"50.0" : 58158.02045596508,
"90.0" : 58282.493470016954,
"95.0" : 58282.493470016954,
"99.0" : 58282.493470016954,
"99.9" : 58282.493470016954,
"99.99" : 58282.493470016954,
"99.999" : 58282.493470016954,
"99.9999" : 58282.493470016954,
"100.0" : 58282.493470016954
},
"scoreUnit" : "ops/s",
"rawData" : [
[
54910.090246627115,
58158.02045596508,
58282.493470016954
]
]
},
"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,9451,3,'all')
f(1,0,8456,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,8456,1,'cats/effect/IOFiber.run')
f(3,0,6073,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,6073,1,'cats/effect/IOFiber.runLoop')
f(5,0,1735,1,'cats/effect/IOFiber.next$2')
f(6,0,1226,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,0,1226,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,0,546,1,'cats/effect/IO.flatMap')
f(9,0,546,1,'cats/effect/IO$FlatMap$.apply')
f(10,0,546,2,'cats.effect.IO$FlatMap')
f(8,546,340,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,546,340,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,546,340,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,546,340,2,'kyo.bench.BroadFlatMapBench$$Lambda$93+0x0000000800d5faa8')
f(8,886,340,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,886,340,1,'cats/effect/IO$.pure')
f(10,886,340,1,'cats/effect/IO$Pure$.apply')
f(11,886,340,2,'cats.effect.IO$Pure')
f(6,1226,509,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,1226,509,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,1226,509,1,'cats/effect/IO$.pure')
f(9,1226,509,1,'cats/effect/IO$Pure$.apply')
f(10,1226,509,2,'cats.effect.IO$Pure')
f(5,1735,4338,1,'cats/effect/IOFiber.succeeded')
f(6,1735,9,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,1735,8,1,'cats/effect/IOFiber.done')
f(8,1735,8,1,'cats/effect/CallbackStack.apply')
f(9,1735,8,1,'scala/runtime/function/JProcedure1.apply')
f(10,1735,8,1,'scala/runtime/function/JProcedure1.apply')
f(11,1735,8,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cfe8.applyVoid')
f(12,1735,8,1,'cats/effect/IO.$anonfun$6')
f(13,1735,4,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,1735,4,1,'cats/effect/kernel/Outcome.fold$')
f(15,1735,4,1,'cats/effect/kernel/Outcome.fold')
f(16,1735,4,1,'scala/runtime/function/JProcedure1.apply')
f(17,1735,4,1,'scala/runtime/function/JProcedure1.apply')
f(18,1735,4,1,'cats/effect/IO$$Lambda$96.0x0000000800d5abc8.applyVoid')
f(19,1735,4,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,1735,4,1,'scala/runtime/function/JProcedure1.apply')
f(21,1735,4,1,'scala/runtime/function/JProcedure1.apply')
f(22,1735,4,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,1735,4,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,1735,3,1,'scala/runtime/function/JProcedure1.apply')
f(25,1735,3,1,'scala/runtime/function/JProcedure1.apply')
f(26,1735,3,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57348.applyVoid')
f(27,1735,3,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,1735,3,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,1735,3,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,1735,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,1735,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,1735,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,1735,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,1735,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(24,1738,1,1,'scala/util/Right$.apply')
f(25,1738,1,2,'scala.util.Right')
f(13,1739,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,1739,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,1739,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,1739,2,2,'cats.effect.IO$$Lambda$94+0x0000000800d5a500')
f(16,1741,1,2,'cats.effect.IO$$Lambda$95+0x0000000800d5a7c0')
f(16,1742,1,2,'cats.effect.IO$$Lambda$96+0x0000000800d5abc8')
f(7,1743,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,1743,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,1744,3987,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,1744,3987,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,1744,831,1,'cats/effect/IO.flatMap')
f(9,1744,831,1,'cats/effect/IO$FlatMap$.apply')
f(10,1744,831,2,'cats.effect.IO$FlatMap')
f(8,2575,514,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,2575,514,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,2575,514,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,2575,514,2,'kyo.bench.BroadFlatMapBench$$Lambda$93+0x0000000800d5faa8')
f(8,3089,2642,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,3089,196,1,'cats/effect/IO$.pure')
f(10,3089,196,1,'cats/effect/IO$Pure$.apply')
f(11,3089,196,2,'cats.effect.IO$Pure')
f(9,3285,524,1,'cats/effect/IO.flatMap')
f(10,3285,524,1,'cats/effect/IO$FlatMap$.apply')
f(11,3285,524,2,'cats.effect.IO$FlatMap')
f(9,3809,320,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,3809,320,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,3809,320,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,3809,320,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(9,4129,1602,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,4129,132,1,'cats/effect/IO$.pure')
f(11,4129,132,1,'cats/effect/IO$Pure$.apply')
f(12,4129,132,2,'cats.effect.IO$Pure')
f(10,4261,317,1,'cats/effect/IO.flatMap')
f(11,4261,317,1,'cats/effect/IO$FlatMap$.apply')
f(12,4261,317,2,'cats.effect.IO$FlatMap')
f(10,4578,173,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,4578,173,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,4578,173,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,4578,173,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(10,4751,980,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,4751,71,1,'cats/effect/IO$.pure')
f(12,4751,71,1,'cats/effect/IO$Pure$.apply')
f(13,4751,71,2,'cats.effect.IO$Pure')
f(11,4822,160,1,'cats/effect/IO.flatMap')
f(12,4822,160,1,'cats/effect/IO$FlatMap$.apply')
f(13,4822,160,2,'cats.effect.IO$FlatMap')
f(11,4982,133,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,4982,133,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,4982,133,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,4982,133,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(11,5115,616,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,5115,46,1,'cats/effect/IO$.pure')
f(13,5115,46,1,'cats/effect/IO$Pure$.apply')
f(14,5115,46,2,'cats.effect.IO$Pure')
f(12,5161,113,1,'cats/effect/IO.flatMap')
f(13,5161,113,1,'cats/effect/IO$FlatMap$.apply')
f(14,5161,113,2,'cats.effect.IO$FlatMap')
f(12,5274,79,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,5274,79,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,5274,79,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,5274,79,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(12,5353,378,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,5353,37,1,'cats/effect/IO$.pure')
f(14,5353,37,1,'cats/effect/IO$Pure$.apply')
f(15,5353,37,2,'cats.effect.IO$Pure')
f(13,5390,57,1,'cats/effect/IO.flatMap')
f(14,5390,57,1,'cats/effect/IO$FlatMap$.apply')
f(15,5390,57,2,'cats.effect.IO$FlatMap')
f(13,5447,47,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,5447,47,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,5447,47,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,5447,47,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(13,5494,237,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,5494,18,1,'cats/effect/IO$.pure')
f(15,5494,18,1,'cats/effect/IO$Pure$.apply')
f(16,5494,18,2,'cats.effect.IO$Pure')
f(14,5512,39,1,'cats/effect/IO.flatMap')
f(15,5512,39,1,'cats/effect/IO$FlatMap$.apply')
f(16,5512,39,2,'cats.effect.IO$FlatMap')
f(14,5551,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,5551,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,5551,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,5551,38,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(14,5589,142,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,5589,15,1,'cats/effect/IO$.pure')
f(16,5589,15,1,'cats/effect/IO$Pure$.apply')
f(17,5589,15,2,'cats.effect.IO$Pure')
f(15,5604,23,1,'cats/effect/IO.flatMap')
f(16,5604,23,1,'cats/effect/IO$FlatMap$.apply')
f(17,5604,23,2,'cats.effect.IO$FlatMap')
f(15,5627,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,5627,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,5627,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,5627,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(15,5643,88,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,5643,2,1,'cats/effect/IO$.pure')
f(17,5643,2,1,'cats/effect/IO$Pure$.apply')
f(18,5643,2,2,'cats.effect.IO$Pure')
f(16,5645,17,1,'cats/effect/IO.flatMap')
f(17,5645,17,1,'cats/effect/IO$FlatMap$.apply')
f(18,5645,17,2,'cats.effect.IO$FlatMap')
f(16,5662,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,5662,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,5662,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,5662,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(16,5678,53,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,5678,2,1,'cats/effect/IO$.pure')
f(18,5678,2,1,'cats/effect/IO$Pure$.apply')
f(19,5678,2,2,'cats.effect.IO$Pure')
f(17,5680,5,1,'cats/effect/IO.flatMap')
f(18,5680,5,1,'cats/effect/IO$FlatMap$.apply')
f(19,5680,5,2,'cats.effect.IO$FlatMap')
f(17,5685,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,5685,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,5685,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,5685,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(17,5687,44,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,5687,4,1,'cats/effect/IO$.pure')
f(19,5687,4,1,'cats/effect/IO$Pure$.apply')
f(20,5687,4,2,'cats.effect.IO$Pure')
f(18,5691,11,1,'cats/effect/IO.flatMap')
f(19,5691,11,1,'cats/effect/IO$FlatMap$.apply')
f(20,5691,11,2,'cats.effect.IO$FlatMap')
f(18,5702,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,5702,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,5702,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,5702,6,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(18,5708,23,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,5708,2,1,'cats/effect/IO$.pure')
f(20,5708,2,1,'cats/effect/IO$Pure$.apply')
f(21,5708,2,2,'cats.effect.IO$Pure')
f(19,5710,6,1,'cats/effect/IO.flatMap')
f(20,5710,6,1,'cats/effect/IO$FlatMap$.apply')
f(21,5710,6,2,'cats.effect.IO$FlatMap')
f(19,5716,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,5716,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,5716,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,5716,10,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(19,5726,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,5726,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,5726,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,5726,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,5726,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(20,5729,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,5729,2,1,'cats/effect/IO$.pure')
f(22,5729,2,1,'cats/effect/IO$Pure$.apply')
f(23,5729,2,2,'cats.effect.IO$Pure')
f(6,5731,342,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,5731,342,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,5731,342,1,'cats/effect/IO$.pure')
f(9,5731,342,1,'cats/effect/IO$Pure$.apply')
f(10,5731,342,2,'cats.effect.IO$Pure')
f(3,6073,2249,1,'cats/effect/IOFiber.cedeR')
f(4,6073,2201,1,'cats/effect/IOFiber.runLoop')
f(5,6073,598,1,'cats/effect/IOFiber.next$2')
f(6,6073,424,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,6073,424,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,6073,203,1,'cats/effect/IO.flatMap')
f(9,6073,203,1,'cats/effect/IO$FlatMap$.apply')
f(10,6073,203,2,'cats.effect.IO$FlatMap')
f(8,6276,111,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6276,111,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6276,111,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6276,111,2,'kyo.bench.BroadFlatMapBench$$Lambda$93+0x0000000800d5faa8')
f(8,6387,110,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,6387,110,1,'cats/effect/IO$.pure')
f(10,6387,110,1,'cats/effect/IO$Pure$.apply')
f(11,6387,110,2,'cats.effect.IO$Pure')
f(6,6497,174,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,6497,174,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,6497,174,1,'cats/effect/IO$.pure')
f(9,6497,174,1,'cats/effect/IO$Pure$.apply')
f(10,6497,174,2,'cats.effect.IO$Pure')
f(5,6671,1603,1,'cats/effect/IOFiber.succeeded')
f(6,6671,1466,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,6671,1466,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,6671,307,1,'cats/effect/IO.flatMap')
f(9,6671,307,1,'cats/effect/IO$FlatMap$.apply')
f(10,6671,307,2,'cats.effect.IO$FlatMap')
f(8,6978,187,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6978,187,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6978,187,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6978,187,2,'kyo.bench.BroadFlatMapBench$$Lambda$93+0x0000000800d5faa8')
f(8,7165,972,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,7165,61,1,'cats/effect/IO$.pure')
f(10,7165,61,1,'cats/effect/IO$Pure$.apply')
f(11,7165,61,2,'cats.effect.IO$Pure')
f(9,7226,201,1,'cats/effect/IO.flatMap')
f(10,7226,201,1,'cats/effect/IO$FlatMap$.apply')
f(11,7226,201,2,'cats.effect.IO$FlatMap')
f(9,7427,125,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7427,125,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,7427,125,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7427,125,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(9,7552,585,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,7552,43,1,'cats/effect/IO$.pure')
f(11,7552,43,1,'cats/effect/IO$Pure$.apply')
f(12,7552,43,2,'cats.effect.IO$Pure')
f(10,7595,133,1,'cats/effect/IO.flatMap')
f(11,7595,133,1,'cats/effect/IO$FlatMap$.apply')
f(12,7595,133,2,'cats.effect.IO$FlatMap')
f(10,7728,79,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,7728,79,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,7728,79,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,7728,79,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(10,7807,330,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,7807,21,1,'cats/effect/IO$.pure')
f(12,7807,21,1,'cats/effect/IO$Pure$.apply')
f(13,7807,21,2,'cats.effect.IO$Pure')
f(11,7828,70,1,'cats/effect/IO.flatMap')
f(12,7828,70,1,'cats/effect/IO$FlatMap$.apply')
f(13,7828,70,2,'cats.effect.IO$FlatMap')
f(11,7898,39,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,7898,39,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,7898,39,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,7898,39,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(11,7937,200,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,7937,19,1,'cats/effect/IO$.pure')
f(13,7937,19,1,'cats/effect/IO$Pure$.apply')
f(14,7937,19,2,'cats.effect.IO$Pure')
f(12,7956,40,1,'cats/effect/IO.flatMap')
f(13,7956,40,1,'cats/effect/IO$FlatMap$.apply')
f(14,7956,40,2,'cats.effect.IO$FlatMap')
f(12,7996,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7996,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7996,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7996,29,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(12,8025,112,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,8025,8,1,'cats/effect/IO$.pure')
f(14,8025,8,1,'cats/effect/IO$Pure$.apply')
f(15,8025,8,2,'cats.effect.IO$Pure')
f(13,8033,28,1,'cats/effect/IO.flatMap')
f(14,8033,28,1,'cats/effect/IO$FlatMap$.apply')
f(15,8033,28,2,'cats.effect.IO$FlatMap')
f(13,8061,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,8061,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,8061,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,8061,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(13,8076,61,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,8076,7,1,'cats/effect/IO$.pure')
f(15,8076,7,1,'cats/effect/IO$Pure$.apply')
f(16,8076,7,2,'cats.effect.IO$Pure')
f(14,8083,9,1,'cats/effect/IO.flatMap')
f(15,8083,9,1,'cats/effect/IO$FlatMap$.apply')
f(16,8083,9,2,'cats.effect.IO$FlatMap')
f(14,8092,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,8092,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,8092,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,8092,7,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(14,8099,38,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,8099,4,1,'cats/effect/IO$.pure')
f(16,8099,4,1,'cats/effect/IO$Pure$.apply')
f(17,8099,4,2,'cats.effect.IO$Pure')
f(15,8103,11,1,'cats/effect/IO.flatMap')
f(16,8103,11,1,'cats/effect/IO$FlatMap$.apply')
f(17,8103,11,2,'cats.effect.IO$FlatMap')
f(15,8114,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8114,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8114,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8114,10,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(15,8124,13,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,8124,2,1,'cats/effect/IO$.pure')
f(17,8124,2,1,'cats/effect/IO$Pure$.apply')
f(18,8124,2,2,'cats.effect.IO$Pure')
f(16,8126,2,1,'cats/effect/IO.flatMap')
f(17,8126,2,1,'cats/effect/IO$FlatMap$.apply')
f(18,8126,2,2,'cats.effect.IO$FlatMap')
f(16,8128,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,8128,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,8128,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,8128,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(16,8130,7,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,8130,1,1,'cats/effect/IO$.pure')
f(18,8130,1,1,'cats/effect/IO$Pure$.apply')
f(19,8130,1,2,'cats.effect.IO$Pure')
f(17,8131,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,8131,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,8131,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,8131,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(17,8133,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,8133,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,8133,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,8133,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,8133,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(18,8136,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,8136,1,1,'cats/effect/IO$.pure')
f(20,8136,1,1,'cats/effect/IO$Pure$.apply')
f(21,8136,1,2,'cats.effect.IO$Pure')
f(6,8137,137,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,8137,137,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,8137,137,1,'cats/effect/IO$.pure')
f(9,8137,137,1,'cats/effect/IO$Pure$.apply')
f(10,8137,137,2,'cats.effect.IO$Pure')
f(4,8274,48,1,'cats/effect/IOFiber.succeeded')
f(5,8274,48,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13078.apply')
f(6,8274,48,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,8274,48,1,'kyo/bench/BroadFlatMapBench.catsBench')
f(8,8274,48,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,8274,2,1,'cats/effect/IO.flatMap')
f(10,8274,2,1,'cats/effect/IO$FlatMap$.apply')
f(11,8274,2,2,'cats.effect.IO$FlatMap')
f(9,8276,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,8276,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,8276,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,8276,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(9,8278,44,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,8278,44,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,8278,1,1,'cats/effect/IO.flatMap')
f(12,8278,1,1,'cats/effect/IO$FlatMap$.apply')
f(13,8278,1,2,'cats.effect.IO$FlatMap')
f(11,8279,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,8279,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,8279,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,8279,4,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(11,8283,39,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,8283,1,1,'cats/effect/IO.flatMap')
f(13,8283,1,1,'cats/effect/IO$FlatMap$.apply')
f(14,8283,1,2,'cats.effect.IO$FlatMap')
f(12,8284,38,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,8284,2,1,'cats/effect/IO.flatMap')
f(14,8284,2,1,'cats/effect/IO$FlatMap$.apply')
f(15,8284,2,2,'cats.effect.IO$FlatMap')
f(13,8286,36,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,8286,3,1,'cats/effect/IO.flatMap')
f(15,8286,3,1,'cats/effect/IO$FlatMap$.apply')
f(16,8286,3,2,'cats.effect.IO$FlatMap')
f(14,8289,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,8289,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,8289,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,8289,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(14,8290,32,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,8290,2,1,'cats/effect/IO.flatMap')
f(16,8290,2,1,'cats/effect/IO$FlatMap$.apply')
f(17,8290,2,2,'cats.effect.IO$FlatMap')
f(15,8292,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8292,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8292,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8292,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(15,8295,27,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,8295,3,1,'cats/effect/IO.flatMap')
f(17,8295,3,1,'cats/effect/IO$FlatMap$.apply')
f(18,8295,3,2,'cats.effect.IO$FlatMap')
f(16,8298,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,8298,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,8298,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,8298,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(16,8300,22,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,8300,3,1,'cats/effect/IO.flatMap')
f(18,8300,3,1,'cats/effect/IO$FlatMap$.apply')
f(19,8300,3,2,'cats.effect.IO$FlatMap')
f(17,8303,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,8303,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,8303,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,8303,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(17,8305,17,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,8305,2,1,'cats/effect/IO.flatMap')
f(19,8305,2,1,'cats/effect/IO$FlatMap$.apply')
f(20,8305,2,2,'cats.effect.IO$FlatMap')
f(18,8307,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,8307,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,8307,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,8307,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(18,8308,14,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,8308,3,1,'cats/effect/IO.flatMap')
f(20,8308,3,1,'cats/effect/IO$FlatMap$.apply')
f(21,8308,3,2,'cats.effect.IO$FlatMap')
f(19,8311,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,8311,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,8311,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,8311,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(19,8312,10,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,8312,2,1,'cats/effect/IO.flatMap')
f(21,8312,2,1,'cats/effect/IO$FlatMap$.apply')
f(22,8312,2,2,'cats.effect.IO$FlatMap')
f(20,8314,8,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,8314,1,1,'cats/effect/IO.flatMap')
f(22,8314,1,1,'cats/effect/IO$FlatMap$.apply')
f(23,8314,1,2,'cats.effect.IO$FlatMap')
f(21,8315,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,8315,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,8315,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,8315,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(21,8316,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(22,8316,2,1,'cats/effect/IO.flatMap')
f(23,8316,2,1,'cats/effect/IO$FlatMap$.apply')
f(24,8316,2,2,'cats.effect.IO$FlatMap')
f(22,8318,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,8318,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,8318,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,8318,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f6e0')
f(22,8320,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(23,8320,2,1,'cats/effect/IO$.pure')
f(24,8320,2,1,'cats/effect/IO$Pure$.apply')
f(25,8320,2,2,'cats.effect.IO$Pure')
f(3,8322,134,1,'cats/effect/IOFiber.execR')
f(4,8322,14,1,'cats/effect/ArrayStack.init')
f(5,8322,14,2,'java.lang.Object[]')
f(4,8336,120,1,'cats/effect/ByteStack$.create')
f(5,8336,120,2,'int[]')
f(1,8456,992,1,'java/lang/Thread.run')
f(2,8456,992,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,8456,992,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,8456,992,1,'java/util/concurrent/FutureTask.run')
f(5,8456,992,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,8456,992,1,'java/util/concurrent/FutureTask.run')
f(7,8456,992,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,8456,992,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,8456,992,1,'java/lang/reflect/Method.invoke')
f(10,8456,992,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,8456,992,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,8456,992,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,8456,992,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,8456,992,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,8456,992,1,'kyo/bench/Bench.forkCats')
f(16,8456,29,1,'cats/effect/IO.flatMap')
f(17,8456,29,1,'cats/effect/IO$FlatMap$.apply')
f(18,8456,29,2,'cats.effect.IO$FlatMap')
f(16,8485,934,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,8485,901,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,8485,511,1,'cats/effect/IO.unsafeRunAsync')
f(19,8485,434,1,'cats/effect/IO.unsafeRunFiber')
f(20,8485,120,2,'cats.effect.IOFiber')
f(20,8605,245,1,'cats/effect/IOFiber.<init>')
f(21,8605,74,1,'cats/effect/ArrayStack$.apply')
f(22,8605,74,2,'cats.effect.ArrayStack')
f(21,8679,11,1,'cats/effect/CallbackStack$.apply')
f(22,8679,11,2,'cats.effect.CallbackStack')
f(21,8690,57,1,'cats/effect/IO$.async')
f(22,8690,14,2,'cats.effect.IO$$anon$4')
f(22,8704,43,1,'cats/effect/IO$IOCont$.apply')
f(23,8704,43,2,'cats.effect.IO$IOCont')
f(21,8747,57,1,'cats/effect/IO$.uncancelable')
f(22,8747,57,1,'cats/effect/IO$Uncancelable$.apply')
f(23,8747,57,2,'cats.effect.IO$Uncancelable')
f(21,8804,46,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,8804,46,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,8804,46,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,8804,31,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5de20')
f(24,8835,15,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(20,8850,15,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,8850,15,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,8850,15,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,8850,15,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,8850,15,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,8865,54,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,8865,54,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,8865,54,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,8865,54,2,'cats.effect.IO$$Lambda$88+0x0000000800d5cfe8')
f(19,8919,77,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,8919,77,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,8919,77,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,8919,46,2,'cats.effect.IO$$Lambda$85+0x0000000800d57750')
f(22,8965,13,2,'cats.effect.IO$$Lambda$86+0x0000000800d57a10')
f(22,8978,18,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c000')
f(18,8996,68,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,9064,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,9064,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,9064,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,9064,17,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57348')
f(18,9081,196,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,9081,196,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,9081,55,2,'java.lang.Object[]')
f(20,9136,30,2,'java.util.concurrent.locks.ReentrantLock')
f(20,9166,37,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,9166,37,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,9203,74,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,9203,74,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,9203,74,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,9277,65,1,'scala/concurrent/package$.blocking')
f(19,9277,65,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,9277,65,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5edf0.apply')
f(21,9277,65,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,9277,65,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,9277,65,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,9277,65,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,9342,44,1,'scala/util/Either.fold')
f(19,9342,44,1,'cats/effect/IOPlatform$$Lambda$98.0x0000000800d5b678.apply')
f(20,9342,44,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,9342,44,1,'scala/Some$.apply')
f(22,9342,44,2,'scala.Some')
f(17,9386,33,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,9386,33,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,9386,33,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,9386,33,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,9386,33,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,9386,33,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,9386,33,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,9386,33,2,'scala.concurrent.duration.FiniteDuration')
f(16,9419,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,9419,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,9419,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,9419,29,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13078')
f(1,9448,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,9448,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,9448,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,9448,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,9448,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,9448,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,9448,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,9448,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,9448,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,9448,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,9448,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,9448,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,9448,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,261,3,'all')
f(1,0,6,3,'[unknown_Java]')
f(2,0,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(2,3,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(1,6,233,1,'cats/effect/unsafe/WorkerThread.run')
f(2,7,223,1,'cats/effect/IOFiber.run',1,0,0)
f(3,7,167,1,'cats/effect/IOFiber.autoCedeR')
f(4,7,167,1,'cats/effect/IOFiber.runLoop')
f(5,36,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(6,37,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,38,6,2,'cats/effect/ByteStack$.push',6,0,0)
f(5,44,2,2,'cats/effect/IO$FlatMap.f',2,0,0)
f(5,46,2,2,'cats/effect/IO$FlatMap.ioe',2,0,0)
f(5,48,6,6,'cats/effect/IO$FlatMap.tag',0,6,0)
f(5,54,8,6,'cats/effect/IO$Pure.tag',0,8,0)
f(5,62,2,2,'cats/effect/IO$Pure.value',2,0,0)
f(5,64,19,1,'cats/effect/IOFiber.next$2')
f(6,67,16,2,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply',15,0,0)
f(7,67,16,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',15,0,0)
f(8,68,15,2,'kyo/bench/BroadFlatMapBench.catsFib$1',14,0,0)
f(9,69,2,2,'cats/effect/IO$.pure',2,0,0)
f(9,71,4,2,'kyo/bench/BroadFlatMapBench.catsFib$1',4,0,0)
f(10,71,1,2,'cats/effect/IO$.pure',1,0,0)
f(10,72,3,2,'scala/math/BigInt$.apply',3,0,0)
f(9,75,8,2,'scala/math/BigInt$.apply',7,0,0)
f(10,81,2,2,'scala/math/BigInt$.getCached',1,0,0)
f(11,81,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,81,1,4,'G1CardTable::is_in_young(oopDesc*) const')
f(11,82,1,2,'scala/math/BigInt.<init>',1,0,0)
f(5,83,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,84,83,1,'cats/effect/IOFiber.succeeded')
f(6,110,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,111,3,2,'cats/effect/ByteStack$.pop',3,0,0)
f(7,112,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,114,11,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,114,11,1,'cats/effect/IOFiber.done')
f(8,114,11,1,'cats/effect/CallbackStack.apply')
f(9,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(10,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(11,114,11,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cfe8.applyVoid')
f(12,114,11,1,'cats/effect/IO.$anonfun$6')
f(13,114,11,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,114,11,1,'cats/effect/kernel/Outcome.fold$')
f(15,114,11,1,'cats/effect/kernel/Outcome.fold')
f(16,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(17,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(18,114,11,1,'cats/effect/IO$$Lambda$96.0x0000000800d5abc8.applyVoid')
f(19,114,11,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(21,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(22,114,11,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,114,11,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(25,114,11,1,'scala/runtime/function/JProcedure1.apply')
f(26,114,11,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57348.applyVoid')
f(27,114,11,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,114,11,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,114,11,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,114,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,114,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,114,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,114,11,1,'jdk/internal/misc/Unsafe.unpark')
f(34,114,11,3,'pthread_cond_signal')
f(35,114,11,5,'entry_SYSCALL_64_after_hwframe')
f(36,114,11,5,'do_syscall_64')
f(37,114,11,5,'__x64_sys_futex')
f(38,114,11,5,'do_futex')
f(39,114,11,5,'futex_wake')
f(40,115,10,5,'wake_up_q')
f(41,115,10,5,'_raw_spin_unlock_irqrestore')
f(6,125,10,3,'itable stub')
f(6,135,26,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,138,23,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',17,0,0)
f(8,141,2,2,'cats/effect/IO.flatMap',2,0,0)
f(9,141,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(8,143,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(9,143,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(10,143,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(8,144,17,2,'kyo/bench/BroadFlatMapBench.catsFib$1',11,0,0)
f(9,144,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,144,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(9,145,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,145,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(11,145,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(9,146,9,2,'kyo/bench/BroadFlatMapBench.catsFib$1',3,0,0)
f(10,146,3,2,'cats/effect/IO.flatMap',3,0,0)
f(11,146,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(10,149,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,149,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(12,149,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(13,149,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,150,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,152,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,152,1,2,'scala/math/BigInt$.apply',1,0,0)
f(14,152,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(11,153,2,2,'scala/math/BigInt$.apply',2,0,0)
f(12,153,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(9,155,6,2,'scala/math/BigInt$.apply',6,0,0)
f(10,155,6,2,'scala/math/BigInt$.getCached',6,0,0)
f(6,161,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,165,2,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',2,0,0)
f(8,165,2,2,'scala/math/BigInt.$plus',2,0,0)
f(9,165,2,2,'scala/math/BigInt.longEncoding',2,0,0)
f(5,167,7,3,'vtable stub')
f(3,174,55,1,'cats/effect/IOFiber.cedeR')
f(4,174,55,1,'cats/effect/IOFiber.runLoop')
f(5,184,4,2,'cats/effect/ArrayStack.push',4,0,0)
f(6,187,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,188,2,2,'cats/effect/ByteStack$.push',2,0,0)
f(5,190,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,194,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,197,1,2,'cats/effect/IO$Pure.value',1,0,0)
f(5,198,9,1,'cats/effect/IOFiber.next$2')
f(6,199,8,2,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply',8,0,0)
f(7,199,8,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',8,0,0)
f(8,199,8,2,'kyo/bench/BroadFlatMapBench.catsFib$1',8,0,0)
f(9,199,1,2,'cats/effect/IO$.pure',1,0,0)
f(10,199,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(9,200,4,2,'kyo/bench/BroadFlatMapBench.catsFib$1',4,0,0)
f(10,200,4,2,'scala/math/BigInt$.apply',4,0,0)
f(9,204,3,2,'scala/math/BigInt$.apply',3,0,0)
f(10,205,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(5,207,18,1,'cats/effect/IOFiber.succeeded')
f(6,212,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(6,213,1,3,'itable stub')
f(6,214,10,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,218,6,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',3,0,0)
f(8,218,6,2,'kyo/bench/BroadFlatMapBench.catsFib$1',3,0,0)
f(9,218,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1',1,0,0)
f(10,218,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,218,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,218,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,218,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,218,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,219,2,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,219,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,219,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,219,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,220,1,2,'scala/math/BigInt$.apply',1,0,0)
f(17,220,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(10,221,1,2,'scala/math/BigInt$.apply',1,0,0)
f(11,221,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,222,2,2,'scala/math/BigInt$.apply',2,0,0)
f(10,222,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(6,224,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$93.0x0000000800d5faa8.apply')
f(7,224,1,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',1,0,0)
f(8,224,1,2,'scala/math/BigInt.$plus',1,0,0)
f(9,224,1,2,'scala/math/BigInt.longEncoding',1,0,0)
f(5,225,4,3,'vtable stub')
f(3,229,1,2,'cats/effect/IOFiber.execR',1,0,0)
f(4,229,1,2,'cats/effect/ArrayStack.init',1,0,0)
f(2,230,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,230,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,230,1,2,'java/util/Random.nextInt',1,0,0)
f(2,231,8,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,231,8,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,231,8,1,'java/util/concurrent/locks/LockSupport.park')
f(5,231,8,1,'jdk/internal/misc/Unsafe.park')
f(6,231,8,3,'[unknown]')
f(7,231,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,231,8,5,'entry_SYSCALL_64_after_hwframe')
f(9,231,8,5,'do_syscall_64')
f(10,231,6,5,'__x64_sys_futex')
f(11,231,6,5,'do_futex')
f(12,232,5,5,'futex_wait')
f(13,232,5,5,'futex_wait_queue_me')
f(14,232,5,5,'schedule')
f(15,232,5,5,'__schedule')
f(16,232,5,5,'finish_task_switch.isra.0')
f(17,236,1,5,'asm_sysvec_hyperv_stimer0')
f(18,236,1,5,'sysvec_hyperv_stimer0')
f(19,236,1,5,'irq_exit_rcu')
f(20,236,1,5,'__irq_exit_rcu')
f(21,236,1,5,'__softirqentry_text_start')
f(10,237,1,5,'syscall_enter_from_user_mode')
f(10,238,1,5,'syscall_exit_to_user_mode')
f(11,238,1,5,'exit_to_user_mode_prepare')
f(12,238,1,5,'exit_to_user_mode_loop')
f(13,238,1,5,'__rseq_handle_notify_resume')
f(14,238,1,5,'__put_user_nocheck_8')
f(1,239,22,1,'java/lang/Thread.run')
f(2,239,22,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,239,22,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,239,22,1,'java/util/concurrent/FutureTask.run')
f(5,239,22,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,239,22,1,'java/util/concurrent/FutureTask.run')
f(7,239,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,239,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,239,22,1,'java/lang/reflect/Method.invoke')
f(10,239,22,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,239,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,239,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,239,22,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,239,22,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,239,22,1,'kyo/bench/Bench.forkCats')
f(16,239,22,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,239,22,1,'cats/effect/IOPlatform.unsafeRunTimed',1,0,0)
f(18,239,11,1,'cats/effect/IO.unsafeRunAsync',1,0,0)
f(19,239,11,1,'cats/effect/IO.unsafeRunFiber',1,0,0)
f(20,239,1,1,'cats/effect/IOFiber.<init>')
f(21,239,1,1,'cats/effect/ArrayStack$.apply')
f(22,239,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(23,239,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(24,239,1,4,'MemAllocator::allocate() const')
f(25,239,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(26,239,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(27,239,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(28,239,1,4,'Mutex::lock()')
f(20,240,1,2,'cats/effect/unsafe/StripedHashtable.put',1,0,0)
f(21,240,1,2,'java/lang/System.identityHashCode',1,0,0)
f(22,240,1,3,'Java_java_lang_System_identityHashCode')
f(20,241,9,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,241,9,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,241,9,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,241,9,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,241,9,1,'jdk/internal/misc/Unsafe.unpark')
f(25,241,9,3,'pthread_cond_signal')
f(26,241,9,5,'entry_SYSCALL_64_after_hwframe')
f(27,241,9,5,'do_syscall_64')
f(28,241,9,5,'__x64_sys_futex')
f(29,241,9,5,'do_futex')
f(30,241,9,5,'futex_wake')
f(31,242,8,5,'wake_up_q')
f(32,242,8,5,'_raw_spin_unlock_irqrestore')
f(18,250,1,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,250,1,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,250,1,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,250,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(22,250,1,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(23,250,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(18,251,10,1,'scala/concurrent/package$.blocking')
f(19,251,10,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,251,10,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5edf0.apply')
f(21,251,10,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,251,10,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,251,10,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,251,10,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,251,10,1,'jdk/internal/misc/Unsafe.park')
f(26,252,9,3,'[unknown]')
f(27,252,9,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,252,9,5,'entry_SYSCALL_64_after_hwframe')
f(29,252,9,5,'do_syscall_64')
f(30,252,9,5,'__x64_sys_futex')
f(31,252,9,5,'do_futex')
f(32,252,9,5,'futex_wait')
f(33,252,9,5,'futex_wait_queue_me')
f(34,252,9,5,'schedule')
f(35,252,9,5,'__schedule')
f(36,252,9,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: 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,12791,3,'all')
f(1,0,11459,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,11459,1,'cats/effect/IOFiber.run')
f(3,0,8307,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,8307,1,'cats/effect/IOFiber.runLoop')
f(5,0,2244,1,'cats/effect/IOFiber.next$2')
f(6,0,1546,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply')
f(7,0,1546,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,0,695,1,'cats/effect/IO.flatMap')
f(9,0,695,1,'cats/effect/IO$FlatMap$.apply')
f(10,0,695,2,'cats.effect.IO$FlatMap')
f(8,695,413,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,695,413,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,695,413,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,695,413,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f2e8')
f(8,1108,438,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,1108,438,1,'cats/effect/IO$.pure')
f(10,1108,438,1,'cats/effect/IO$Pure$.apply')
f(11,1108,438,2,'cats.effect.IO$Pure')
f(6,1546,698,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f2e8.apply')
f(7,1546,698,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,1546,698,1,'cats/effect/IO$.pure')
f(9,1546,698,1,'cats/effect/IO$Pure$.apply')
f(10,1546,698,2,'cats.effect.IO$Pure')
f(5,2244,6063,1,'cats/effect/IOFiber.succeeded')
f(6,2244,20,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,2244,1,1,'cats/effect/IO$.pure')
f(8,2244,1,1,'cats/effect/IO$Pure$.apply')
f(9,2244,1,2,'cats.effect.IO$Pure')
f(7,2245,16,1,'cats/effect/IOFiber.done')
f(8,2245,14,1,'cats/effect/CallbackStack.apply')
f(9,2245,14,1,'scala/runtime/function/JProcedure1.apply')
f(10,2245,14,1,'scala/runtime/function/JProcedure1.apply')
f(11,2245,14,1,'cats/effect/IO$$Lambda$88.0x0000000800d5ac58.applyVoid')
f(12,2245,14,1,'cats/effect/IO.$anonfun$6')
f(13,2245,6,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,2245,6,1,'cats/effect/kernel/Outcome.fold$')
f(15,2245,6,1,'cats/effect/kernel/Outcome.fold')
f(16,2245,6,1,'scala/runtime/function/JProcedure1.apply')
f(17,2245,6,1,'scala/runtime/function/JProcedure1.apply')
f(18,2245,6,1,'cats/effect/IO$$Lambda$95.0x0000000800d5d6c8.applyVoid')
f(19,2245,6,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,2245,6,1,'scala/runtime/function/JProcedure1.apply')
f(21,2245,6,1,'scala/runtime/function/JProcedure1.apply')
f(22,2245,6,1,'cats/effect/IO$$Lambda$87.0x0000000800d59c70.applyVoid')
f(23,2245,6,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,2245,4,1,'scala/runtime/function/JProcedure1.apply')
f(25,2245,4,1,'scala/runtime/function/JProcedure1.apply')
f(26,2245,4,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d591a0.applyVoid')
f(27,2245,4,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,2245,4,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,2245,4,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,2245,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,2245,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,2245,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,2245,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,2245,4,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(24,2249,2,1,'scala/util/Right$.apply')
f(25,2249,2,2,'scala.util.Right')
f(13,2251,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,2251,8,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,2251,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,2251,2,2,'cats.effect.IO$$Lambda$93+0x0000000800d5d000')
f(16,2253,3,2,'cats.effect.IO$$Lambda$94+0x0000000800d5d2c0')
f(16,2256,3,2,'cats.effect.IO$$Lambda$95+0x0000000800d5d6c8')
f(8,2259,2,1,'cats/effect/IO$.pure')
f(9,2259,2,1,'cats/effect/IO$Pure$.apply')
f(10,2259,2,2,'cats.effect.IO$Pure')
f(7,2261,3,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,2261,3,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,2264,5607,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply')
f(7,2264,5607,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,2264,1169,1,'cats/effect/IO.flatMap')
f(9,2264,1169,1,'cats/effect/IO$FlatMap$.apply')
f(10,2264,1169,2,'cats.effect.IO$FlatMap')
f(8,3433,720,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,3433,720,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,3433,720,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,3433,720,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f2e8')
f(8,4153,3718,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,4153,247,1,'cats/effect/IO$.pure')
f(10,4153,247,1,'cats/effect/IO$Pure$.apply')
f(11,4153,247,2,'cats.effect.IO$Pure')
f(9,4400,690,1,'cats/effect/IO.flatMap')
f(10,4400,690,1,'cats/effect/IO$FlatMap$.apply')
f(11,4400,690,2,'cats.effect.IO$FlatMap')
f(9,5090,463,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,5090,463,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,5090,463,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,5090,463,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(9,5553,2318,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,5553,179,1,'cats/effect/IO$.pure')
f(11,5553,179,1,'cats/effect/IO$Pure$.apply')
f(12,5553,179,2,'cats.effect.IO$Pure')
f(10,5732,397,1,'cats/effect/IO.flatMap')
f(11,5732,397,1,'cats/effect/IO$FlatMap$.apply')
f(12,5732,397,2,'cats.effect.IO$FlatMap')
f(10,6129,302,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6129,302,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,6129,302,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6129,302,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(10,6431,1440,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,6431,105,1,'cats/effect/IO$.pure')
f(12,6431,105,1,'cats/effect/IO$Pure$.apply')
f(13,6431,105,2,'cats.effect.IO$Pure')
f(11,6536,279,1,'cats/effect/IO.flatMap')
f(12,6536,279,1,'cats/effect/IO$FlatMap$.apply')
f(13,6536,279,2,'cats.effect.IO$FlatMap')
f(11,6815,202,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,6815,202,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,6815,202,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,6815,202,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(11,7017,854,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,7017,72,1,'cats/effect/IO$.pure')
f(13,7017,72,1,'cats/effect/IO$Pure$.apply')
f(14,7017,72,2,'cats.effect.IO$Pure')
f(12,7089,164,1,'cats/effect/IO.flatMap')
f(13,7089,164,1,'cats/effect/IO$FlatMap$.apply')
f(14,7089,164,2,'cats.effect.IO$FlatMap')
f(12,7253,110,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7253,110,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7253,110,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7253,110,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(12,7363,508,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,7363,48,1,'cats/effect/IO$.pure')
f(14,7363,48,1,'cats/effect/IO$Pure$.apply')
f(15,7363,48,2,'cats.effect.IO$Pure')
f(13,7411,102,1,'cats/effect/IO.flatMap')
f(14,7411,102,1,'cats/effect/IO$FlatMap$.apply')
f(15,7411,102,2,'cats.effect.IO$FlatMap')
f(13,7513,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,7513,61,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,7513,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,7513,61,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(13,7574,297,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,7574,29,1,'cats/effect/IO$.pure')
f(15,7574,29,1,'cats/effect/IO$Pure$.apply')
f(16,7574,29,2,'cats.effect.IO$Pure')
f(14,7603,52,1,'cats/effect/IO.flatMap')
f(15,7603,52,1,'cats/effect/IO$FlatMap$.apply')
f(16,7603,52,2,'cats.effect.IO$FlatMap')
f(14,7655,42,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,7655,42,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,7655,42,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,7655,42,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(14,7697,174,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,7697,11,1,'cats/effect/IO$.pure')
f(16,7697,11,1,'cats/effect/IO$Pure$.apply')
f(17,7697,11,2,'cats.effect.IO$Pure')
f(15,7708,35,1,'cats/effect/IO.flatMap')
f(16,7708,35,1,'cats/effect/IO$FlatMap$.apply')
f(17,7708,35,2,'cats.effect.IO$FlatMap')
f(15,7743,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7743,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7743,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7743,24,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(15,7767,104,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,7767,6,1,'cats/effect/IO$.pure')
f(17,7767,6,1,'cats/effect/IO$Pure$.apply')
f(18,7767,6,2,'cats.effect.IO$Pure')
f(16,7773,26,1,'cats/effect/IO.flatMap')
f(17,7773,26,1,'cats/effect/IO$FlatMap$.apply')
f(18,7773,26,2,'cats.effect.IO$FlatMap')
f(16,7799,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,7799,8,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,7799,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,7799,8,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(16,7807,64,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,7807,9,1,'cats/effect/IO$.pure')
f(18,7807,9,1,'cats/effect/IO$Pure$.apply')
f(19,7807,9,2,'cats.effect.IO$Pure')
f(17,7816,12,1,'cats/effect/IO.flatMap')
f(18,7816,12,1,'cats/effect/IO$FlatMap$.apply')
f(19,7816,12,2,'cats.effect.IO$FlatMap')
f(17,7828,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,7828,8,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,7828,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,7828,8,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(17,7836,35,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,7836,4,1,'cats/effect/IO$.pure')
f(19,7836,4,1,'cats/effect/IO$Pure$.apply')
f(20,7836,4,2,'cats.effect.IO$Pure')
f(18,7840,8,1,'cats/effect/IO.flatMap')
f(19,7840,8,1,'cats/effect/IO$FlatMap$.apply')
f(20,7840,8,2,'cats.effect.IO$FlatMap')
f(18,7848,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,7848,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,7848,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,7848,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(18,7851,20,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,7851,6,1,'cats/effect/IO.flatMap')
f(20,7851,6,1,'cats/effect/IO$FlatMap$.apply')
f(21,7851,6,2,'cats.effect.IO$FlatMap')
f(19,7857,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,7857,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,7857,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,7857,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(19,7860,11,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,7860,2,1,'cats/effect/IO$.pure')
f(21,7860,2,1,'cats/effect/IO$Pure$.apply')
f(22,7860,2,2,'cats.effect.IO$Pure')
f(20,7862,2,1,'cats/effect/IO.flatMap')
f(21,7862,2,1,'cats/effect/IO$FlatMap$.apply')
f(22,7862,2,2,'cats.effect.IO$FlatMap')
f(20,7864,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,7864,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,7864,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,7864,3,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(20,7867,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,7867,4,1,'cats/effect/IO$.pure')
f(22,7867,4,1,'cats/effect/IO$Pure$.apply')
f(23,7867,4,2,'cats.effect.IO$Pure')
f(6,7871,436,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f2e8.apply')
f(7,7871,436,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,7871,436,1,'cats/effect/IO$.pure')
f(9,7871,436,1,'cats/effect/IO$Pure$.apply')
f(10,7871,436,2,'cats.effect.IO$Pure')
f(3,8307,3152,1,'cats/effect/IOFiber.execR')
f(4,8307,23,1,'cats/effect/ArrayStack.init')
f(5,8307,23,2,'java.lang.Object[]')
f(4,8330,168,1,'cats/effect/ByteStack$.create')
f(5,8330,168,2,'int[]')
f(4,8498,2961,1,'cats/effect/IOFiber.runLoop')
f(5,8498,821,1,'cats/effect/IOFiber.next$2')
f(6,8498,555,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply')
f(7,8498,555,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,8498,234,1,'cats/effect/IO.flatMap')
f(9,8498,234,1,'cats/effect/IO$FlatMap$.apply')
f(10,8498,234,2,'cats.effect.IO$FlatMap')
f(8,8732,165,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8732,165,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8732,165,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8732,165,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f2e8')
f(8,8897,156,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,8897,156,1,'cats/effect/IO$.pure')
f(10,8897,156,1,'cats/effect/IO$Pure$.apply')
f(11,8897,156,2,'cats.effect.IO$Pure')
f(6,9053,266,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f2e8.apply')
f(7,9053,266,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,9053,266,1,'cats/effect/IO$.pure')
f(9,9053,266,1,'cats/effect/IO$Pure$.apply')
f(10,9053,266,2,'cats.effect.IO$Pure')
f(5,9319,2140,1,'cats/effect/IOFiber.succeeded')
f(6,9319,1998,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply')
f(7,9319,1998,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1')
f(8,9319,376,1,'cats/effect/IO.flatMap')
f(9,9319,376,1,'cats/effect/IO$FlatMap$.apply')
f(10,9319,376,2,'cats.effect.IO$FlatMap')
f(8,9695,256,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9695,256,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9695,256,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9695,256,2,'kyo.bench.BroadFlatMapBench$$Lambda$92+0x0000000800d5f2e8')
f(8,9951,1366,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(9,9951,98,1,'cats/effect/IO$.pure')
f(10,9951,98,1,'cats/effect/IO$Pure$.apply')
f(11,9951,98,2,'cats.effect.IO$Pure')
f(9,10049,255,1,'cats/effect/IO.flatMap')
f(10,10049,255,1,'cats/effect/IO$FlatMap$.apply')
f(11,10049,255,2,'cats.effect.IO$FlatMap')
f(9,10304,187,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,10304,187,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,10304,187,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,10304,187,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(9,10491,826,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,10491,71,1,'cats/effect/IO$.pure')
f(11,10491,71,1,'cats/effect/IO$Pure$.apply')
f(12,10491,71,2,'cats.effect.IO$Pure')
f(10,10562,155,1,'cats/effect/IO.flatMap')
f(11,10562,155,1,'cats/effect/IO$FlatMap$.apply')
f(12,10562,155,2,'cats.effect.IO$FlatMap')
f(10,10717,95,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,10717,95,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,10717,95,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,10717,95,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(10,10812,505,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,10812,35,1,'cats/effect/IO$.pure')
f(12,10812,35,1,'cats/effect/IO$Pure$.apply')
f(13,10812,35,2,'cats.effect.IO$Pure')
f(11,10847,98,1,'cats/effect/IO.flatMap')
f(12,10847,98,1,'cats/effect/IO$FlatMap$.apply')
f(13,10847,98,2,'cats.effect.IO$FlatMap')
f(11,10945,64,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,10945,64,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,10945,64,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,10945,64,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(11,11009,308,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,11009,27,1,'cats/effect/IO$.pure')
f(13,11009,27,1,'cats/effect/IO$Pure$.apply')
f(14,11009,27,2,'cats.effect.IO$Pure')
f(12,11036,57,1,'cats/effect/IO.flatMap')
f(13,11036,57,1,'cats/effect/IO$FlatMap$.apply')
f(14,11036,57,2,'cats.effect.IO$FlatMap')
f(12,11093,43,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,11093,43,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,11093,43,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,11093,43,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(12,11136,181,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,11136,13,1,'cats/effect/IO$.pure')
f(14,11136,13,1,'cats/effect/IO$Pure$.apply')
f(15,11136,13,2,'cats.effect.IO$Pure')
f(13,11149,35,1,'cats/effect/IO.flatMap')
f(14,11149,35,1,'cats/effect/IO$FlatMap$.apply')
f(15,11149,35,2,'cats.effect.IO$FlatMap')
f(13,11184,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,11184,30,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,11184,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,11184,30,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(13,11214,103,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,11214,12,1,'cats/effect/IO$.pure')
f(15,11214,12,1,'cats/effect/IO$Pure$.apply')
f(16,11214,12,2,'cats.effect.IO$Pure')
f(14,11226,19,1,'cats/effect/IO.flatMap')
f(15,11226,19,1,'cats/effect/IO$FlatMap$.apply')
f(16,11226,19,2,'cats.effect.IO$FlatMap')
f(14,11245,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,11245,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,11245,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,11245,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(14,11260,57,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,11260,4,1,'cats/effect/IO$.pure')
f(16,11260,4,1,'cats/effect/IO$Pure$.apply')
f(17,11260,4,2,'cats.effect.IO$Pure')
f(15,11264,12,1,'cats/effect/IO.flatMap')
f(16,11264,12,1,'cats/effect/IO$FlatMap$.apply')
f(17,11264,12,2,'cats.effect.IO$FlatMap')
f(15,11276,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,11276,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,11276,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,11276,6,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(15,11282,35,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(16,11282,3,1,'cats/effect/IO$.pure')
f(17,11282,3,1,'cats/effect/IO$Pure$.apply')
f(18,11282,3,2,'cats.effect.IO$Pure')
f(16,11285,7,1,'cats/effect/IO.flatMap')
f(17,11285,7,1,'cats/effect/IO$FlatMap$.apply')
f(18,11285,7,2,'cats.effect.IO$FlatMap')
f(16,11292,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,11292,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,11292,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,11292,6,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(16,11298,19,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(17,11298,2,1,'cats/effect/IO$.pure')
f(18,11298,2,1,'cats/effect/IO$Pure$.apply')
f(19,11298,2,2,'cats.effect.IO$Pure')
f(17,11300,5,1,'cats/effect/IO.flatMap')
f(18,11300,5,1,'cats/effect/IO$FlatMap$.apply')
f(19,11300,5,2,'cats.effect.IO$FlatMap')
f(17,11305,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,11305,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,11305,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,11305,2,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(17,11307,10,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,11307,3,1,'cats/effect/IO$.pure')
f(19,11307,3,1,'cats/effect/IO$Pure$.apply')
f(20,11307,3,2,'cats.effect.IO$Pure')
f(18,11310,3,1,'cats/effect/IO.flatMap')
f(19,11310,3,1,'cats/effect/IO$FlatMap$.apply')
f(20,11310,3,2,'cats.effect.IO$FlatMap')
f(18,11313,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,11313,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,11313,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,11313,1,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(18,11314,3,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,11314,3,1,'cats/effect/IO$.pure')
f(20,11314,3,1,'cats/effect/IO$Pure$.apply')
f(21,11314,3,2,'cats.effect.IO$Pure')
f(6,11317,142,1,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f2e8.apply')
f(7,11317,142,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1')
f(8,11317,142,1,'cats/effect/IO$.pure')
f(9,11317,142,1,'cats/effect/IO$Pure$.apply')
f(10,11317,142,2,'cats.effect.IO$Pure')
f(1,11459,1329,1,'java/lang/Thread.run')
f(2,11459,1329,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,11459,1329,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,11459,1329,1,'java/util/concurrent/FutureTask.run')
f(5,11459,1329,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,11459,1329,1,'java/util/concurrent/FutureTask.run')
f(7,11459,1329,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,11459,1329,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,11459,1329,1,'java/lang/reflect/Method.invoke')
f(10,11459,1329,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,11459,1329,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,11459,1329,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,11459,1329,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,11459,1329,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,11459,1329,1,'kyo/bench/Bench.syncCats')
f(16,11459,714,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,11459,662,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,11459,403,1,'cats/effect/IO.unsafeRunAsync')
f(19,11459,359,1,'cats/effect/IO.unsafeRunFiber')
f(20,11459,137,2,'cats.effect.IOFiber')
f(20,11596,164,1,'cats/effect/IOFiber.<init>')
f(21,11596,60,1,'cats/effect/ArrayStack$.apply')
f(22,11596,60,2,'cats.effect.ArrayStack')
f(21,11656,12,1,'cats/effect/CallbackStack$.apply')
f(22,11656,12,2,'cats.effect.CallbackStack')
f(21,11668,39,1,'cats/effect/IO$.async')
f(22,11668,9,2,'cats.effect.IO$$anon$4')
f(22,11677,30,1,'cats/effect/IO$IOCont$.apply')
f(23,11677,30,2,'cats.effect.IO$IOCont')
f(21,11707,18,1,'cats/effect/IO$.uncancelable')
f(22,11707,18,1,'cats/effect/IO$Uncancelable$.apply')
f(23,11707,18,2,'cats.effect.IO$Uncancelable')
f(21,11725,35,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,11725,35,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,11725,35,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,11725,17,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5ba90')
f(24,11742,18,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e220')
f(20,11760,29,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,11760,29,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,11760,29,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,11760,29,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,11760,29,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,11789,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,11789,29,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c000.newInvokeSpecial')
f(22,11789,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,11789,29,2,'cats.effect.IO$$Lambda$88+0x0000000800d5ac58')
f(19,11818,44,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,11818,44,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,11818,44,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11818,17,2,'cats.effect.IO$$Lambda$85+0x0000000800d595a8')
f(22,11835,15,2,'cats.effect.IO$$Lambda$86+0x0000000800d59868')
f(22,11850,12,2,'cats.effect.IO$$Lambda$87+0x0000000800d59c70')
f(18,11862,62,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,11924,14,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,11924,14,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,11924,14,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,11924,14,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d591a0')
f(18,11938,96,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,11938,96,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,11938,15,2,'java.lang.Object[]')
f(20,11953,13,2,'java.util.concurrent.locks.ReentrantLock')
f(20,11966,24,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,11966,24,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,11990,44,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,11990,44,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,11990,44,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,12034,53,1,'scala/concurrent/package$.blocking')
f(19,12034,53,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,12034,53,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ec00.apply')
f(21,12034,53,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,12034,53,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,12034,53,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,12034,53,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,12087,34,1,'scala/util/Either.fold')
f(19,12087,34,1,'cats/effect/IOPlatform$$Lambda$97.0x0000000800d5cbc8.apply')
f(20,12087,34,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,12087,34,1,'scala/Some$.apply')
f(22,12087,34,2,'scala.Some')
f(17,12121,52,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,12121,52,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,12121,52,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,12121,52,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,12121,52,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,12121,52,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,12121,52,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,12121,52,2,'scala.concurrent.duration.FiniteDuration')
f(16,12173,615,1,'kyo/bench/BroadFlatMapBench.catsBench')
f(17,12173,615,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,12173,48,1,'cats/effect/IO.flatMap')
f(19,12173,48,1,'cats/effect/IO$FlatMap$.apply')
f(20,12173,48,2,'cats.effect.IO$FlatMap')
f(18,12221,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,12221,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,12221,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12221,7,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(18,12228,560,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,12228,31,1,'cats/effect/IO.flatMap')
f(20,12228,31,1,'cats/effect/IO$FlatMap$.apply')
f(21,12228,31,2,'cats.effect.IO$FlatMap')
f(19,12259,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,12259,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,12259,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,12259,17,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(19,12276,512,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,12276,24,1,'cats/effect/IO.flatMap')
f(21,12276,24,1,'cats/effect/IO$FlatMap$.apply')
f(22,12276,24,2,'cats.effect.IO$FlatMap')
f(20,12300,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,12300,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,12300,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,12300,16,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(20,12316,472,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,12316,12,1,'cats/effect/IO.flatMap')
f(22,12316,12,1,'cats/effect/IO$FlatMap$.apply')
f(23,12316,12,2,'cats.effect.IO$FlatMap')
f(21,12328,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,12328,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,12328,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,12328,24,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(21,12352,436,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(22,12352,20,1,'cats/effect/IO.flatMap')
f(23,12352,20,1,'cats/effect/IO$FlatMap$.apply')
f(24,12352,20,2,'cats.effect.IO$FlatMap')
f(22,12372,13,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,12372,13,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,12372,13,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,12372,13,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(22,12385,403,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(23,12385,24,1,'cats/effect/IO.flatMap')
f(24,12385,24,1,'cats/effect/IO$FlatMap$.apply')
f(25,12385,24,2,'cats.effect.IO$FlatMap')
f(23,12409,22,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,12409,22,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,12409,22,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,12409,22,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(23,12431,357,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(24,12431,19,1,'cats/effect/IO.flatMap')
f(25,12431,19,1,'cats/effect/IO$FlatMap$.apply')
f(26,12431,19,2,'cats.effect.IO$FlatMap')
f(24,12450,13,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,12450,13,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,12450,13,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,12450,13,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(24,12463,325,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(25,12463,35,1,'cats/effect/IO.flatMap')
f(26,12463,35,1,'cats/effect/IO$FlatMap$.apply')
f(27,12463,35,2,'cats.effect.IO$FlatMap')
f(25,12498,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(26,12498,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(27,12498,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(28,12498,18,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(25,12516,272,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(26,12516,43,1,'cats/effect/IO.flatMap')
f(27,12516,43,1,'cats/effect/IO$FlatMap$.apply')
f(28,12516,43,2,'cats.effect.IO$FlatMap')
f(26,12559,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(27,12559,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(28,12559,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(29,12559,12,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(26,12571,217,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(27,12571,25,1,'cats/effect/IO.flatMap')
f(28,12571,25,1,'cats/effect/IO$FlatMap$.apply')
f(29,12571,25,2,'cats.effect.IO$FlatMap')
f(27,12596,14,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(28,12596,14,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(29,12596,14,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(30,12596,14,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(27,12610,178,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(28,12610,24,1,'cats/effect/IO.flatMap')
f(29,12610,24,1,'cats/effect/IO$FlatMap$.apply')
f(30,12610,24,2,'cats.effect.IO$FlatMap')
f(28,12634,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(29,12634,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(30,12634,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,12634,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(28,12649,139,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(29,12649,24,1,'cats/effect/IO.flatMap')
f(30,12649,24,1,'cats/effect/IO$FlatMap$.apply')
f(31,12649,24,2,'cats.effect.IO$FlatMap')
f(29,12673,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,12673,21,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,12673,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,12673,21,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(29,12694,94,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(30,12694,32,1,'cats/effect/IO.flatMap')
f(31,12694,32,1,'cats/effect/IO$FlatMap$.apply')
f(32,12694,32,2,'cats.effect.IO$FlatMap')
f(30,12726,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(31,12726,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(32,12726,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(33,12726,6,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(30,12732,56,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(31,12732,26,1,'cats/effect/IO.flatMap')
f(32,12732,26,1,'cats/effect/IO$FlatMap$.apply')
f(33,12732,26,2,'cats.effect.IO$FlatMap')
f(31,12758,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,12758,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,12758,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,12758,15,2,'kyo.bench.BroadFlatMapBench$$Lambda$42+0x0000000800d2ac58')
f(31,12773,15,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(32,12773,15,1,'cats/effect/IO$.pure')
f(33,12773,15,1,'cats/effect/IO$Pure$.apply')
f(34,12773,15,2,'cats.effect.IO$Pure')
f(1,12788,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,12788,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,12788,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,12788,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,12788,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,12788,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,12788,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,12788,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,12788,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,12788,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,12788,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,12788,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,12788,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,2,3,'[unknown_Java]')
f(2,0,1,1,'cats/effect/IOFiber.next$2')
f(2,1,1,1,'cats/effect/unsafe/WorkerThread.run')
f(1,2,217,1,'cats/effect/unsafe/WorkerThread.run')
f(2,2,191,1,'cats/effect/IOFiber.run',3,0,0)
f(3,2,149,1,'cats/effect/IOFiber.autoCedeR')
f(4,2,149,1,'cats/effect/IOFiber.runLoop')
f(5,23,10,2,'cats/effect/ArrayStack.push',10,0,0)
f(6,30,3,2,'cats/effect/ArrayStack.checkAndGrow',3,0,0)
f(5,33,4,2,'cats/effect/ByteStack$.push',4,0,0)
f(6,35,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(5,37,1,2,'cats/effect/IO$FlatMap.f',1,0,0)
f(5,38,3,2,'cats/effect/IO$FlatMap.ioe',3,0,0)
f(5,41,3,2,'cats/effect/IO$Pure.value',3,0,0)
f(5,44,27,1,'cats/effect/IOFiber.next$2')
f(6,44,27,2,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply',27,0,0)
f(7,48,23,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',23,0,0)
f(8,48,23,2,'kyo/bench/BroadFlatMapBench.catsFib$1',23,0,0)
f(9,52,7,2,'kyo/bench/BroadFlatMapBench.catsFib$1',7,0,0)
f(10,52,7,2,'scala/math/BigInt$.apply',7,0,0)
f(9,59,12,2,'scala/math/BigInt$.apply',12,0,0)
f(10,68,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(5,71,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,72,79,1,'cats/effect/IOFiber.succeeded')
f(6,76,10,2,'cats/effect/ByteStack$.pop',10,0,0)
f(7,80,6,2,'cats/effect/ByteStack$.peek',6,0,0)
f(6,86,20,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,86,20,1,'cats/effect/IOFiber.done')
f(8,86,20,1,'cats/effect/CallbackStack.apply')
f(9,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(10,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(11,86,20,1,'cats/effect/IO$$Lambda$88.0x0000000800d5ac58.applyVoid')
f(12,86,20,1,'cats/effect/IO.$anonfun$6')
f(13,86,20,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,86,20,1,'cats/effect/kernel/Outcome.fold$')
f(15,86,20,1,'cats/effect/kernel/Outcome.fold')
f(16,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(17,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(18,86,20,1,'cats/effect/IO$$Lambda$95.0x0000000800d5d6c8.applyVoid')
f(19,86,20,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(21,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(22,86,20,1,'cats/effect/IO$$Lambda$87.0x0000000800d59c70.applyVoid')
f(23,86,20,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(25,86,20,1,'scala/runtime/function/JProcedure1.apply')
f(26,86,19,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d591a0.applyVoid')
f(27,86,19,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,86,19,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,86,19,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,86,19,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,86,19,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,86,19,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,86,19,1,'jdk/internal/misc/Unsafe.unpark')
f(34,86,1,3,'Unsafe_Unpark')
f(35,86,1,4,'SafeThreadsListPtr::release_stable_list()')
f(34,87,18,3,'pthread_cond_signal')
f(35,87,18,5,'entry_SYSCALL_64_after_hwframe')
f(36,87,18,5,'do_syscall_64')
f(37,87,18,5,'__x64_sys_futex')
f(38,87,18,5,'do_futex')
f(39,87,18,5,'futex_wake')
f(40,87,18,5,'wake_up_q')
f(41,87,17,5,'_raw_spin_unlock_irqrestore')
f(41,104,1,5,'try_to_wake_up')
f(26,105,1,3,'itable stub')
f(6,106,16,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply',3,0,0)
f(7,106,16,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',3,0,0)
f(8,106,16,1,'kyo/bench/BroadFlatMapBench.catsFib$1',3,0,0)
f(9,106,13,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,106,13,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,107,2,2,'cats/effect/IO$.pure',2,0,0)
f(12,107,2,2,'cats/effect/IO$Pure$.apply',2,0,0)
f(11,109,1,2,'cats/effect/IO.flatMap',1,0,0)
f(12,109,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(11,110,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,110,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(13,110,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(14,110,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(12,111,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,111,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(14,111,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(15,111,1,2,'scala/math/BigInt$.apply',1,0,0)
f(16,111,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(13,112,4,2,'scala/math/BigInt$.apply',4,0,0)
f(14,112,4,2,'scala/math/BigInt$.getCached',4,0,0)
f(11,116,3,2,'scala/math/BigInt$.apply',3,0,0)
f(12,116,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(9,119,3,2,'scala/math/BigInt$.apply',3,0,0)
f(10,119,3,2,'scala/math/BigInt$.getCached',3,0,0)
f(11,121,1,2,'scala/math/BigInt.<init>',1,0,0)
f(6,122,29,2,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f4f0.apply',29,0,0)
f(7,122,29,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',29,0,0)
f(8,132,1,2,'cats/effect/IO$.pure',1,0,0)
f(9,132,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,132,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(11,132,1,2,'cats/effect/IO.<init>',1,0,0)
f(8,133,18,2,'scala/math/BigInt.$plus',18,0,0)
f(9,136,8,2,'scala/math/BigInt$.apply',8,0,0)
f(10,139,5,2,'scala/math/BigInt$.getCached',5,0,0)
f(11,143,1,2,'scala/math/BigInt.<init>',1,0,0)
f(9,144,7,2,'scala/math/BigInt.longEncoding',7,0,0)
f(10,144,7,2,'scala/math/BigInt._long',7,0,0)
f(3,151,42,1,'cats/effect/IOFiber.execR',3,0,0)
f(4,152,2,2,'cats/effect/ArrayStack.init',2,0,0)
f(4,154,39,1,'cats/effect/IOFiber.runLoop')
f(5,159,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(6,159,2,2,'cats/effect/ArrayStack.checkAndGrow',2,0,0)
f(5,161,4,2,'cats/effect/ByteStack$.push',4,0,0)
f(6,163,2,2,'cats/effect/ByteStack$.growIfNeeded',2,0,0)
f(5,165,1,2,'cats/effect/IO$FlatMap.f',1,0,0)
f(5,166,1,2,'cats/effect/IO$FlatMap.ioe',1,0,0)
f(5,167,10,1,'cats/effect/IOFiber.next$2')
f(6,167,10,2,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply',10,0,0)
f(7,168,9,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',9,0,0)
f(8,168,9,2,'kyo/bench/BroadFlatMapBench.catsFib$1',9,0,0)
f(9,171,5,2,'kyo/bench/BroadFlatMapBench.catsFib$1',5,0,0)
f(10,171,5,2,'scala/math/BigInt$.apply',5,0,0)
f(9,176,1,2,'scala/math/BigInt$.apply',1,0,0)
f(10,176,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(5,177,16,1,'cats/effect/IOFiber.succeeded')
f(6,178,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,178,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,179,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$42.0x0000000800d2ac58.apply',1,0,0)
f(7,179,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1',1,0,0)
f(8,179,6,1,'kyo/bench/BroadFlatMapBench.catsFib$1',1,0,0)
f(9,179,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(10,179,5,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(11,179,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(12,179,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(13,179,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,180,4,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(12,180,3,2,'cats/effect/IO.flatMap',3,0,0)
f(13,180,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(14,182,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(12,183,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(13,183,1,2,'scala/math/BigInt$.apply',1,0,0)
f(14,183,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(9,184,1,2,'scala/math/BigInt$.apply',1,0,0)
f(10,184,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(11,184,1,2,'scala/math/BigInt.<init>',1,0,0)
f(6,185,8,2,'kyo/bench/BroadFlatMapBench$$Lambda$92.0x0000000800d5f4f0.apply',8,0,0)
f(7,185,8,2,'kyo/bench/BroadFlatMapBench.catsFib$1$$anonfun$1$$anonfun$1',8,0,0)
f(8,188,5,2,'scala/math/BigInt.$plus',5,0,0)
f(9,189,4,2,'scala/math/BigInt$.apply',4,0,0)
f(10,191,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(2,193,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,193,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,193,1,2,'java/util/Random.nextInt',1,0,0)
f(2,194,2,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,195,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(2,196,23,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,196,23,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,196,23,1,'java/util/concurrent/locks/LockSupport.park')
f(5,196,23,1,'jdk/internal/misc/Unsafe.park')
f(6,198,4,3,'Unsafe_Park')
f(7,200,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,200,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,200,1,5,'__x64_sys_futex')
f(7,201,1,4,'Parker::park(bool, long)')
f(6,202,17,3,'[unknown]')
f(7,202,17,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,205,14,5,'entry_SYSCALL_64_after_hwframe')
f(9,205,14,5,'do_syscall_64')
f(10,205,14,5,'__x64_sys_futex')
f(11,205,14,5,'do_futex')
f(12,205,14,5,'futex_wait')
f(13,205,13,5,'futex_wait_queue_me')
f(14,205,13,5,'schedule')
f(15,205,13,5,'__schedule')
f(16,205,13,5,'finish_task_switch.isra.0')
f(13,218,1,5,'futex_wait_setup')
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,32,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,219,31,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,219,9,1,'cats/effect/IO.unsafeRunAsync')
f(19,219,9,1,'cats/effect/IO.unsafeRunFiber')
f(20,219,9,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,219,9,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,219,9,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,219,9,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,219,9,1,'jdk/internal/misc/Unsafe.unpark')
f(25,219,9,3,'pthread_cond_signal')
f(26,219,9,5,'entry_SYSCALL_64_after_hwframe')
f(27,219,9,5,'do_syscall_64')
f(28,219,9,5,'__x64_sys_futex')
f(29,219,9,5,'do_futex')
f(30,219,9,5,'futex_wake')
f(31,219,9,5,'wake_up_q')
f(32,219,9,5,'_raw_spin_unlock_irqrestore')
f(18,228,22,1,'scala/concurrent/package$.blocking')
f(19,228,22,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,228,22,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5e9f8.apply',1,0,0)
f(21,228,22,1,'cats/effect/IOPlatform.$anonfun$1',1,0,0)
f(22,228,22,1,'java/util/concurrent/ArrayBlockingQueue.poll',1,0,0)
f(23,228,22,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos',1,0,0)
f(24,228,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.enableWait',1,0,0)
f(24,229,21,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,229,21,1,'jdk/internal/misc/Unsafe.park')
f(26,229,3,3,'Unsafe_Park')
f(27,231,1,4,'Parker::park(bool, long)')
f(26,232,17,3,'[unknown]')
f(27,232,17,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,235,14,5,'entry_SYSCALL_64_after_hwframe')
f(29,235,14,5,'do_syscall_64')
f(30,235,11,5,'__x64_sys_futex')
f(31,235,11,5,'do_futex')
f(32,235,11,5,'futex_wait')
f(33,236,8,5,'futex_wait_queue_me')
f(34,237,7,5,'schedule')
f(35,237,7,5,'__schedule')
f(36,237,7,5,'finish_task_switch.isra.0')
f(33,244,1,5,'futex_wait_setup')
f(33,245,1,5,'hrtimer_cancel')
f(34,245,1,5,'hrtimer_try_to_cancel.part.0')
f(30,246,3,5,'syscall_exit_to_user_mode')
f(31,246,3,5,'exit_to_user_mode_prepare')
f(32,246,3,5,'exit_to_user_mode_loop')
f(33,246,3,5,'__rseq_handle_notify_resume')
f(34,248,1,5,'rseq_ip_fixup')
f(35,248,1,5,'__get_user_8')
f(26,249,1,4,'java_lang_Thread::set_thread_status(oopDesc*, JavaThreadStatus)')
f(17,250,1,2,'scala/concurrent/duration/package$DurationLong.nanos',1,0,0)
f(18,250,1,2,'scala/concurrent/duration/DurationConversions.nanos$',1,0,0)
f(19,250,1,2,'scala/concurrent/duration/DurationConversions.nanos',1,0,0)
f(20,250,1,2,'scala/concurrent/duration/package$DurationLong.nanoseconds',1,0,0)
f(21,250,1,2,'scala/concurrent/duration/DurationConversions.nanoseconds$',1,0,0)
f(22,250,1,2,'scala/concurrent/duration/DurationConversions.nanoseconds',1,0,0)
f(23,250,1,2,'scala/concurrent/duration/package$DurationLong.durationIn',1,0,0)
f(24,250,1,2,'scala/concurrent/duration/FiniteDuration.<init>',1,0,0)
f(25,250,1,2,'scala/concurrent/duration/Duration.<init>',1,0,0)
f(16,251,1,1,'kyo/bench/BroadFlatMapBench.catsBench')
f(17,251,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(18,251,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(19,251,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(20,251,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(21,251,1,1,'kyo/bench/BroadFlatMapBench.catsFib$1')
f(22,251,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(23,251,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(24,251,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: 544px}
</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(34);
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,17599,3,'all')
f(1,0,16987,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,16987,1,'cats/effect/IOFiber.run')
f(3,0,2,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,2,1,'cats/effect/IOFiber.succeeded')
f(5,0,2,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(6,1,1,1,'cats/effect/IOFiber.done')
f(7,1,1,1,'cats/effect/CallbackStack.apply')
f(8,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,1,1,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(11,1,1,1,'cats/effect/IO.$anonfun$6')
f(12,1,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,1,1,1,'cats/effect/kernel/Outcome.fold$')
f(14,1,1,1,'cats/effect/kernel/Outcome.fold')
f(15,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(16,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,1,1,1,'cats/effect/IO$$Lambda$110.0x0000000800d7ac60.applyVoid')
f(18,1,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(20,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,1,1,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(22,1,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(24,1,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,1,1,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(26,1,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,1,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,1,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(29,1,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(30,1,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(31,1,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(32,1,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(33,1,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(3,2,1,1,'cats/effect/IOFiber.cedeR')
f(4,2,1,1,'cats/effect/IOFiber.runLoop')
f(5,2,1,2,'cats.effect.ContState')
f(3,3,16984,1,'cats/effect/IOFiber.execR')
f(4,3,4812,1,'cats/effect/ArrayStack.init')
f(5,3,4812,2,'java.lang.Object[]')
f(4,4815,1005,1,'cats/effect/ByteStack$.create')
f(5,4815,1005,2,'int[]')
f(4,5820,11167,1,'cats/effect/IOFiber.runLoop')
f(5,5820,2290,2,'cats.effect.IOFiber')
f(5,8110,5093,1,'cats/effect/IOFiber.<init>')
f(6,8110,1470,1,'cats/effect/ArrayStack$.apply')
f(7,8110,1470,2,'cats.effect.ArrayStack')
f(6,9580,779,1,'cats/effect/CallbackStack$.apply')
f(7,9580,779,2,'cats.effect.CallbackStack')
f(6,10359,1038,1,'cats/effect/IO$.async')
f(7,10359,387,2,'cats.effect.IO$$anon$4')
f(7,10746,651,1,'cats/effect/IO$IOCont$.apply')
f(8,10746,651,2,'cats.effect.IO$IOCont')
f(6,11397,942,1,'cats/effect/IO$.uncancelable')
f(7,11397,942,1,'cats/effect/IO$Uncancelable$.apply')
f(8,11397,942,2,'cats.effect.IO$Uncancelable')
f(6,12339,864,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,12339,864,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,12339,864,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,12339,467,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5e028')
f(9,12806,397,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e618')
f(5,13203,2075,1,'cats/effect/IOFiber.next$2')
f(6,13203,2075,1,'kyo/bench/ChainedForkBench$$Lambda$97.0x0000000800d5b6e8.apply')
f(7,13203,2075,1,'kyo/bench/ChainedForkBench.iterate$1$$anonfun$1')
f(8,13203,486,1,'cats/effect/IO.start')
f(9,13203,486,1,'cats/effect/IO$Start$.apply')
f(10,13203,486,2,'cats.effect.IO$Start')
f(8,13689,1589,1,'kyo/bench/ChainedForkBench.iterate$1')
f(9,13689,795,1,'cats/effect/IO.flatMap')
f(10,13689,795,1,'cats/effect/IO$FlatMap$.apply')
f(11,13689,795,2,'cats.effect.IO$FlatMap')
f(9,14484,794,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,14484,794,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59400.newInvokeSpecial')
f(11,14484,794,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,14484,794,2,'kyo.bench.ChainedForkBench$$Lambda$97+0x0000000800d5b6e8')
f(5,15278,1709,1,'cats/effect/IOFiber.succeeded')
f(6,15278,1709,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,15278,806,1,'cats/effect/IO$.pure')
f(8,15278,806,1,'cats/effect/IO$Pure$.apply')
f(9,15278,806,2,'cats.effect.IO$Pure')
f(7,16084,480,1,'cats/effect/IOFiber.done')
f(8,16084,480,1,'cats/effect/IO$.pure')
f(9,16084,480,1,'cats/effect/IO$Pure$.apply')
f(10,16084,480,2,'cats.effect.IO$Pure')
f(7,16564,423,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,16564,423,2,'cats.effect.kernel.Outcome$Succeeded')
f(1,16987,609,1,'java/lang/Thread.run')
f(2,16987,609,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,16987,609,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,16987,609,1,'java/util/concurrent/FutureTask.run')
f(5,16987,609,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,16987,609,1,'java/util/concurrent/FutureTask.run')
f(7,16987,609,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,16987,609,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,16987,609,1,'java/lang/reflect/Method.invoke')
f(10,16987,609,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,16987,609,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,16987,609,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,16987,609,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_Throughput')
f(14,16987,609,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,16987,608,1,'kyo/bench/Bench.forkCats')
f(16,16987,16,1,'cats/effect/IO.flatMap')
f(17,16987,16,1,'cats/effect/IO$FlatMap$.apply')
f(18,16987,16,2,'cats.effect.IO$FlatMap')
f(16,17003,546,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,17003,524,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,17003,316,1,'cats/effect/IO.unsafeRunAsync')
f(19,17003,252,1,'cats/effect/IO.unsafeRunFiber')
f(20,17003,47,2,'cats.effect.IOFiber')
f(20,17050,1,5,'cats.effect.IOFiber')
f(20,17051,159,1,'cats/effect/IOFiber.<init>')
f(21,17051,59,1,'cats/effect/ArrayStack$.apply')
f(22,17051,59,2,'cats.effect.ArrayStack')
f(21,17110,5,1,'cats/effect/CallbackStack$.apply')
f(22,17110,5,2,'cats.effect.CallbackStack')
f(21,17115,45,1,'cats/effect/IO$.async')
f(22,17115,19,2,'cats.effect.IO$$anon$4')
f(22,17134,26,1,'cats/effect/IO$IOCont$.apply')
f(23,17134,26,2,'cats.effect.IO$IOCont')
f(21,17160,47,1,'cats/effect/IO$.uncancelable')
f(22,17160,47,1,'cats/effect/IO$Uncancelable$.apply')
f(23,17160,47,2,'cats.effect.IO$Uncancelable')
f(21,17207,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,17207,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,17207,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,17207,3,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5e028')
f(20,17210,24,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,17210,24,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,17210,24,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,17210,24,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,17210,24,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,17234,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,17234,21,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,17234,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,17234,21,2,'cats.effect.IO$$Lambda$88+0x0000000800d5d1f0')
f(19,17255,64,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,17255,64,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,17255,64,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,17255,3,2,'cats.effect.IO$$Lambda$85+0x0000000800d57a08')
f(22,17258,33,2,'cats.effect.IO$$Lambda$86+0x0000000800d5c000')
f(22,17291,28,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c408')
f(18,17319,18,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17337,20,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17337,20,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17337,20,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17337,20,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57600')
f(18,17357,123,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17357,123,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17357,45,2,'java.lang.Object[]')
f(20,17402,36,2,'java.util.concurrent.locks.ReentrantLock')
f(20,17438,21,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,17438,21,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,17459,21,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,17459,21,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,17459,21,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17480,14,1,'scala/concurrent/package$.blocking')
f(19,17480,14,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17480,14,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5eff8.apply')
f(21,17480,14,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17480,14,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17480,14,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17480,14,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17494,33,1,'scala/util/Either.fold')
f(19,17494,33,1,'cats/effect/IOPlatform$$Lambda$112.0x0000000800d7b430.apply')
f(20,17494,33,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17494,33,1,'scala/Some$.apply')
f(22,17494,33,2,'scala.Some')
f(17,17527,22,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17527,22,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17527,22,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17527,22,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17527,22,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17527,22,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17527,22,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17527,22,2,'scala.concurrent.duration.FiniteDuration')
f(16,17549,46,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,17549,46,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,17549,46,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,17549,46,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13280')
f(15,17595,1,1,'org/openjdk/jmh/infra/Blackhole.consume')
f(16,17595,1,2,'java.lang.String')
f(1,17596,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17596,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17596,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17596,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17596,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17596,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17596,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17596,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17596,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17596,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17596,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17596,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17596,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: 944px}
</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(59);
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,478,3,'all')
f(1,0,28,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,28,3,'thread_native_entry(Thread*)')
f(3,0,28,4,'Thread::call_run()')
f(4,0,28,4,'JavaThread::thread_main_inner()')
f(5,0,28,4,'CompileBroker::compiler_thread_loop()')
f(6,0,28,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,28,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,28,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,15,4,'Compile::Code_Gen()')
f(10,0,3,4,'Matcher::match()')
f(11,0,3,4,'Matcher::xform(Node*, int)')
f(12,0,3,4,'Matcher::match_tree(Node const*)')
f(13,0,3,4,'Matcher::Label_Root(Node const*, State*, Node*, Node*&)')
f(14,1,1,4,'Arena::grow(unsigned long, AllocFailStrategy::AllocFailEnum)')
f(15,1,1,4,'ChunkPool::allocate(unsigned long, AllocFailStrategy::AllocFailEnum)')
f(14,2,1,4,'TypeNode::bottom_type() const')
f(10,3,1,4,'PhaseCFG::do_global_code_motion()')
f(11,3,1,4,'PhaseCFG::global_code_motion()')
f(12,3,1,4,'PhaseLive::compute(unsigned int)')
f(13,3,1,4,'PhaseLive::add_liveout(Block*, IndexSet*, VectorSet&)')
f(14,3,1,4,'IndexSet::alloc_block_containing(unsigned int)')
f(10,4,9,4,'PhaseChaitin::Register_Allocate()')
f(11,4,1,4,'PhaseChaitin::Select()')
f(12,4,1,4,'IndexSetIterator::advance_and_next()')
f(11,5,2,4,'PhaseChaitin::Simplify()')
f(12,5,1,4,'IndexSetIterator::advance_and_next()')
f(12,6,1,4,'PhaseIFG::remove_node(unsigned int)')
f(11,7,1,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(11,8,2,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,8,1,4,'PhaseChaitin::add_input_to_liveout(Block*, Node*, IndexSet*, double, PhaseChaitin::Pressure&, PhaseChaitin::Pressure&)')
f(12,9,1,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(11,10,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,10,1,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(11,11,1,4,'PhaseIFG::SquareUp()')
f(12,11,1,4,'IndexSetIterator::advance_and_next()')
f(11,12,1,4,'PhaseIFG::init(unsigned int)')
f(12,12,1,4,'IndexSet::initialize(unsigned int)')
f(10,13,2,4,'PhaseOutput::fill_buffer(CodeBuffer*, unsigned int*)')
f(11,14,1,4,'PhaseOutput::Process_OopMap_Node(MachNode*, int)')
f(12,14,1,4,'DebugInformationRecorder::describe_scope(int, methodHandle const&, ciMethod*, int, bool, bool, bool, bool, bool, bool, bool, DebugToken*, DebugToken*, DebugToken*)')
f(13,14,1,4,'ValueRecorder<Metadata*>::maybe_find_index(Metadata*)')
f(9,15,9,4,'Compile::Optimize()')
f(10,15,1,4,'Compile::final_graph_reshaping() [clone .part.0]')
f(11,15,1,4,'Compile::final_graph_reshaping_walk(Node_Stack&, Node*, Final_Reshape_Counts&)')
f(10,16,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,16,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(12,16,1,4,'PhaseIdealLoop::do_split_if(Node*)')
f(13,16,1,4,'PhaseIdealLoop::split_thru_region(Node*, Node*)')
f(14,16,1,4,'Node::clone() const')
f(10,17,5,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,17,4,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,17,1,4,'PhaseIdealLoop::Dominators()')
f(12,18,1,4,'PhaseIdealLoop::build_loop_early(VectorSet&, Node_List&, Node_Stack&)')
f(12,19,1,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(13,19,1,4,'PhaseIdealLoop::build_loop_late_post_work(Node*, bool)')
f(14,19,1,4,'PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)')
f(15,19,1,4,'PhaseIdealLoop::dom_lca_for_get_late_ctrl_internal(Node*, Node*, Node*)')
f(12,20,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(13,20,1,4,'PhaseIdealLoop::split_if_with_blocks_pre(Node*)')
f(14,20,1,4,'PhaseIdealLoop::get_ctrl(Node*) [clone .isra.0]')
f(11,21,1,4,'PhaseIterGVN::optimize()')
f(12,21,1,4,'PhaseIterGVN::transform_old(Node*)')
f(13,21,1,4,'PhiNode::Ideal(PhaseGVN*, bool)')
f(10,22,1,4,'PhaseIterGVN::optimize()')
f(11,22,1,4,'PhaseIterGVN::transform_old(Node*)')
f(12,22,1,4,'PhiNode::Ideal(PhaseGVN*, bool)')
f(13,22,1,4,'PhiNode::is_data_loop(RegionNode*, Node*, PhaseGVN const*)')
f(14,22,1,4,'Node::is_dead_loop_safe() const')
f(10,23,1,4,'PhaseMacroExpand::expand_macro_nodes()')
f(11,23,1,4,'PhaseIterGVN::optimize()')
f(12,23,1,4,'PhaseIterGVN::transform_old(Node*)')
f(13,23,1,4,'LoadNode::Ideal(PhaseGVN*, bool)')
f(14,23,1,4,'MemNode::Ideal_common(PhaseGVN*, bool)')
f(9,24,4,4,'ParseGenerator::generate(JVMState*)')
f(10,24,4,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,24,4,4,'Parse::do_all_blocks()')
f(12,24,4,4,'Parse::do_one_block()')
f(13,24,4,4,'Parse::do_call()')
f(14,24,4,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,24,3,4,'ParseGenerator::generate(JVMState*)')
f(16,24,3,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,24,3,4,'Parse::do_all_blocks()')
f(18,24,3,4,'Parse::do_one_block()')
f(19,24,3,4,'Parse::do_call()')
f(20,24,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(21,24,1,4,'ciMethod::call_profile_at_bci(int)')
f(22,24,1,4,'ciMethodData::data_from(DataLayout*)')
f(20,25,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,25,2,4,'ParseGenerator::generate(JVMState*)')
f(22,25,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,25,2,4,'Parse::do_all_blocks()')
f(24,25,2,4,'Parse::do_one_block()')
f(25,25,2,4,'Parse::do_call()')
f(26,25,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,25,1,4,'ParseGenerator::generate(JVMState*)')
f(28,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,25,1,4,'Parse::do_all_blocks()')
f(30,25,1,4,'Parse::do_one_block()')
f(31,25,1,4,'Parse::do_call()')
f(32,25,1,4,'ParseGenerator::generate(JVMState*)')
f(33,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(34,25,1,4,'Parse::do_all_blocks()')
f(35,25,1,4,'Parse::do_one_block()')
f(36,25,1,4,'Parse::do_one_bytecode()')
f(37,25,1,4,'MulNode::Ideal(PhaseGVN*, bool)')
f(27,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(28,26,1,4,'ParseGenerator::generate(JVMState*)')
f(29,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(30,26,1,4,'Parse::do_all_blocks()')
f(31,26,1,4,'Parse::do_one_block()')
f(32,26,1,4,'Parse::do_call()')
f(33,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(34,26,1,4,'ParseGenerator::generate(JVMState*)')
f(35,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(36,26,1,4,'Parse::do_all_blocks()')
f(37,26,1,4,'Parse::do_one_block()')
f(38,26,1,4,'Parse::do_call()')
f(39,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(40,26,1,4,'ParseGenerator::generate(JVMState*)')
f(41,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(42,26,1,4,'Parse::do_all_blocks()')
f(43,26,1,4,'Parse::do_one_block()')
f(44,26,1,4,'Parse::do_call()')
f(45,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(46,26,1,4,'ParseGenerator::generate(JVMState*)')
f(47,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(48,26,1,4,'Parse::do_all_blocks()')
f(49,26,1,4,'Parse::do_one_block()')
f(50,26,1,4,'Parse::do_field_access(bool, bool)')
f(51,26,1,4,'Parse::do_get_xxx(Node*, ciField*, bool)')
f(52,26,1,4,'GraphKit::access_load_at(Node*, Node*, TypePtr const*, Type const*, BasicType, unsigned long)')
f(53,26,1,4,'BarrierSetC2::load_at(C2Access&, Type const*) const')
f(54,26,1,4,'GraphKit::insert_mem_bar(int, Node*)')
f(55,26,1,4,'MemBarNode::make(Compile*, int, int, Node*)')
f(56,26,1,4,'MemBarNode::MemBarNode(Compile*, int, Node*)')
f(57,26,1,4,'Node::out_grow(unsigned int)')
f(58,26,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(15,27,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(16,27,1,4,'ParseGenerator::generate(JVMState*)')
f(17,27,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(18,27,1,4,'Parse::do_all_blocks()')
f(19,27,1,4,'Parse::do_one_block()')
f(20,27,1,4,'Parse::do_call()')
f(21,27,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,27,1,4,'ParseGenerator::generate(JVMState*)')
f(23,27,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,27,1,4,'Parse::do_all_blocks()')
f(25,27,1,4,'Parse::do_one_block()')
f(26,27,1,4,'Parse::do_call()')
f(27,27,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(28,27,1,4,'ParseGenerator::generate(JVMState*)')
f(29,27,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(30,27,1,4,'TypeFunc::make(ciMethod*)')
f(31,27,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(1,28,6,3,'[not_walkable_Java]')
f(2,28,4,1,'I2C/C2I adapters')
f(3,28,1,4,'Method::from_compiled_entry_no_trampoline() const')
f(3,29,3,4,'SharedRuntime::fixup_callers_callsite(Method*, unsigned char*)')
f(4,30,2,4,'CodeHeap::find_blob_unsafe(void*) const')
f(2,32,2,3,'Interpreter')
f(1,34,1,3,'[unknown]')
f(2,34,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(1,35,10,3,'[unknown_Java]')
f(2,35,4,1,'I2C/C2I adapters')
f(2,39,1,3,'Interpreter')
f(2,40,2,3,'[unknown]')
f(3,40,2,4,'os::javaTimeNanos()')
f(2,42,1,6,'cats/effect/IO$Start.tag',0,1,0)
f(2,43,1,1,'cats/effect/IOFiber.succeeded')
f(2,44,1,3,'clock_gettime')
f(3,44,1,3,'[vdso]')
f(1,45,432,1,'cats/effect/unsafe/WorkerThread.run',0,1,0)
f(2,56,277,1,'cats/effect/IOFiber.run',32,0,0)
f(3,61,2,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,61,2,1,'cats/effect/IOFiber.succeeded')
f(5,61,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,61,2,1,'cats/effect/IOFiber.done')
f(7,61,2,1,'cats/effect/CallbackStack.apply')
f(8,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,61,2,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(11,61,2,1,'cats/effect/IO.$anonfun$6')
f(12,61,2,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,61,2,1,'cats/effect/kernel/Outcome.fold$')
f(14,61,2,1,'cats/effect/kernel/Outcome.fold')
f(15,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(16,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(17,61,2,1,'cats/effect/IO$$Lambda$110.0x0000000800d7ac60.applyVoid')
f(18,61,2,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(20,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(21,61,2,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(22,61,2,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(24,61,2,1,'scala/runtime/function/JProcedure1.apply')
f(25,61,2,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(26,61,2,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,61,2,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,61,2,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(29,61,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(30,61,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(31,61,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(32,61,2,1,'jdk/internal/misc/Unsafe.unpark')
f(33,61,2,3,'pthread_cond_signal')
f(34,61,2,5,'entry_SYSCALL_64_after_hwframe')
f(35,61,2,5,'do_syscall_64')
f(36,61,2,5,'__x64_sys_futex')
f(37,61,2,5,'do_futex')
f(38,61,2,5,'futex_wake')
f(39,61,2,5,'wake_up_q')
f(40,61,2,5,'_raw_spin_unlock_irqrestore')
f(3,63,270,1,'cats/effect/IOFiber.execR',30,0,0)
f(4,73,7,2,'cats/effect/ArrayStack.init',3,0,0)
f(5,75,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(5,76,1,3,'[vdso]')
f(5,77,2,3,'clock_gettime')
f(6,77,2,3,'[vdso]')
f(5,79,1,4,'os::javaTimeNanos()')
f(4,80,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(4,81,189,1,'cats/effect/IOFiber.runLoop')
f(5,92,1,2,'cats/effect/ContState.<init>',1,0,0)
f(5,93,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(5,96,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(5,98,1,1,'cats/effect/IODeferred$$Lambda$107.0x0000000800d7a2d8.apply')
f(6,98,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,98,1,1,'cats/effect/CallbackStack.apply')
f(8,98,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,98,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,98,1,1,'cats/effect/IOFiber$$Lambda$100.0x0000000800d60c00.applyVoid')
f(11,98,1,1,'cats/effect/IOFiber.$anonfun$2')
f(12,98,1,1,'cats/effect/IOFiber.stateLoop$1')
f(13,98,1,1,'cats/effect/IOFiber.loop$1')
f(14,98,1,1,'cats/effect/IOFiber.scheduleFiber')
f(15,98,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,98,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,98,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,98,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,98,1,1,'jdk/internal/misc/Unsafe.unpark')
f(20,98,1,3,'pthread_cond_signal')
f(21,98,1,5,'entry_SYSCALL_64_after_hwframe')
f(22,98,1,5,'do_syscall_64')
f(23,98,1,5,'__x64_sys_futex')
f(24,98,1,5,'do_futex')
f(25,98,1,5,'futex_wake')
f(26,98,1,5,'wake_up_q')
f(27,98,1,5,'_raw_spin_unlock_irqrestore')
f(5,99,53,1,'cats/effect/IOFiber.<init>')
f(6,134,3,2,'cats/effect/CallbackStack$.apply',3,0,0)
f(6,137,7,2,'cats/effect/IO$.async',7,0,0)
f(7,138,6,2,'cats/effect/IO$IOCont$.apply',6,0,0)
f(6,144,3,2,'cats/effect/IO$.uncancelable',3,0,0)
f(7,144,3,2,'cats/effect/IO$Uncancelable$.apply',3,0,0)
f(6,147,5,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(7,147,5,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(8,147,5,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',4,0,0)
f(9,151,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(10,151,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(11,151,1,4,'MemAllocator::allocate() const')
f(12,151,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(13,151,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(5,152,76,2,'cats/effect/IOFiber.scheduleFiber',29,0,0)
f(6,152,76,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',29,0,0)
f(7,152,76,2,'cats/effect/unsafe/WorkerThread.schedule',29,0,0)
f(8,155,9,2,'cats/effect/unsafe/LocalQueue.enqueue',9,0,0)
f(8,164,64,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',17,0,0)
f(9,177,1,4,'SharedRuntime::on_slowpath_allocation_exit(JavaThread*)')
f(9,178,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(10,178,1,2,'java/util/Random.nextInt',1,0,0)
f(9,179,3,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',3,0,0)
f(10,179,3,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',3,0,0)
f(11,181,1,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.getAndSet',1,0,0)
f(9,182,46,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,182,46,1,'jdk/internal/misc/Unsafe.unpark')
f(11,183,2,3,'Unsafe_Unpark')
f(11,185,43,3,'pthread_cond_signal')
f(12,186,42,5,'entry_SYSCALL_64_after_hwframe')
f(13,186,42,5,'do_syscall_64')
f(14,186,42,5,'__x64_sys_futex')
f(15,186,42,5,'do_futex')
f(16,186,42,5,'futex_wake')
f(17,187,2,5,'mark_wake_futex')
f(18,188,1,5,'__unqueue_futex')
f(17,189,39,5,'wake_up_q')
f(18,190,38,5,'_raw_spin_unlock_irqrestore')
f(5,228,27,1,'cats/effect/IOFiber.succeeded')
f(6,232,2,2,'cats/effect/ByteStack$.pop',2,0,0)
f(7,233,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,234,21,2,'cats/effect/IOFiber.runTerminusSuccessK',21,0,0)
f(7,234,5,2,'cats/effect/IO$.pure',5,0,0)
f(8,234,5,2,'cats/effect/IO$Pure$.apply',5,0,0)
f(9,238,1,2,'cats/effect/IO$Pure.<init>',1,0,0)
f(7,239,16,2,'cats/effect/IOFiber.done',16,0,0)
f(8,248,7,2,'cats/effect/IO$.pure',7,0,0)
f(9,248,7,2,'cats/effect/IO$Pure$.apply',7,0,0)
f(10,249,6,2,'cats/effect/IO$Pure.<init>',6,0,0)
f(11,249,6,2,'cats/effect/IO.<init>',6,0,0)
f(12,249,6,2,'cats/effect/IOPlatform.<init>',6,0,0)
f(13,249,6,2,'java/lang/Object.<init>',6,0,0)
f(5,255,8,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',8,0,0)
f(6,255,8,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',8,0,0)
f(7,257,3,2,'java/lang/invoke/VarForm.getMemberName',3,0,0)
f(7,260,3,2,'java/lang/invoke/VarHandle.checkExactAccessMode',3,0,0)
f(5,263,7,3,'vtable stub')
f(4,270,6,1,'cats/effect/unsafe/IORuntime.cancelationCheckThreshold',1,0,0)
f(4,276,54,3,'clock_gettime')
f(5,276,54,3,'[vdso]')
f(4,330,3,4,'os::javaTimeNanos()')
f(2,333,7,2,'cats/effect/unsafe/LocalQueue.dequeue',3,0,0)
f(3,337,1,1,'cats/effect/unsafe/LocalQueue.msb')
f(3,338,2,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get')
f(4,338,2,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck')
f(2,340,6,2,'cats/effect/unsafe/ScalQueue.poll',3,0,0)
f(3,342,4,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',2,0,0)
f(2,346,26,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,346,26,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,346,26,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,346,26,1,'jdk/internal/misc/Unsafe.unpark')
f(6,347,25,3,'pthread_cond_signal')
f(7,347,25,5,'entry_SYSCALL_64_after_hwframe')
f(8,347,25,5,'do_syscall_64')
f(9,347,25,5,'__x64_sys_futex')
f(10,347,25,5,'do_futex')
f(11,348,24,5,'futex_wake')
f(12,350,1,5,'get_futex_key')
f(12,351,21,5,'wake_up_q')
f(13,351,21,5,'_raw_spin_unlock_irqrestore')
f(2,372,24,0,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread',0,0,15)
f(3,384,3,4,'InterpreterRuntime::frequency_counter_overflow(JavaThread*, unsigned char*)')
f(4,384,3,4,'InterpreterRuntime::frequency_counter_overflow_inner(JavaThread*, unsigned char*)')
f(5,384,3,4,'CompilationPolicy::event(methodHandle const&, methodHandle const&, int, int, CompLevel, CompiledMethod*, JavaThread*)')
f(6,384,3,4,'CompilationPolicy::method_back_branch_event(methodHandle const&, methodHandle const&, int, CompLevel, CompiledMethod*, JavaThread*)')
f(7,384,1,4,'CompLevel CompilationPolicy::common<LoopPredicate>(methodHandle const&, CompLevel, bool)')
f(8,384,1,4,'CompilerConfig::is_interpreter_only()')
f(7,385,1,4,'CompilationPolicy::call_event(methodHandle const&, CompLevel, Thread*)')
f(8,385,1,4,'CompLevel CompilationPolicy::common<CallPredicate>(methodHandle const&, CompLevel, bool)')
f(9,385,1,4,'Method::is_constant_getter() const')
f(7,386,1,4,'CompilationPolicy::compile(methodHandle const&, int, CompLevel, JavaThread*)')
f(8,386,1,4,'CompileBroker::compile_method(methodHandle const&, int, int, methodHandle const&, int, CompileTask::CompileReason, JavaThread*)')
f(9,386,1,4,'DirectiveSet::compilecommand_compatibility_init(methodHandle const&) [clone .part.0]')
f(3,387,5,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,389,2,2,'cats/effect/unsafe/LocalQueue.msb',2,0,0)
f(4,391,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',1,0,0)
f(3,392,4,2,'cats/effect/unsafe/ScalQueue.poll',2,0,0)
f(4,392,4,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',4,0,0)
f(2,396,72,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,396,72,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,396,72,1,'java/util/concurrent/locks/LockSupport.park')
f(5,396,72,1,'jdk/internal/misc/Unsafe.park')
f(6,398,2,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(6,400,4,3,'Unsafe_Park')
f(7,400,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,400,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,400,1,5,'__x64_sys_futex')
f(7,401,2,4,'Parker::park(bool, long)')
f(8,402,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<544868ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 544868ul>::oop_access_barrier(void*)')
f(7,403,1,3,'__tls_get_addr')
f(6,404,64,3,'[unknown]')
f(7,404,62,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,405,61,5,'entry_SYSCALL_64_after_hwframe')
f(9,405,61,5,'do_syscall_64')
f(10,405,56,5,'__x64_sys_futex')
f(11,405,55,5,'do_futex')
f(12,405,55,5,'futex_wait')
f(13,407,1,5,'__get_user_nocheck_4')
f(13,408,51,5,'futex_wait_queue_me')
f(14,408,51,5,'schedule')
f(15,409,50,5,'__schedule')
f(16,409,50,5,'finish_task_switch.isra.0')
f(13,459,1,5,'futex_wait_setup')
f(11,460,1,5,'futex_wait')
f(10,461,4,5,'syscall_exit_to_user_mode')
f(11,461,4,5,'exit_to_user_mode_prepare')
f(12,461,4,5,'exit_to_user_mode_loop')
f(13,462,3,5,'__rseq_handle_notify_resume')
f(14,462,2,5,'__put_user_nocheck_8')
f(14,464,1,5,'rseq_ip_fixup')
f(15,464,1,5,'__get_user_8')
f(10,465,1,5,'syscall_exit_to_user_mode_prepare')
f(7,466,2,3,'pthread_cond_wait')
f(2,468,1,1,'cats/effect/unsafe/WorkerThread.parked')
f(2,469,1,3,'clock_gettime')
f(3,469,1,3,'[vdso]')
f(2,470,7,1,'java/util/concurrent/atomic/AtomicBoolean.lazySet',2,0,0)
f(3,470,7,1,'java/lang/invoke/VarHandleGuards.guard_LI_V',2,0,0)
f(4,474,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(4,475,2,1,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.setRelease')
f(5,476,1,1,'java/util/Objects.requireNonNull')
f(1,477,1,1,'java/lang/Thread.run')
f(2,477,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,477,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,477,1,1,'java/util/concurrent/FutureTask.run')
f(5,477,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,477,1,1,'java/util/concurrent/FutureTask.run')
f(7,477,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,477,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,477,1,1,'java/lang/reflect/Method.invoke')
f(10,477,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,477,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,477,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,477,1,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_Throughput')
f(14,477,1,1,'kyo/bench/jmh_generated/ChainedForkBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,477,1,1,'kyo/bench/Bench.forkCats')
f(16,477,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,477,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,477,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,477,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,477,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,477,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,477,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,477,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,477,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,477,1,3,'pthread_cond_signal')
f(26,477,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,477,1,5,'do_syscall_64')
f(28,477,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,17488,3,'all')
f(1,0,16804,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,16804,1,'cats/effect/IOFiber.run')
f(3,0,16804,1,'cats/effect/IOFiber.execR')
f(4,0,4896,1,'cats/effect/ArrayStack.init')
f(5,0,4896,2,'java.lang.Object[]')
f(4,4896,1085,1,'cats/effect/ByteStack$.create')
f(5,4896,1085,2,'int[]')
f(4,5981,10823,1,'cats/effect/IOFiber.runLoop')
f(5,5981,2147,2,'cats.effect.IOFiber')
f(5,8128,1,1,'cats/effect/IO$$$Lambda$40.0x0000000800d136e8.apply')
f(6,8128,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,8128,1,1,'cats/effect/IODeferred.<init>')
f(8,8128,1,1,'cats/effect/IO$.defer')
f(9,8128,1,1,'cats/effect/IO.flatten')
f(10,8128,1,1,'cats/effect/IO.flatMap')
f(11,8128,1,1,'cats/effect/IO$FlatMap$.apply')
f(12,8128,1,2,'cats.effect.IO$FlatMap')
f(5,8129,1,1,'cats/effect/IO$$anon$3$$Lambda$100.0x0000000800d61730.apply')
f(6,8129,1,1,'cats/effect/IO$$anon$3.apply$$anonfun$1')
f(7,8129,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,8129,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,8129,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,8129,1,2,'cats.effect.IO$$anon$3$$Lambda$101+0x0000000800d61ff0')
f(5,8130,1,1,'cats/effect/IO$$anon$3$$Lambda$103.0x0000000800d78f20.apply')
f(6,8130,1,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,8130,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,8130,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,8130,1,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,8130,1,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,8131,2,1,'cats/effect/IODeferred$$Lambda$102.0x0000000800d78a00.apply')
f(6,8131,2,1,'cats/effect/IODeferred.$anonfun$1$$anonfun$1')
f(7,8131,1,1,'cats/effect/CallbackStack.push')
f(8,8131,1,2,'cats.effect.CallbackStack')
f(7,8132,1,1,'scala/Some$.apply')
f(8,8132,1,2,'scala.Some')
f(5,8133,5111,1,'cats/effect/IOFiber.<init>')
f(6,8133,1455,1,'cats/effect/ArrayStack$.apply')
f(7,8133,1455,2,'cats.effect.ArrayStack')
f(6,9588,819,1,'cats/effect/CallbackStack$.apply')
f(7,9588,819,2,'cats.effect.CallbackStack')
f(6,10407,1053,1,'cats/effect/IO$.async')
f(7,10407,384,2,'cats.effect.IO$$anon$4')
f(7,10791,669,1,'cats/effect/IO$IOCont$.apply')
f(8,10791,669,2,'cats.effect.IO$IOCont')
f(6,11460,1003,1,'cats/effect/IO$.uncancelable')
f(7,11460,1003,1,'cats/effect/IO$Uncancelable$.apply')
f(8,11460,1003,2,'cats.effect.IO$Uncancelable')
f(6,12463,781,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,12463,781,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,12463,781,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,12463,396,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5ba90')
f(9,12859,385,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5e220')
f(5,13244,1894,1,'cats/effect/IOFiber.next$2')
f(6,13244,1894,1,'kyo/bench/ChainedForkBench$$Lambda$96.0x0000000800d5d2c0.apply')
f(7,13244,1894,1,'kyo/bench/ChainedForkBench.iterate$1$$anonfun$1')
f(8,13244,497,1,'cats/effect/IO.start')
f(9,13244,497,1,'cats/effect/IO$Start$.apply')
f(10,13244,497,2,'cats.effect.IO$Start')
f(8,13741,1397,1,'kyo/bench/ChainedForkBench.iterate$1')
f(9,13741,701,1,'cats/effect/IO.flatMap')
f(10,13741,701,1,'cats/effect/IO$FlatMap$.apply')
f(11,13741,701,2,'cats.effect.IO$FlatMap')
f(9,14442,696,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,14442,696,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c800.newInvokeSpecial')
f(11,14442,696,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,14442,696,2,'kyo.bench.ChainedForkBench$$Lambda$96+0x0000000800d5d2c0')
f(5,15138,1665,1,'cats/effect/IOFiber.succeeded')
f(6,15138,1665,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,15138,819,1,'cats/effect/IO$.pure')
f(8,15138,819,1,'cats/effect/IO$Pure$.apply')
f(9,15138,819,2,'cats.effect.IO$Pure')
f(7,15957,439,1,'cats/effect/IOFiber.done')
f(8,15957,439,1,'cats/effect/IO$.pure')
f(9,15957,439,1,'cats/effect/IO$Pure$.apply')
f(10,15957,439,2,'cats.effect.IO$Pure')
f(7,16396,407,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,16396,407,2,'cats.effect.kernel.Outcome$Succeeded')
f(5,16803,1,1,'kyo/bench/ChainedForkBench$$Lambda$42.0x0000000800d16220.apply')
f(6,16803,1,1,'kyo/bench/ChainedForkBench.catsBench$$anonfun$1')
f(7,16803,1,1,'cats/effect/IO.start')
f(8,16803,1,1,'cats/effect/IO$Start$.apply')
f(9,16803,1,2,'cats.effect.IO$Start')
f(1,16804,681,1,'java/lang/Thread.run')
f(2,16804,681,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,16804,681,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,16804,681,1,'java/util/concurrent/FutureTask.run')
f(5,16804,681,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,16804,681,1,'java/util/concurrent/FutureTask.run')
f(7,16804,681,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,16804,681,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,16804,681,1,'java/lang/reflect/Method.invoke')
f(10,16804,681,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,16804,681,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,16804,681,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,16804,681,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_Throughput')
f(14,16804,679,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,16804,679,1,'kyo/bench/Bench.syncCats')
f(16,16804,571,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,16804,544,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,16804,320,1,'cats/effect/IO.unsafeRunAsync')
f(19,16804,257,1,'cats/effect/IO.unsafeRunFiber')
f(20,16804,27,2,'cats.effect.IOFiber')
f(20,16831,13,5,'cats.effect.IOFiber')
f(20,16844,192,1,'cats/effect/IOFiber.<init>')
f(21,16844,73,1,'cats/effect/ArrayStack$.apply')
f(22,16844,73,2,'cats.effect.ArrayStack')
f(21,16917,17,1,'cats/effect/CallbackStack$.apply')
f(22,16917,17,2,'cats.effect.CallbackStack')
f(21,16934,48,1,'cats/effect/IO$.async')
f(22,16934,30,2,'cats.effect.IO$$anon$4')
f(22,16964,18,1,'cats/effect/IO$IOCont$.apply')
f(23,16964,18,2,'cats.effect.IO$IOCont')
f(21,16982,16,1,'cats/effect/IO$.uncancelable')
f(22,16982,16,1,'cats/effect/IO$Uncancelable$.apply')
f(23,16982,16,2,'cats.effect.IO$Uncancelable')
f(21,16998,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,16998,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,16998,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,16998,25,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5ba90')
f(24,17023,13,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5e220')
f(20,17036,8,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,17036,8,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,17036,8,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,17036,8,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,17036,8,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,17044,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,17044,17,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c000.newInvokeSpecial')
f(22,17044,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,17044,17,2,'cats.effect.IO$$Lambda$90+0x0000000800d5ac58')
f(19,17061,63,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,17061,63,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,17061,63,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,17061,14,2,'cats.effect.IO$$Lambda$87+0x0000000800d595a8')
f(22,17075,16,2,'cats.effect.IO$$Lambda$88+0x0000000800d59868')
f(22,17091,12,2,'cats.effect.IO$$Lambda$89+0x0000000800d59c70')
f(22,17103,21,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,17103,1,2,'cats.effect.IO$$Lambda$87+0x0000000800d595a8')
f(23,17104,3,2,'cats.effect.IO$$Lambda$88+0x0000000800d59868')
f(23,17107,17,2,'cats.effect.IO$$Lambda$89+0x0000000800d59c70')
f(18,17124,14,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17138,43,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17138,43,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17138,43,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17138,15,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d591a0')
f(21,17153,28,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,17153,14,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d591a0')
f(22,17167,14,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5ec00')
f(18,17181,103,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17181,103,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17181,32,2,'java.lang.Object[]')
f(20,17213,12,2,'java.util.concurrent.locks.ReentrantLock')
f(20,17225,30,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,17225,30,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,17255,29,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,17255,29,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,17255,29,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17284,9,1,'scala/concurrent/package$.blocking')
f(19,17284,9,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17284,9,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5ec00.apply')
f(21,17284,9,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17284,9,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17284,9,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17284,9,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17293,55,1,'scala/util/Either.fold')
f(19,17293,54,1,'cats/effect/IOPlatform$$Lambda$111.0x0000000800d7b230.apply')
f(20,17293,54,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17293,54,1,'scala/Some$.apply')
f(22,17293,54,2,'scala.Some')
f(19,17347,1,2,'java.lang.String')
f(17,17348,1,2,'scala.concurrent.duration.package$DurationLong')
f(17,17349,26,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17349,26,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17349,26,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17349,26,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17349,26,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17349,26,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17349,26,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17349,26,2,'scala.concurrent.duration.FiniteDuration')
f(16,17375,108,1,'kyo/bench/ChainedForkBench.catsBench')
f(17,17375,55,1,'cats/effect/IO$.deferred')
f(18,17375,25,1,'cats/effect/IO$.apply')
f(19,17375,25,1,'cats/effect/IO$.delay')
f(20,17375,25,1,'cats/effect/IO$Delay$.apply')
f(21,17375,25,2,'cats.effect.IO$Delay')
f(18,17400,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17400,30,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17400,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17400,27,2,'cats.effect.IO$$$Lambda$40+0x0000000800d136e8')
f(21,17427,3,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,17427,3,2,'cats.effect.IO$$$Lambda$40+0x0000000800d136e8')
f(17,17430,32,1,'cats/effect/IO.flatMap')
f(18,17430,32,1,'cats/effect/IO$FlatMap$.apply')
f(19,17430,32,2,'cats.effect.IO$FlatMap')
f(17,17462,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,17462,21,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,17462,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,17462,21,2,'kyo.bench.ChainedForkBench$$Lambda$42+0x0000000800d16220')
f(14,17483,1,1,'org/openjdk/jmh/results/BenchmarkTaskResult.<init>')
f(15,17483,1,2,'java.util.ArrayList')
f(14,17484,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,17484,1,2,'java.lang.StringBuilder')
f(1,17485,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17485,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17485,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17485,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17485,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17485,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17485,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17485,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17485,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17485,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17485,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17485,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17485,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: 1008px}
</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(63);
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,462,3,'all')
f(1,0,30,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,30,3,'thread_native_entry(Thread*)')
f(3,0,30,4,'Thread::call_run()')
f(4,0,30,4,'JavaThread::thread_main_inner()')
f(5,0,30,4,'CompileBroker::compiler_thread_loop()')
f(6,0,30,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,29,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,29,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,17,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::Label_Root(Node const*, State*, Node*, Node*&)')
f(14,0,1,4,'State::DFA(int, Node const*)')
f(15,0,1,4,'State::_sub_Op_StoreL(Node const*)')
f(10,1,4,4,'PhaseCFG::do_global_code_motion()')
f(11,1,4,4,'PhaseCFG::global_code_motion()')
f(12,1,2,4,'PhaseCFG::schedule_late(VectorSet&, Node_Stack&)')
f(13,1,1,4,'PhaseCFG::insert_anti_dependences(Block*, Node*, bool)')
f(13,2,1,4,'PhaseCFG::schedule_node_into_block(Node*, Block*)')
f(14,2,1,4,'Node_Array::insert(unsigned int, Node*)')
f(12,3,2,4,'PhaseLive::compute(unsigned int)')
f(13,3,2,4,'PhaseLive::add_liveout(Block*, IndexSet*, VectorSet&)')
f(14,4,1,4,'IndexSet::initialize(unsigned int, Arena*)')
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,'lru_cache_add_inactive_or_unevictable')
f(23,4,1,5,'lru_cache_add')
f(24,4,1,5,'_raw_spin_unlock_irqrestore')
f(10,5,10,4,'PhaseChaitin::Register_Allocate()')
f(11,5,1,4,'PhaseAggressiveCoalesce::insert_copies(Matcher&)')
f(11,6,1,4,'PhaseChaitin::Simplify()')
f(12,6,1,4,'PhaseIFG::remove_node(unsigned int)')
f(13,6,1,4,'IndexSetIterator::advance_and_next()')
f(11,7,3,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,8,1,4,'PhaseChaitin::adjust_high_pressure_index(Block*, unsigned int&, PhaseChaitin::Pressure&)')
f(12,9,1,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(11,10,1,4,'PhaseChaitin::build_ifg_virtual()')
f(11,11,1,4,'PhaseChaitin::gather_lrg_masks(bool)')
f(12,11,1,4,'immIOper::constant() const')
f(11,12,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,12,1,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(11,13,1,4,'PhaseCoalesce::coalesce_driver()')
f(12,13,1,4,'PhaseConservativeCoalesce::coalesce(Block*)')
f(13,13,1,4,'PhaseConservativeCoalesce::copy_copy(Node*, Node*, Block*, unsigned int) [clone .part.0]')
f(14,13,1,4,'PhaseConservativeCoalesce::update_ifg(unsigned int, unsigned int, IndexSet*, IndexSet*)')
f(15,13,1,4,'IndexSetIterator::advance_and_next()')
f(11,14,1,4,'PhaseLive::compute(unsigned int)')
f(10,15,1,4,'PhaseOutput::Output()')
f(11,15,1,4,'PhaseOutput::shorten_branches(unsigned int*)')
f(10,16,1,4,'PhaseOutput::fill_buffer(CodeBuffer*, unsigned int*)')
f(11,16,1,4,'NonSafepointEmitter::emit_non_safepoint()')
f(12,16,1,4,'DebugInformationRecorder::describe_scope(int, methodHandle const&, ciMethod*, int, bool, bool, bool, bool, bool, bool, bool, DebugToken*, DebugToken*, DebugToken*)')
f(13,16,1,4,'ValueRecorder<Metadata*>::maybe_find_index(Metadata*)')
f(9,17,8,4,'Compile::Optimize()')
f(10,17,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,17,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(10,18,4,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,18,4,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,18,1,4,'IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)')
f(13,18,1,4,'IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)')
f(14,18,1,4,'CmpPNode::Opcode() const')
f(12,19,2,4,'PhaseIdealLoop::build_loop_early(VectorSet&, Node_List&, Node_Stack&)')
f(12,21,1,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(10,22,2,4,'PhaseIterGVN::optimize()')
f(11,22,2,4,'PhaseIterGVN::transform_old(Node*)')
f(12,22,1,4,'PhiNode::is_diamond_phi(bool) const')
f(12,23,1,4,'RegionNode::Ideal(PhaseGVN*, bool)')
f(13,23,1,4,'Type::has_memory() const')
f(10,24,1,4,'PhaseMacroExpand::expand_macro_nodes()')
f(11,24,1,4,'PhaseIterGVN::optimize()')
f(12,24,1,4,'PhaseIterGVN::transform_old(Node*)')
f(13,24,1,4,'PhaseIterGVN::subsume_node(Node*, Node*)')
f(14,24,1,4,'PhaseIterGVN::remove_globally_dead_node(Node*)')
f(9,25,4,4,'ParseGenerator::generate(JVMState*)')
f(10,25,4,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,25,4,4,'Parse::do_all_blocks()')
f(12,25,4,4,'Parse::do_one_block()')
f(13,25,4,4,'Parse::do_call()')
f(14,25,4,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,25,2,4,'ParseGenerator::generate(JVMState*)')
f(16,25,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,25,2,4,'Parse::do_all_blocks()')
f(18,25,2,4,'Parse::do_one_block()')
f(19,25,2,4,'Parse::do_call()')
f(20,25,1,4,'ParseGenerator::generate(JVMState*)')
f(21,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(22,25,1,4,'Parse::do_all_blocks()')
f(23,25,1,4,'Parse::do_one_block()')
f(24,25,1,4,'Parse::do_call()')
f(25,25,1,4,'ParseGenerator::generate(JVMState*)')
f(26,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(27,25,1,4,'Parse::do_all_blocks()')
f(28,25,1,4,'Parse::do_one_block()')
f(29,25,1,4,'Parse::do_call()')
f(30,25,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(31,25,1,4,'ParseGenerator::generate(JVMState*)')
f(32,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(33,25,1,4,'Parse::do_all_blocks()')
f(34,25,1,4,'Parse::do_one_block()')
f(35,25,1,4,'Parse::do_call()')
f(36,25,1,4,'ParseGenerator::generate(JVMState*)')
f(37,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(38,25,1,4,'Parse::do_all_blocks()')
f(39,25,1,4,'Parse::do_one_block()')
f(40,25,1,4,'Parse::do_call()')
f(41,25,1,4,'ParseGenerator::generate(JVMState*)')
f(42,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(43,25,1,4,'Parse::do_all_blocks()')
f(44,25,1,4,'Parse::do_one_block()')
f(45,25,1,4,'Parse::do_call()')
f(46,25,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(47,25,1,4,'ParseGenerator::generate(JVMState*)')
f(48,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(49,25,1,4,'Parse::do_all_blocks()')
f(50,25,1,4,'Parse::do_one_block()')
f(51,25,1,4,'Parse::do_call()')
f(52,25,1,4,'ParseGenerator::generate(JVMState*)')
f(53,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(54,25,1,4,'Parse::do_all_blocks()')
f(55,25,1,4,'Parse::do_one_block()')
f(56,25,1,4,'Parse::do_call()')
f(57,25,1,4,'ParseGenerator::generate(JVMState*)')
f(58,25,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(59,25,1,4,'Parse::do_all_blocks()')
f(60,25,1,4,'Parse::do_one_block()')
f(61,25,1,4,'Parse::do_if(BoolTest::mask, Node*)')
f(62,25,1,4,'BoolNode::negate(PhaseGVN*)')
f(20,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,26,1,4,'ParseGenerator::generate(JVMState*)')
f(22,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,26,1,4,'Parse::do_all_blocks()')
f(24,26,1,4,'Parse::do_one_block()')
f(25,26,1,4,'Parse::do_call()')
f(26,26,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,26,1,4,'ParseGenerator::generate(JVMState*)')
f(28,26,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,26,1,4,'Parse::do_all_blocks()')
f(30,26,1,4,'Parse::do_one_block()')
f(31,26,1,4,'Parse::do_call()')
f(32,26,1,4,'ciBytecodeStream::get_method(bool&, ciSignature**)')
f(33,26,1,4,'ciEnv::get_method_by_index_impl(constantPoolHandle const&, int, Bytecodes::Code, ciInstanceKlass*)')
f(34,26,1,4,'MethodHandles::signature_polymorphic_name_id(Klass*, Symbol*)')
f(35,26,1,4,'MethodHandles::is_method_handle_invoke_name(Klass*, Symbol*)')
f(36,26,1,4,'InstanceKlass::find_method(Symbol const*, Symbol const*) const')
f(37,26,1,4,'InstanceKlass::find_method_index(Array<Method*> const*, Symbol const*, Symbol const*, Klass::OverpassLookupMode, Klass::StaticLookupMode, Klass::PrivateLookupMode) [clone .constprop.0]')
f(15,27,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(16,27,2,4,'ParseGenerator::generate(JVMState*)')
f(17,27,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(18,27,2,4,'Parse::do_all_blocks()')
f(19,27,2,4,'Parse::do_one_block()')
f(20,27,2,4,'Parse::do_call()')
f(21,27,1,4,'GraphKit::kill_dead_locals()')
f(22,27,1,4,'ciMethod::liveness_at_bci(int)')
f(23,27,1,4,'MethodLiveness::get_liveness_at(int)')
f(24,27,1,4,'MethodLiveness::BasicBlock::get_liveness_at(ciMethod*, int)')
f(21,28,1,4,'ParseGenerator::generate(JVMState*)')
f(22,28,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,28,1,4,'Parse::do_all_blocks()')
f(24,28,1,4,'Parse::do_one_block()')
f(25,28,1,4,'Parse::do_call()')
f(26,28,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,28,1,4,'ParseGenerator::generate(JVMState*)')
f(28,28,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,28,1,4,'Parse::do_all_blocks()')
f(30,28,1,4,'Parse::do_one_block()')
f(31,28,1,4,'Parse::do_call()')
f(32,28,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(33,28,1,4,'ParseGenerator::generate(JVMState*)')
f(34,28,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(35,28,1,4,'Parse::do_all_blocks()')
f(36,28,1,4,'Parse::do_one_block()')
f(37,28,1,4,'Parse::return_current(Node*)')
f(38,28,1,4,'Node::add_req(Node*)')
f(39,28,1,4,'Node::grow(unsigned int)')
f(7,29,1,4,'Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,29,1,4,'Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)')
f(9,29,1,4,'Compilation::compile_method()')
f(10,29,1,4,'Compilation::compile_java_method()')
f(11,29,1,4,'Compilation::build_hir() [clone .part.0]')
f(12,29,1,4,'IR::eliminate_null_checks()')
f(13,29,1,4,'Optimizer::eliminate_null_checks()')
f(14,29,1,4,'NullCheckEliminator::iterate_one(BlockBegin*)')
f(1,30,1,3,'[unknown_Java]')
f(2,30,1,1,'jdk/internal/misc/Unsafe.park')
f(1,31,430,1,'cats/effect/unsafe/WorkerThread.run')
f(2,35,266,1,'cats/effect/IOFiber.run',29,0,0)
f(3,36,1,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,36,1,1,'cats/effect/IOFiber.succeeded')
f(5,36,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,36,1,1,'cats/effect/IOFiber.done')
f(7,36,1,1,'cats/effect/CallbackStack.apply')
f(8,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,36,1,1,'cats/effect/IO$$Lambda$90.0x0000000800d5ac58.applyVoid')
f(11,36,1,1,'cats/effect/IO.$anonfun$6')
f(12,36,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,36,1,1,'cats/effect/kernel/Outcome.fold$')
f(14,36,1,1,'cats/effect/kernel/Outcome.fold')
f(15,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(16,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,36,1,1,'cats/effect/IO$$Lambda$109.0x0000000800d7aa60.applyVoid')
f(18,36,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(20,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,36,1,1,'cats/effect/IO$$Lambda$89.0x0000000800d59c70.applyVoid')
f(22,36,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(24,36,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,36,1,1,'cats/effect/IOPlatform$$Lambda$86.0x0000000800d591a0.applyVoid')
f(26,36,1,2,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1',1,0,0)
f(27,36,1,2,'java/util/concurrent/ArrayBlockingQueue.offer',1,0,0)
f(28,36,1,2,'java/util/concurrent/locks/ReentrantLock.lock',1,0,0)
f(3,37,264,1,'cats/effect/IOFiber.execR',28,0,0)
f(4,42,1,3,'[vdso]')
f(4,43,6,2,'cats/effect/ArrayStack.init',4,0,0)
f(5,47,2,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(6,47,2,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(7,47,2,4,'MemAllocator::allocate() const')
f(8,47,2,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(9,47,1,4,'G1Allocator::unsafe_max_tlab_alloc()')
f(9,48,1,4,'ThreadLocalAllocBuffer::retire_before_allocation()')
f(10,48,1,4,'HandleMark::initialize(Thread*)')
f(4,49,1,1,'cats/effect/ByteStack$.push')
f(4,50,196,1,'cats/effect/IOFiber.runLoop')
f(5,68,1,1,'cats/arrow/FunctionK$.id')
f(5,69,2,2,'cats/effect/ContState.<init>',2,0,0)
f(6,69,2,2,'java/util/concurrent/atomic/AtomicReference.<init>',2,0,0)
f(7,69,2,2,'java/lang/Object.<init>',2,0,0)
f(5,71,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,72,4,6,'cats/effect/IO$Start.tag',0,4,0)
f(5,76,44,1,'cats/effect/IOFiber.<init>')
f(6,112,1,5,'asm_sysvec_hyperv_stimer0')
f(7,112,1,5,'sysvec_hyperv_stimer0')
f(8,112,1,5,'irq_exit_rcu')
f(9,112,1,5,'__irq_exit_rcu')
f(10,112,1,5,'__softirqentry_text_start')
f(6,113,3,2,'cats/effect/CallbackStack$.apply',3,0,0)
f(6,116,2,2,'cats/effect/IO$.async',2,0,0)
f(7,117,1,2,'cats/effect/IO$IOCont$.apply',1,0,0)
f(6,118,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(7,118,1,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(6,119,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,119,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(8,119,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,120,94,1,'cats/effect/IOFiber.scheduleFiber',31,0,0)
f(6,120,94,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',31,0,0)
f(7,120,94,1,'cats/effect/unsafe/WorkerThread.schedule',31,0,0)
f(8,120,18,2,'cats/effect/unsafe/LocalQueue.enqueue',18,0,0)
f(9,130,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',5,0,0)
f(10,131,4,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',4,0,0)
f(9,135,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',3,0,0)
f(10,135,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',3,0,0)
f(8,138,76,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',13,0,0)
f(9,146,4,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',4,0,0)
f(9,150,64,1,'java/util/concurrent/locks/LockSupport.unpark',1,0,0)
f(10,151,63,1,'jdk/internal/misc/Unsafe.unpark')
f(11,151,4,3,'Unsafe_Unpark')
f(12,151,2,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(12,153,1,4,'ThreadsListHandle::cv_internal_thread_to_JavaThread(_jobject*, JavaThread**, oopDesc**)')
f(12,154,1,3,'pthread_mutex_lock')
f(11,155,59,3,'pthread_cond_signal')
f(12,158,56,5,'entry_SYSCALL_64_after_hwframe')
f(13,158,56,5,'do_syscall_64')
f(14,158,56,5,'__x64_sys_futex')
f(15,160,54,5,'do_futex')
f(16,160,54,5,'futex_wake')
f(17,161,2,5,'get_futex_key')
f(17,163,1,5,'mark_wake_futex')
f(17,164,50,5,'wake_up_q')
f(18,164,49,5,'_raw_spin_unlock_irqrestore')
f(18,213,1,5,'try_to_wake_up')
f(5,214,27,1,'cats/effect/IOFiber.succeeded')
f(6,221,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,221,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,222,19,2,'cats/effect/IOFiber.runTerminusSuccessK',19,0,0)
f(7,226,8,2,'cats/effect/IO$.pure',8,0,0)
f(8,226,8,2,'cats/effect/IO$Pure$.apply',8,0,0)
f(7,234,4,2,'cats/effect/IOFiber.done',4,0,0)
f(8,235,1,2,'cats/effect/CallbackStack.apply',1,0,0)
f(8,236,2,2,'cats/effect/IO$.pure',2,0,0)
f(7,238,3,2,'cats/effect/kernel/Outcome$Succeeded$.apply',3,0,0)
f(5,241,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(6,241,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(7,241,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,242,2,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',2,0,0)
f(5,244,2,3,'vtable stub')
f(4,246,50,3,'clock_gettime')
f(5,247,49,3,'[vdso]')
f(4,296,5,4,'os::javaTimeNanos()')
f(2,301,4,1,'cats/effect/unsafe/LocalQueue.dequeue',1,0,0)
f(3,304,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get')
f(4,304,1,1,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck')
f(2,305,29,1,'cats/effect/unsafe/ScalQueue.poll',7,0,0)
f(3,308,24,1,'java/util/concurrent/ConcurrentLinkedQueue.poll',6,0,0)
f(4,318,1,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',1,0,0)
f(5,318,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,318,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(7,318,1,2,'java/lang/invoke/VarForm.getMemberNameOrNull',1,0,0)
f(4,319,13,1,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',2,0,0)
f(5,319,9,1,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,324,4,1,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(5,328,4,1,'java/lang/invoke/VarHandleGuards.guard_LL_V',1,0,0)
f(3,332,2,1,'java/util/concurrent/ThreadLocalRandom.nextInt')
f(4,333,1,1,'java/util/Random.nextInt')
f(5,333,1,1,'java/util/concurrent/ThreadLocalRandom.next')
f(6,333,1,1,'java/util/concurrent/ThreadLocalRandom.nextInt')
f(2,334,23,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,334,23,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,334,23,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,334,23,1,'jdk/internal/misc/Unsafe.unpark')
f(6,334,1,3,'Unsafe_Unpark')
f(7,334,1,3,'pthread_mutex_lock')
f(6,335,22,3,'pthread_cond_signal')
f(7,336,21,5,'entry_SYSCALL_64_after_hwframe')
f(8,336,21,5,'do_syscall_64')
f(9,336,21,5,'__x64_sys_futex')
f(10,336,21,5,'do_futex')
f(11,337,20,5,'futex_wake')
f(12,340,1,5,'mark_wake_futex')
f(12,341,16,5,'wake_up_q')
f(13,341,16,5,'_raw_spin_unlock_irqrestore')
f(2,357,15,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,358,4,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,359,2,2,'cats/effect/unsafe/LocalQueue.msb',2,0,0)
f(4,361,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',1,0,0)
f(3,362,9,2,'cats/effect/unsafe/ScalQueue.poll',9,0,0)
f(4,366,5,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',5,0,0)
f(3,371,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,371,1,2,'java/util/Random.nextInt',1,0,0)
f(2,372,1,1,'cats/effect/unsafe/WorkStealingThreadPool.stealTimers')
f(3,372,1,4,'ClassLoaderData::holder_phantom() const')
f(2,373,2,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToParkedWhenSearching')
f(2,375,79,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,375,79,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,375,79,1,'java/util/concurrent/locks/LockSupport.park')
f(5,375,79,1,'jdk/internal/misc/Unsafe.park')
f(6,376,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(6,377,8,3,'Unsafe_Park')
f(7,377,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,377,4,5,'entry_SYSCALL_64_after_hwframe')
f(9,377,1,5,'__x64_sys_futex')
f(9,378,3,5,'do_syscall_64')
f(10,378,2,5,'__x64_sys_futex')
f(11,378,2,5,'do_futex')
f(12,379,1,5,'futex_wake')
f(13,379,1,5,'get_futex_key')
f(10,380,1,5,'syscall_enter_from_user_mode')
f(7,381,3,4,'Parker::park(bool, long)')
f(8,383,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<544868ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 544868ul>::oop_access_barrier(void*)')
f(7,384,1,3,'pthread_mutex_unlock')
f(6,385,69,3,'[unknown]')
f(7,385,68,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,390,63,5,'entry_SYSCALL_64_after_hwframe')
f(9,390,1,5,'__x64_sys_futex')
f(9,391,62,5,'do_syscall_64')
f(10,392,55,5,'__x64_sys_futex')
f(11,392,55,5,'do_futex')
f(12,392,55,5,'futex_wait')
f(13,393,1,5,'__raw_callee_save___pv_queued_spin_unlock')
f(13,394,53,5,'futex_wait_queue_me')
f(14,394,53,5,'schedule')
f(15,394,53,5,'__schedule')
f(16,395,52,5,'finish_task_switch.isra.0')
f(10,447,6,5,'syscall_exit_to_user_mode')
f(11,447,6,5,'exit_to_user_mode_prepare')
f(12,447,6,5,'exit_to_user_mode_loop')
f(13,447,5,5,'__rseq_handle_notify_resume')
f(14,450,1,5,'__put_user_nocheck_8')
f(14,451,1,5,'rseq_ip_fixup')
f(15,451,1,5,'__get_user_8')
f(13,452,1,5,'mem_cgroup_handle_over_high')
f(7,453,1,3,'pthread_cond_wait')
f(2,454,1,3,'clock_gettime')
f(3,454,1,3,'[vdso]')
f(2,455,6,2,'java/util/concurrent/atomic/AtomicBoolean.lazySet',2,0,0)
f(3,455,6,2,'java/lang/invoke/VarHandleGuards.guard_LI_V',2,0,0)
f(4,460,1,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.setRelease',1,0,0)
f(1,461,1,1,'java/lang/Thread.run')
f(2,461,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,461,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,461,1,1,'java/util/concurrent/FutureTask.run')
f(5,461,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,461,1,1,'java/util/concurrent/FutureTask.run')
f(7,461,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,461,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,461,1,1,'java/lang/reflect/Method.invoke')
f(10,461,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,461,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,461,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,461,1,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_Throughput')
f(14,461,1,1,'kyo/bench/jmh_generated/ChainedForkBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,461,1,1,'kyo/bench/Bench.syncCats')
f(16,461,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,461,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,461,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,461,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,461,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,461,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,461,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,461,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,461,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,461,1,3,'pthread_cond_signal')
f(26,461,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,461,1,5,'do_syscall_64')
f(28,461,1,5,'__x64_sys_futex')
f(29,461,1,5,'do_futex')
f(30,461,1,5,'futex_wake')
f(31,461,1,5,'wake_up_q')
f(32,461,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,17227,3,'all')
f(1,0,15441,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,15441,1,'cats/effect/IOFiber.run')
f(3,0,7068,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,7068,1,'cats/effect/IOFiber.runLoop')
f(5,0,93,1,'cats/data/Chain$$$Lambda$112.0x0000000800dc57a0.apply')
f(6,0,93,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,0,93,1,'scala/collection/immutable/List.$colon$colon')
f(8,0,93,2,'scala.collection.immutable.$colon$colon')
f(5,93,3430,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf8c8.apply')
f(6,93,3430,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,93,2060,1,'cats/Eval$Defer.value')
f(8,93,2060,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,93,1738,1,'cats/Eval$.loop$1')
f(10,93,1738,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbda98.apply')
f(11,93,1738,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,93,1368,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,93,1368,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,93,366,1,'cats/Eval$.now')
f(15,93,366,1,'cats/Now$.apply')
f(16,93,366,2,'cats.Now')
f(14,459,557,1,'cats/effect/IO.flatMap')
f(15,459,557,1,'cats/effect/IO$FlatMap$.apply')
f(16,459,557,2,'cats.effect.IO$FlatMap')
f(14,1016,445,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,1016,445,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,1016,445,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,1016,445,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(12,1461,370,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,1461,370,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,1461,370,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,1461,370,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf318')
f(9,1831,322,1,'cats/Eval$Ident$.apply')
f(10,1831,322,2,'cats.Eval$Ident')
f(7,2153,172,1,'cats/Later.value')
f(8,2153,172,1,'cats/data/Chain$$$Lambda$98.0x0000000800dbd7d8.apply')
f(9,2153,172,1,'cats/data/Chain$.$anonfun$1')
f(10,2153,96,1,'cats/effect/IO$$anon$2.map')
f(11,2153,96,1,'cats/effect/IO$$anon$2.map')
f(12,2153,96,1,'cats/effect/IO.map')
f(13,2153,96,1,'cats/effect/IO$Map$.apply')
f(14,2153,96,2,'cats.effect.IO$Map')
f(10,2249,76,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,2249,76,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,2249,76,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,2249,76,2,'cats.data.Chain$$$Lambda$112+0x0000000800dc57a0')
f(7,2325,607,1,'cats/effect/IO.map')
f(8,2325,607,1,'cats/effect/IO$Map$.apply')
f(9,2325,607,2,'cats.effect.IO$Map')
f(7,2932,591,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2932,591,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,2932,591,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2932,591,2,'cats.effect.IO$$$Lambda$111+0x0000000800dc53d0')
f(5,3523,3545,1,'cats/effect/IOFiber.succeeded')
f(6,3523,59,1,'cats/data/Chain$$$Lambda$106.0x0000000800dc4000.apply')
f(7,3523,59,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,3523,59,1,'cats/data/Chain$.fromSeq')
f(9,3523,59,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,3523,59,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,3523,59,1,'cats/data/Chain$Wrap$.apply')
f(12,3523,59,2,'cats.data.Chain$Wrap')
f(6,3582,738,1,'cats/effect/IO$$$Lambda$111.0x0000000800dc53d0.apply')
f(7,3582,738,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,3582,629,1,'cats/data/Chain$$$Lambda$104.0x0000000800dbf318.apply')
f(9,3582,629,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,3582,629,1,'scala/collection/immutable/List.$colon$colon')
f(11,3582,629,2,'scala.collection.immutable.$colon$colon')
f(8,4211,109,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc4690.apply')
f(9,4211,109,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,4211,109,1,'cats/data/Chain.concat')
f(11,4211,109,1,'cats/data/Chain$.concat')
f(12,4211,109,1,'cats/data/Chain$Append$.apply')
f(13,4211,109,2,'cats.data.Chain$Append')
f(6,4320,857,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf8c8.apply')
f(7,4320,857,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,4320,671,1,'cats/Eval$FlatMap.value')
f(9,4320,671,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,4320,585,1,'cats/Eval$.loop$1')
f(11,4320,256,1,'cats/Eval$$Lambda$101.0x0000000800dbe128.apply')
f(12,4320,256,1,'cats/Eval.map$$anonfun$1')
f(13,4320,69,1,'cats/Now$.apply')
f(14,4320,69,2,'cats.Now')
f(13,4389,187,1,'cats/data/Chain$$$Lambda$100.0x0000000800dbdd58.apply')
f(14,4389,187,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,4389,113,1,'cats/effect/IO$$anon$2.map')
f(16,4389,113,1,'cats/effect/IO$$anon$2.map')
f(17,4389,113,1,'cats/effect/IO.map')
f(18,4389,113,1,'cats/effect/IO$Map$.apply')
f(19,4389,113,2,'cats.effect.IO$Map')
f(15,4502,74,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,4502,74,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,4502,74,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,4502,74,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(11,4576,329,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbda98.apply')
f(12,4576,329,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,4576,254,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,4576,254,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,4576,50,1,'cats/Eval$.now')
f(16,4576,50,1,'cats/Now$.apply')
f(17,4576,50,2,'cats.Now')
f(15,4626,99,1,'cats/effect/IO.flatMap')
f(16,4626,99,1,'cats/effect/IO$FlatMap$.apply')
f(17,4626,99,2,'cats.effect.IO$FlatMap')
f(15,4725,105,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,4725,105,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,4725,105,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,4725,105,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(13,4830,75,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,4830,75,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,4830,75,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,4830,75,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf318')
f(10,4905,86,1,'cats/Eval$Ident$.apply')
f(11,4905,86,2,'cats.Eval$Ident')
f(8,4991,98,1,'cats/effect/IO.map')
f(9,4991,98,1,'cats/effect/IO$Map$.apply')
f(10,4991,98,2,'cats.effect.IO$Map')
f(8,5089,88,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5089,88,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5089,88,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5089,88,2,'cats.effect.IO$$$Lambda$111+0x0000000800dc53d0')
f(6,5177,9,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,5177,2,1,'cats/effect/IO$.pure')
f(8,5177,2,1,'cats/effect/IO$Pure$.apply')
f(9,5177,2,2,'cats.effect.IO$Pure')
f(7,5179,6,1,'cats/effect/IOFiber.done')
f(8,5179,6,1,'cats/effect/CallbackStack.apply')
f(9,5179,6,1,'scala/runtime/function/JProcedure1.apply')
f(10,5179,6,1,'scala/runtime/function/JProcedure1.apply')
f(11,5179,6,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cfe8.applyVoid')
f(12,5179,6,1,'cats/effect/IO.$anonfun$6')
f(13,5179,4,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,5179,4,1,'cats/effect/kernel/Outcome.fold$')
f(15,5179,4,1,'cats/effect/kernel/Outcome.fold')
f(16,5179,4,1,'scala/runtime/function/JProcedure1.apply')
f(17,5179,4,1,'scala/runtime/function/JProcedure1.apply')
f(18,5179,4,1,'cats/effect/IO$$Lambda$116.0x0000000800dc8000.applyVoid')
f(19,5179,4,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,5179,4,1,'scala/runtime/function/JProcedure1.apply')
f(21,5179,4,1,'scala/runtime/function/JProcedure1.apply')
f(22,5179,4,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,5179,4,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,5179,3,1,'scala/runtime/function/JProcedure1.apply')
f(25,5179,3,1,'scala/runtime/function/JProcedure1.apply')
f(26,5179,3,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57348.applyVoid')
f(27,5179,3,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,5179,3,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,5179,3,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,5179,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,5179,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,5179,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,5179,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,5179,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(24,5182,1,1,'scala/util/Right$.apply')
f(25,5182,1,2,'scala.util.Right')
f(13,5183,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,5183,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,5183,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,5183,1,2,'cats.effect.IO$$Lambda$114+0x0000000800dc35b0')
f(16,5184,1,2,'cats.effect.IO$$Lambda$115+0x0000000800dc3870')
f(7,5185,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,5185,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,5186,1294,1,'cats/instances/ListInstances$$anon$1$$Lambda$109.0x0000000800dc4c40.apply')
f(7,5186,1294,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,5186,1294,1,'cats/data/Chain.toList')
f(9,5186,1294,1,'cats/data/Chain$ChainIterator.toList')
f(10,5186,1294,1,'scala/collection/IterableOnceOps.toList$')
f(11,5186,1294,1,'scala/collection/IterableOnceOps.toList')
f(12,5186,1294,1,'scala/collection/immutable/List.prependedAll')
f(13,5186,241,1,'cats/data/Chain$ChainIterator.next')
f(14,5186,241,1,'cats/data/Chain$ChainIterator.go$3')
f(15,5186,147,1,'scala/collection/immutable/List.$colon$colon')
f(16,5186,147,2,'scala.collection.immutable.$colon$colon')
f(15,5333,94,1,'scala/collection/immutable/List.iterator')
f(16,5333,94,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator$')
f(17,5333,94,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator')
f(18,5333,94,2,'scala.collection.StrictOptimizedLinearSeqOps$$anon$1')
f(13,5427,1053,2,'scala.collection.immutable.$colon$colon')
f(6,6480,588,1,'kyo/bench/CollectAllBench$$Lambda$110.0x0000000800dc5008.apply')
f(7,6480,1,1,'java/lang/Long.valueOf')
f(8,6480,1,2,'java.lang.Long')
f(7,6481,587,1,'kyo/bench/CollectAllBench.catsBench$$anonfun$1')
f(8,6481,587,1,'scala/collection/AbstractIterable.sum')
f(9,6481,587,1,'scala/collection/IterableOnceOps.sum$')
f(10,6481,587,1,'scala/collection/IterableOnceOps.sum')
f(11,6481,587,1,'scala/collection/AbstractIterable.reduce')
f(12,6481,587,1,'scala/collection/IterableOnceOps.reduce$')
f(13,6481,587,1,'scala/collection/IterableOnceOps.reduce')
f(14,6481,587,1,'scala/collection/AbstractIterable.reduceLeft')
f(15,6481,587,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(16,6481,587,1,'scala/collection/IterableOnceOps.reduceLeft')
f(17,6481,587,1,'scala/collection/IterableOnceOps$$Lambda$113.0x0000000800dc3000.apply')
f(18,6481,587,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(19,6481,587,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(20,6481,587,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(21,6481,587,1,'java/lang/Integer.valueOf')
f(22,6481,587,2,'java.lang.Integer')
f(3,7068,8152,1,'cats/effect/IOFiber.cedeR')
f(4,7068,1967,1,'cats/effect/IOFiber.runLoop')
f(5,7068,41,1,'cats/data/Chain$$$Lambda$112.0x0000000800dc57a0.apply')
f(6,7068,41,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,7068,41,1,'scala/collection/immutable/List.$colon$colon')
f(8,7068,41,2,'scala.collection.immutable.$colon$colon')
f(5,7109,69,1,'cats/effect/ArrayStack.push')
f(6,7109,69,1,'cats/effect/ArrayStack.checkAndGrow')
f(7,7109,69,2,'java.lang.Object[]')
f(5,7178,6,1,'cats/effect/ByteStack$.push')
f(6,7178,6,1,'cats/effect/ByteStack$.growIfNeeded')
f(7,7178,6,2,'int[]')
f(5,7184,1283,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf8c8.apply')
f(6,7184,1283,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,7184,776,1,'cats/Eval$Defer.value')
f(8,7184,776,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,7184,660,1,'cats/Eval$.loop$1')
f(10,7184,660,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbda98.apply')
f(11,7184,660,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,7184,502,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,7184,502,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,7184,133,1,'cats/Eval$.now')
f(15,7184,133,1,'cats/Now$.apply')
f(16,7184,133,2,'cats.Now')
f(14,7317,189,1,'cats/effect/IO.flatMap')
f(15,7317,189,1,'cats/effect/IO$FlatMap$.apply')
f(16,7317,189,2,'cats.effect.IO$FlatMap')
f(14,7506,180,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,7506,180,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,7506,180,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,7506,180,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(12,7686,158,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7686,158,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7686,158,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7686,158,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf318')
f(9,7844,116,1,'cats/Eval$Ident$.apply')
f(10,7844,116,2,'cats.Eval$Ident')
f(7,7960,52,1,'cats/Later.value')
f(8,7960,52,1,'cats/data/Chain$$$Lambda$98.0x0000000800dbd7d8.apply')
f(9,7960,52,1,'cats/data/Chain$.$anonfun$1')
f(10,7960,24,1,'cats/effect/IO$$anon$2.map')
f(11,7960,24,1,'cats/effect/IO$$anon$2.map')
f(12,7960,24,1,'cats/effect/IO.map')
f(13,7960,24,1,'cats/effect/IO$Map$.apply')
f(14,7960,24,2,'cats.effect.IO$Map')
f(10,7984,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,7984,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,7984,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,7984,28,2,'cats.data.Chain$$$Lambda$112+0x0000000800dc57a0')
f(7,8012,238,1,'cats/effect/IO.map')
f(8,8012,238,1,'cats/effect/IO$Map$.apply')
f(9,8012,238,2,'cats.effect.IO$Map')
f(7,8250,217,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,8250,217,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,8250,217,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,8250,217,2,'cats.effect.IO$$$Lambda$111+0x0000000800dc53d0')
f(5,8467,568,1,'cats/effect/IOFiber.succeeded')
f(6,8467,25,1,'cats/data/Chain$$$Lambda$106.0x0000000800dc4000.apply')
f(7,8467,25,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,8467,25,1,'cats/data/Chain$.fromSeq')
f(9,8467,25,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,8467,25,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,8467,25,1,'cats/data/Chain$Wrap$.apply')
f(12,8467,25,2,'cats.data.Chain$Wrap')
f(6,8492,236,1,'cats/effect/IO$$$Lambda$111.0x0000000800dc53d0.apply')
f(7,8492,236,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,8492,212,1,'cats/data/Chain$$$Lambda$104.0x0000000800dbf318.apply')
f(9,8492,212,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,8492,212,1,'scala/collection/immutable/List.$colon$colon')
f(11,8492,212,2,'scala.collection.immutable.$colon$colon')
f(8,8704,24,1,'cats/data/Chain$$$Lambda$108.0x0000000800dc4690.apply')
f(9,8704,24,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,8704,24,1,'cats/data/Chain.concat')
f(11,8704,24,1,'cats/data/Chain$.concat')
f(12,8704,24,1,'cats/data/Chain$Append$.apply')
f(13,8704,24,2,'cats.data.Chain$Append')
f(6,8728,307,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf8c8.apply')
f(7,8728,307,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,8728,250,1,'cats/Eval$FlatMap.value')
f(9,8728,250,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,8728,213,1,'cats/Eval$.loop$1')
f(11,8728,82,1,'cats/Eval$$Lambda$101.0x0000000800dbe128.apply')
f(12,8728,82,1,'cats/Eval.map$$anonfun$1')
f(13,8728,27,1,'cats/Now$.apply')
f(14,8728,27,2,'cats.Now')
f(13,8755,55,1,'cats/data/Chain$$$Lambda$100.0x0000000800dbdd58.apply')
f(14,8755,55,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,8755,31,1,'cats/effect/IO$$anon$2.map')
f(16,8755,31,1,'cats/effect/IO$$anon$2.map')
f(17,8755,31,1,'cats/effect/IO.map')
f(18,8755,31,1,'cats/effect/IO$Map$.apply')
f(19,8755,31,2,'cats.effect.IO$Map')
f(15,8786,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8786,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8786,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8786,24,2,'cats.data.Chain$$$Lambda$106+0x0000000800dc4000')
f(11,8810,131,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbda98.apply')
f(12,8810,131,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,8810,94,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,8810,94,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,8810,24,1,'cats/Eval$.now')
f(16,8810,24,1,'cats/Now$.apply')
f(17,8810,24,2,'cats.Now')
f(15,8834,27,1,'cats/effect/IO.flatMap')
f(16,8834,27,1,'cats/effect/IO$FlatMap$.apply')
f(17,8834,27,2,'cats.effect.IO$FlatMap')
f(15,8861,43,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,8861,43,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,8861,43,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,8861,43,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(13,8904,37,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,8904,37,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,8904,37,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,8904,37,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf318')
f(10,8941,37,1,'cats/Eval$Ident$.apply')
f(11,8941,37,2,'cats.Eval$Ident')
f(8,8978,29,1,'cats/effect/IO.map')
f(9,8978,29,1,'cats/effect/IO$Map$.apply')
f(10,8978,29,2,'cats.effect.IO$Map')
f(8,9007,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9007,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9007,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9007,28,2,'cats.effect.IO$$$Lambda$111+0x0000000800dc53d0')
f(4,9035,6185,1,'cats/effect/IOFiber.succeeded')
f(5,9035,6185,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13078.apply')
f(6,9035,6185,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,9035,6185,1,'kyo/bench/CollectAllBench.catsBench')
f(8,9035,4003,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(9,9035,4003,1,'cats/Traverse$Ops.sequence$')
f(10,9035,4003,1,'cats/Traverse$Ops.sequence')
f(11,9035,4003,1,'cats/instances/ListInstances$$anon$1.sequence')
f(12,9035,4003,1,'cats/Traverse.sequence$')
f(13,9035,4003,1,'cats/Traverse.sequence')
f(14,9035,4003,1,'cats/instances/ListInstances$$anon$1.traverse')
f(15,9035,4003,1,'cats/instances/ListInstances$$anon$1.traverse')
f(16,9035,3680,1,'cats/data/Chain$.traverseViaChain')
f(17,9035,882,1,'cats/Eval$FlatMap.value')
f(18,9035,882,1,'cats/Eval$.cats$Eval$$$evaluate')
f(19,9035,882,1,'cats/Eval$.loop$1')
f(20,9035,2,1,'cats/Eval$$Lambda$101.0x0000000800dbe128.apply')
f(21,9035,2,1,'cats/Eval.map$$anonfun$1')
f(22,9035,2,1,'cats/data/Chain$$$Lambda$100.0x0000000800dbdd58.apply')
f(23,9035,2,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(24,9035,2,1,'cats/effect/IO$$anon$2.map')
f(25,9035,2,1,'cats/effect/IO$$anon$2.map')
f(26,9035,2,1,'cats/effect/IO.map')
f(27,9035,2,1,'cats/effect/IO$Map$.apply')
f(28,9035,2,2,'cats.effect.IO$Map')
f(20,9037,3,1,'cats/Eval$$anon$1$$Lambda$103.0x0000000800dbeb08.apply')
f(21,9037,3,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(22,9037,1,2,'cats.Eval$$anon$2')
f(22,9038,2,1,'cats/Eval$$anon$2.<init>')
f(23,9038,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,9038,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,9038,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,9038,2,2,'cats.Eval$$anon$2$$Lambda$107+0x0000000800dc43d0')
f(20,9040,275,1,'cats/Eval$$anon$2$$Lambda$107.0x0000000800dc43d0.apply')
f(21,9040,275,1,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2')
f(22,9040,272,1,'cats/Eval$$anon$1$$Lambda$103.0x0000000800dbeb08.apply')
f(23,9040,272,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(24,9040,126,2,'cats.Eval$$anon$2')
f(24,9166,146,1,'cats/Eval$$anon$2.<init>')
f(25,9166,146,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(26,9166,146,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(27,9166,146,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(28,9166,146,2,'cats.Eval$$anon$2$$Lambda$107+0x0000000800dc43d0')
f(22,9312,3,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbe4f8.apply')
f(23,9312,3,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(24,9312,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(25,9312,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(26,9312,1,1,'cats/Eval$.now')
f(27,9312,1,1,'cats/Now$.apply')
f(28,9312,1,2,'cats.Now')
f(26,9313,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(27,9313,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(28,9313,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(29,9313,1,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(24,9314,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9314,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9314,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9314,1,2,'cats.data.Chain$$$Lambda$108+0x0000000800dc4690')
f(20,9315,116,1,'cats/Eval$Many$.apply')
f(21,9315,116,2,'cats.Eval$Many')
f(20,9431,468,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbe4f8.apply')
f(21,9431,468,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(22,9431,387,1,'cats/effect/IO$$anon$2.map2Eval')
f(23,9431,387,1,'cats/effect/IO$$anon$2.map2Eval')
f(24,9431,80,1,'cats/Eval$.now')
f(25,9431,80,1,'cats/Now$.apply')
f(26,9431,80,2,'cats.Now')
f(24,9511,159,1,'cats/effect/IO.flatMap')
f(25,9511,159,1,'cats/effect/IO$FlatMap$.apply')
f(26,9511,159,2,'cats.effect.IO$FlatMap')
f(24,9670,148,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9670,148,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9670,148,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9670,148,2,'cats.effect.IO$$anon$2$$Lambda$105+0x0000000800dbf8c8')
f(22,9818,81,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,9818,81,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,9818,81,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,9818,81,2,'cats.data.Chain$$$Lambda$108+0x0000000800dc4690')
f(20,9899,15,1,'cats/data/Chain$$$Lambda$97.0x0000000800dbd218.apply')
f(21,9899,15,1,'cats/data/Chain$.$anonfun$2')
f(22,9899,15,1,'cats/data/Chain$.loop$4')
f(23,9899,3,1,'cats/Eval$.defer')
f(24,9899,3,2,'cats.Eval$$anon$5')
f(23,9902,2,1,'cats/Eval$.later')
f(24,9902,2,2,'cats.Later')
f(23,9904,3,1,'cats/Eval.map')
f(24,9904,2,1,'cats/Eval.flatMap')
f(25,9904,2,2,'cats.Eval$$anon$3')
f(24,9906,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,9906,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,9906,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,9906,1,2,'cats.Eval$$Lambda$101+0x0000000800dbe128')
f(23,9907,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,9907,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,9907,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,9907,1,2,'cats.data.Chain$$$Lambda$100+0x0000000800dbdd58')
f(24,9908,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc2000.newInvokeSpecial')
f(25,9908,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,9908,6,2,'cats.data.Chain$$$Lambda$99+0x0000000800dbda98')
f(20,9914,3,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbda98.apply')
f(21,9914,3,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(22,9914,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(23,9914,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(24,9914,2,1,'cats/effect/IO.flatMap')
f(25,9914,2,1,'cats/effect/IO$FlatMap$.apply')
f(26,9914,2,2,'cats.effect.IO$FlatMap')
f(22,9916,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,9916,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,9916,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,9916,1,2,'cats.data.Chain$$$Lambda$104+0x0000000800dbf318')
f(17,9917,2798,1,'cats/data/Chain$.loop$4')
f(18,9917,284,1,'cats/Eval.flatMap')
f(19,9917,133,2,'cats.Eval$$anon$1')
f(19,10050,151,1,'cats/Eval$$anon$1.<init>')
f(20,10050,151,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10050,151,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,10050,151,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10050,151,2,'cats.Eval$$anon$1$$Lambda$103+0x0000000800dbeb08')
f(18,10201,2356,1,'cats/data/Chain$.loop$4')
f(19,10201,532,1,'cats/Eval$.defer')
f(20,10201,532,2,'cats.Eval$$anon$5')
f(19,10733,189,1,'cats/Eval$.later')
f(20,10733,189,2,'cats.Later')
f(19,10922,202,1,'cats/Eval.map')
f(20,10922,127,1,'cats/Eval.flatMap')
f(21,10922,127,2,'cats.Eval$$anon$3')
f(20,11049,75,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,11049,75,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(22,11049,75,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,11049,75,2,'cats.Eval$$Lambda$101+0x0000000800dbe128')
f(19,11124,1242,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,11124,145,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,11124,145,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11124,145,2,'cats.data.Chain$$$Lambda$100+0x0000000800dbdd58')
f(20,11269,1097,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc2000.newInvokeSpecial')
f(21,11269,1097,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,11269,1097,2,'cats.data.Chain$$$Lambda$99+0x0000000800dbda98')
f(19,12366,191,1,'java/lang/invoke/LambdaForm$MH.0x0000000800dc1c00.linkToTargetMethod')
f(20,12366,191,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc1400.newInvokeSpecial')
f(21,12366,191,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,12366,191,2,'cats.data.Chain$$$Lambda$98+0x0000000800dbd7d8')
f(18,12557,157,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,12557,157,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,12557,157,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12557,157,2,'cats.data.Chain$$$Lambda$102+0x0000000800dbe4f8')
f(18,12714,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800dc0c00.linkToTargetMethod')
f(19,12714,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800dc0400.newInvokeSpecial')
f(20,12714,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,12714,1,2,'cats.data.Chain$$$Lambda$97+0x0000000800dbd218')
f(16,12715,21,1,'cats/kernel/instances/StaticMethods$.wrapMutableIndexedSeq')
f(17,12715,21,2,'cats.kernel.instances.StaticMethods$WrappedIndexedSeq')
f(16,12736,1,2,'java.lang.Object[]')
f(16,12737,300,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq')
f(17,12737,300,1,'scala/collection/mutable/Growable.$plus$plus$eq$')
f(18,12737,300,1,'scala/collection/mutable/Growable.$plus$plus$eq')
f(19,12737,300,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(20,12737,300,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(21,12737,300,1,'scala/collection/mutable/Growable.addAll$')
f(22,12737,300,1,'scala/collection/mutable/Growable.addAll')
f(23,12737,300,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(24,12737,300,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(25,12737,300,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(26,12737,300,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(27,12737,273,2,'java.lang.Object[]')
f(27,13010,27,5,'java.lang.Object[]')
f(16,13037,1,1,'scala/runtime/ScalaRunTime$.genericWrapArray')
f(17,13037,1,1,'scala/collection/immutable/ArraySeq$.unsafeWrapArray')
f(18,13037,1,2,'scala.collection.immutable.ArraySeq$ofRef')
f(8,13038,971,1,'scala/collection/AbstractIterable.toList')
f(9,13038,971,1,'scala/collection/IterableOnceOps.toList$')
f(10,13038,971,1,'scala/collection/IterableOnceOps.toList')
f(11,13038,971,1,'scala/collection/immutable/List.prependedAll')
f(12,13038,964,2,'scala.collection.immutable.$colon$colon')
f(12,14002,7,1,'scala/collection/immutable/Vector.iterator')
f(13,14002,7,2,'scala.collection.immutable.NewVectorIterator')
f(8,14009,1211,1,'scala/collection/immutable/Range.map')
f(9,14009,1022,1,'kyo/bench/CollectAllBench$$Lambda$92.0x0000000800d5fae8.apply')
f(10,14009,1022,1,'kyo/bench/CollectAllBench.$anonfun$adapted$2')
f(11,14009,1022,1,'kyo/bench/CollectAllBench.$anonfun$3')
f(12,14009,1022,1,'cats/effect/IO$.apply')
f(13,14009,1022,1,'cats/effect/IO$.delay')
f(14,14009,1022,1,'cats/effect/IO$Delay$.apply')
f(15,14009,1022,2,'cats.effect.IO$Delay')
f(9,15031,3,1,'scala/collection/SeqFactory$Delegate.newBuilder')
f(10,15031,3,1,'scala/collection/immutable/Vector$.newBuilder')
f(11,15031,3,1,'scala/collection/immutable/Vector$.newBuilder')
f(12,15031,2,2,'scala.collection.immutable.VectorBuilder')
f(12,15033,1,1,'scala/collection/immutable/VectorBuilder.<init>')
f(13,15033,1,2,'java.lang.Object[]')
f(9,15034,176,1,'scala/collection/immutable/VectorBuilder.addOne')
f(10,15034,176,1,'scala/collection/immutable/VectorBuilder.addOne')
f(11,15034,176,1,'scala/collection/immutable/VectorBuilder.advance')
f(12,15034,176,1,'scala/collection/immutable/VectorBuilder.advance1')
f(13,15034,5,2,'java.lang.Object[][]')
f(13,15039,171,2,'java.lang.Object[]')
f(9,15210,10,1,'scala/collection/immutable/VectorBuilder.result')
f(10,15210,10,1,'scala/collection/immutable/VectorBuilder.result')
f(11,15210,2,1,'java/util/Arrays.copyOf')
f(12,15210,2,2,'java.lang.Object[]')
f(11,15212,6,1,'java/util/Arrays.copyOfRange')
f(12,15212,6,2,'java.lang.Object[][]')
f(11,15218,2,2,'scala.collection.immutable.Vector2')
f(3,15220,221,1,'cats/effect/IOFiber.execR')
f(4,15220,6,1,'cats/effect/ArrayStack.init')
f(5,15220,6,2,'java.lang.Object[]')
f(4,15226,215,1,'cats/effect/ByteStack$.create')
f(5,15226,215,2,'int[]')
f(1,15441,1783,1,'java/lang/Thread.run')
f(2,15441,1783,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,15441,1783,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,15441,1783,1,'java/util/concurrent/FutureTask.run')
f(5,15441,1783,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,15441,1783,1,'java/util/concurrent/FutureTask.run')
f(7,15441,1783,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,15441,1783,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,15441,1783,1,'java/lang/reflect/Method.invoke')
f(10,15441,1783,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,15441,1783,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,15441,1783,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,15441,1783,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_Throughput')
f(14,15441,1783,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,15441,1783,1,'kyo/bench/Bench.forkCats')
f(16,15441,51,1,'cats/effect/IO.flatMap')
f(17,15441,51,1,'cats/effect/IO$FlatMap$.apply')
f(18,15441,51,2,'cats.effect.IO$FlatMap')
f(16,15492,1715,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,15492,1693,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,15492,914,1,'cats/effect/IO.unsafeRunAsync')
f(19,15492,809,1,'cats/effect/IO.unsafeRunFiber')
f(20,15492,218,2,'cats.effect.IOFiber')
f(20,15710,426,1,'cats/effect/IOFiber.<init>')
f(21,15710,111,1,'cats/effect/ArrayStack$.apply')
f(22,15710,111,2,'cats.effect.ArrayStack')
f(21,15821,38,1,'cats/effect/CallbackStack$.apply')
f(22,15821,38,2,'cats.effect.CallbackStack')
f(21,15859,121,1,'cats/effect/IO$.async')
f(22,15859,13,2,'cats.effect.IO$$anon$4')
f(22,15872,108,1,'cats/effect/IO$IOCont$.apply')
f(23,15872,108,2,'cats.effect.IO$IOCont')
f(21,15980,43,1,'cats/effect/IO$.uncancelable')
f(22,15980,43,1,'cats/effect/IO$Uncancelable$.apply')
f(23,15980,43,2,'cats.effect.IO$Uncancelable')
f(21,16023,113,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,16023,113,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,16023,113,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,16023,41,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5de20')
f(24,16064,72,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(20,16136,57,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,16136,57,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,16136,57,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,16136,57,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,16136,57,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,16193,108,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,16193,108,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,16193,108,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,16193,108,2,'cats.effect.IO$$Lambda$88+0x0000000800d5cfe8')
f(19,16301,105,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,16301,105,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,16301,105,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,16301,63,2,'cats.effect.IO$$Lambda$85+0x0000000800d57750')
f(22,16364,14,2,'cats.effect.IO$$Lambda$86+0x0000000800d57a10')
f(22,16378,28,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c000')
f(18,16406,106,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,16512,107,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,16512,107,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,16512,107,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,16512,21,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57348')
f(21,16533,86,2,'cats.effect.IOPlatform$$Lambda$91+0x0000000800d5edf0')
f(18,16619,399,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,16619,399,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,16619,125,2,'java.lang.Object[]')
f(20,16744,52,2,'java.util.concurrent.locks.ReentrantLock')
f(20,16796,72,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,16796,72,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,16868,150,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,16868,150,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,16868,150,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17018,67,1,'scala/concurrent/package$.blocking')
f(19,17018,67,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17018,67,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5edf0.apply')
f(21,17018,67,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17018,67,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17018,67,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17018,67,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17085,100,1,'scala/util/Either.fold')
f(19,17085,100,1,'cats/effect/IOPlatform$$Lambda$118.0x0000000800dc87d0.apply')
f(20,17085,100,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17085,100,1,'scala/Some$.apply')
f(22,17085,100,2,'scala.Some')
f(17,17185,22,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17185,22,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17185,22,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17185,22,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17185,22,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17185,22,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17185,22,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17185,22,2,'scala.concurrent.duration.FiniteDuration')
f(16,17207,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,17207,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,17207,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,17207,17,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,17207,17,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13078')
f(1,17224,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17224,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17224,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17224,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17224,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17224,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17224,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17224,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17224,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17224,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17224,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17224,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17224,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: 688px}
</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(43);
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,275,3,'all')
f(1,0,7,3,'[unknown_Java]')
f(2,0,1,1,'cats/Eval$.loop$1')
f(2,1,1,1,'cats/Eval$Defer.value')
f(2,2,4,6,'cats/effect/IO$Map.tag',0,4,0)
f(2,6,1,1,'java/lang/System.identityHashCode')
f(1,7,254,1,'cats/effect/unsafe/WorkerThread.run')
f(2,8,244,1,'cats/effect/IOFiber.run')
f(3,8,131,1,'cats/effect/IOFiber.autoCedeR')
f(4,8,131,1,'cats/effect/IOFiber.runLoop')
f(5,9,4,2,'cats/effect/ArrayStack.push',4,0,0)
f(6,11,2,2,'cats/effect/ArrayStack.checkAndGrow',2,0,0)
f(5,13,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(5,14,30,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf2f8.apply')
f(6,14,30,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,14,23,1,'cats/Eval$Defer.value')
f(8,16,21,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,16,21,1,'cats/Eval$.loop$1')
f(10,22,2,2,'cats/data/Chain$$$Lambda$102.0x0000000800dbdf28.apply',2,0,0)
f(11,22,2,2,'cats/data/Chain$.loop$4$$anonfun$3',2,0,0)
f(12,23,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(10,24,13,2,'cats/data/Chain$$$Lambda$99.0x0000000800dbd4c8.apply',13,0,0)
f(11,24,13,2,'cats/data/Chain$.loop$4$$anonfun$1',13,0,0)
f(12,24,13,2,'cats/effect/IO$$anon$2.map2Eval',13,0,0)
f(13,24,13,2,'cats/effect/IO$$anon$2.map2Eval',13,0,0)
f(14,33,2,2,'cats/Eval$.now',2,0,0)
f(15,33,2,2,'cats/Now$.apply',2,0,0)
f(14,35,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(7,37,7,1,'cats/Later.value')
f(8,40,2,2,'cats/data/Chain$$$Lambda$98.0x0000000800dbd208.apply',2,0,0)
f(9,40,2,2,'cats/data/Chain$.$anonfun$1',2,0,0)
f(10,40,1,2,'cats/effect/IO$$anon$2.map',1,0,0)
f(11,40,1,2,'cats/effect/IO$$anon$2.map',1,0,0)
f(12,40,1,2,'cats/effect/IO.map',1,0,0)
f(13,40,1,2,'cats/effect/IO$Map$.apply',1,0,0)
f(10,41,1,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',1,0,0)
f(11,41,1,2,'scala/collection/mutable/ArrayBuffer.apply',1,0,0)
f(8,42,1,2,'scala/runtime/LazyVals$.CAS',1,0,0)
f(9,42,1,2,'sun/misc/Unsafe.compareAndSwapLong',1,0,0)
f(8,43,1,2,'scala/runtime/LazyVals$.get',1,0,0)
f(9,43,1,2,'sun/misc/Unsafe.getLongVolatile',1,0,0)
f(5,44,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(5,46,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(5,49,4,6,'cats/effect/IO$Map.tag',0,4,0)
f(5,53,2,2,'cats/effect/IOFiber.rescheduleFiber',2,0,0)
f(5,55,68,1,'cats/effect/IOFiber.succeeded')
f(6,61,3,2,'cats/effect/ByteStack$.pop',3,0,0)
f(7,62,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,64,5,1,'cats/effect/IO$$$Lambda$111.0x0000000800dc4d40.apply')
f(7,68,1,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',1,0,0)
f(8,68,1,2,'cats/data/Chain$$$Lambda$104.0x0000000800dbed48.apply',1,0,0)
f(9,68,1,2,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1',1,0,0)
f(10,68,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(11,68,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(6,69,6,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf2f8.apply')
f(7,69,6,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,69,6,1,'cats/Eval$FlatMap.value')
f(9,69,6,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,69,6,1,'cats/Eval$.loop$1')
f(11,69,1,6,'cats/Eval$$anon$3.start',0,1,0)
f(11,70,1,2,'cats/Now.value',1,0,0)
f(11,71,4,1,'cats/data/Chain$$$Lambda$99.0x0000000800dbd4c8.apply',1,0,0)
f(12,73,2,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(13,73,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(14,73,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(15,73,1,2,'cats/effect/IO.flatMap',1,0,0)
f(16,73,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(17,73,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(15,74,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(16,74,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(17,74,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(6,75,12,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,75,12,1,'cats/effect/IOFiber.done')
f(8,75,12,1,'cats/effect/CallbackStack.apply')
f(9,75,12,1,'scala/runtime/function/JProcedure1.apply')
f(10,75,12,1,'scala/runtime/function/JProcedure1.apply')
f(11,75,12,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cde8.applyVoid')
f(12,75,12,1,'cats/effect/IO.$anonfun$6')
f(13,75,12,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,75,12,1,'cats/effect/kernel/Outcome.fold$',1,0,0)
f(15,75,12,1,'cats/effect/kernel/Outcome.fold',1,0,0)
f(16,75,12,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(17,75,12,1,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(18,75,12,1,'cats/effect/IO$$Lambda$116.0x0000000800dc36c8.applyVoid',1,0,0)
f(19,75,12,1,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(20,75,1,2,'cats/effect/unsafe/StripedHashtable.remove',1,0,0)
f(21,75,1,2,'cats/effect/unsafe/ThreadSafeHashtable.remove',1,0,0)
f(20,76,11,1,'scala/runtime/function/JProcedure1.apply')
f(21,76,11,1,'scala/runtime/function/JProcedure1.apply')
f(22,76,11,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,76,11,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,76,11,1,'scala/runtime/function/JProcedure1.apply')
f(25,76,11,1,'scala/runtime/function/JProcedure1.apply')
f(26,76,11,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57140.applyVoid')
f(27,76,11,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,76,11,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,76,11,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,76,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,76,11,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,76,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,76,11,1,'jdk/internal/misc/Unsafe.unpark')
f(34,76,11,3,'pthread_cond_signal')
f(35,76,11,5,'entry_SYSCALL_64_after_hwframe')
f(36,76,11,5,'do_syscall_64')
f(37,76,11,5,'__x64_sys_futex')
f(38,76,11,5,'do_futex')
f(39,76,11,5,'futex_wake')
f(40,76,1,5,'get_futex_key')
f(40,77,10,5,'wake_up_q')
f(41,77,9,5,'_raw_spin_unlock_irqrestore')
f(41,86,1,5,'try_to_wake_up')
f(42,86,1,5,'_raw_spin_lock_irqsave')
f(6,87,20,1,'cats/instances/ListInstances$$anon$1$$Lambda$109.0x0000000800dc45b0.apply')
f(7,87,20,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,87,20,1,'cats/data/Chain.toList')
f(9,87,20,1,'cats/data/Chain$ChainIterator.toList')
f(10,87,20,1,'scala/collection/IterableOnceOps.toList$')
f(11,87,20,1,'scala/collection/IterableOnceOps.toList')
f(12,87,20,1,'scala/collection/immutable/List.prependedAll')
f(13,88,1,2,'cats/data/Chain$ChainIterator.hasNext',1,0,0)
f(14,88,1,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',1,0,0)
f(13,89,10,1,'cats/data/Chain$ChainIterator.next')
f(14,90,9,2,'cats/data/Chain$ChainIterator.go$3',9,0,0)
f(15,92,6,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',6,0,0)
f(15,98,1,2,'scala/collection/immutable/List.$colon$colon',1,0,0)
f(13,99,2,2,'scala/collection/immutable/$colon$colon.<init>',2,0,0)
f(14,100,1,2,'scala/runtime/Statics.releaseFence',1,0,0)
f(15,100,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800c88000.invoke_MT',1,0,0)
f(16,100,1,2,'java/lang/invoke/Invokers.checkGenericType',1,0,0)
f(13,101,6,2,'scala/collection/immutable/NewVectorIterator.next',6,0,0)
f(14,104,3,2,'scala/collection/immutable/NewVectorIterator.advance',3,0,0)
f(6,107,5,3,'itable stub')
f(6,112,11,1,'kyo/bench/CollectAllBench$$Lambda$110.0x0000000800dc4978.apply')
f(7,112,11,2,'kyo/bench/CollectAllBench.catsBench$$anonfun$1',9,0,0)
f(8,112,11,2,'scala/collection/AbstractIterable.sum',9,0,0)
f(9,112,11,2,'scala/collection/IterableOnceOps.sum$',9,0,0)
f(10,112,11,2,'scala/collection/IterableOnceOps.sum',9,0,0)
f(11,112,11,2,'scala/collection/AbstractIterable.reduce',9,0,0)
f(12,112,11,2,'scala/collection/IterableOnceOps.reduce$',9,0,0)
f(13,112,11,2,'scala/collection/IterableOnceOps.reduce',9,0,0)
f(14,112,11,2,'scala/collection/AbstractIterable.reduceLeft',9,0,0)
f(15,112,11,2,'scala/collection/IterableOnceOps.reduceLeft$',9,0,0)
f(16,112,11,2,'scala/collection/IterableOnceOps.reduceLeft',9,0,0)
f(17,112,8,2,'scala/collection/IterableOnceOps$$Lambda$113.0x0000000800dc73c8.apply',6,0,0)
f(18,112,8,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',6,0,0)
f(19,112,8,2,'scala/math/Numeric$IntIsIntegral$.plus',6,0,0)
f(20,112,8,2,'scala/runtime/BoxesRunTime.boxToInteger',6,0,0)
f(21,118,2,1,'java/lang/Integer.valueOf')
f(22,118,2,1,'java/lang/Integer.<init>')
f(23,118,2,1,'java/lang/Number.<init>')
f(17,120,3,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',3,0,0)
f(5,123,14,2,'kyo/bench/CollectAllBench$$Lambda$93.0x0000000800d67b70.apply',13,0,0)
f(6,136,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(5,137,2,3,'vtable stub')
f(3,139,112,1,'cats/effect/IOFiber.cedeR')
f(4,139,34,1,'cats/effect/IOFiber.runLoop')
f(5,141,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,142,9,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf2f8.apply')
f(6,142,9,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,142,6,1,'cats/Eval$Defer.value')
f(8,142,6,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,142,6,1,'cats/Eval$.loop$1')
f(10,142,1,2,'cats/data/Chain$$$Lambda$102.0x0000000800dbdf28.apply',1,0,0)
f(11,142,1,2,'cats/data/Chain$.loop$4$$anonfun$3',1,0,0)
f(12,142,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(13,142,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(10,143,5,2,'cats/data/Chain$$$Lambda$99.0x0000000800dbd4c8.apply',5,0,0)
f(11,143,5,2,'cats/data/Chain$.loop$4$$anonfun$1',5,0,0)
f(12,143,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(13,143,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(14,144,2,2,'cats/Eval$.now',2,0,0)
f(15,144,2,2,'cats/Now$.apply',2,0,0)
f(14,146,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(15,146,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(12,147,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,148,3,1,'cats/Later.value')
f(8,149,2,2,'scala/runtime/LazyVals$.CAS',2,0,0)
f(9,149,2,2,'sun/misc/Unsafe.compareAndSwapLong',2,0,0)
f(5,151,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(5,152,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(5,154,1,6,'cats/effect/IO$Map.tag',0,1,0)
f(5,155,8,1,'cats/effect/IOFiber.succeeded')
f(6,156,1,1,'cats/data/Chain$$$Lambda$106.0x0000000800dbf6c8.apply')
f(6,157,2,2,'cats/effect/ArrayStack.pop',2,0,0)
f(6,159,2,1,'cats/effect/IO$$$Lambda$111.0x0000000800dc4d40.apply')
f(7,159,2,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',2,0,0)
f(6,161,1,1,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf2f8.apply')
f(7,161,1,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,161,1,1,'cats/Eval$FlatMap.value')
f(9,161,1,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,161,1,1,'cats/Eval$.loop$1')
f(6,162,1,3,'itable stub')
f(5,163,7,2,'kyo/bench/CollectAllBench$$Lambda$93.0x0000000800d67b70.apply',7,0,0)
f(5,170,3,3,'vtable stub')
f(4,173,78,1,'cats/effect/IOFiber.succeeded')
f(5,173,78,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13078.apply')
f(6,173,78,1,'kyo/bench/Bench.forkCats$$anonfun$1',5,0,0)
f(7,173,78,1,'kyo/bench/CollectAllBench.catsBench',5,0,0)
f(8,173,49,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(9,173,49,1,'cats/Traverse$Ops.sequence$')
f(10,173,49,1,'cats/Traverse$Ops.sequence')
f(11,173,49,1,'cats/instances/ListInstances$$anon$1.sequence')
f(12,173,49,1,'cats/Traverse.sequence$',9,0,0)
f(13,173,49,1,'cats/Traverse.sequence',9,0,0)
f(14,173,49,1,'cats/instances/ListInstances$$anon$1.traverse',9,0,0)
f(15,173,49,1,'cats/instances/ListInstances$$anon$1.traverse',9,0,0)
f(16,173,40,1,'cats/data/Chain$.traverseViaChain')
f(17,173,10,1,'cats/Eval$FlatMap.value')
f(18,173,10,1,'cats/Eval$.cats$Eval$$$evaluate')
f(19,173,10,1,'cats/Eval$.loop$1')
f(20,173,2,2,'cats/Eval$$anon$2$$Lambda$107.0x0000000800dbfcb8.apply',1,0,0)
f(21,174,1,2,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2',1,0,0)
f(20,175,3,1,'cats/data/Chain$$$Lambda$102.0x0000000800dbdf28.apply')
f(21,176,2,2,'cats/data/Chain$.loop$4$$anonfun$3',2,0,0)
f(22,176,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(23,176,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(24,176,1,2,'cats/Eval$.now',1,0,0)
f(25,176,1,2,'cats/Now$.apply',1,0,0)
f(24,177,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(25,177,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(26,177,1,2,'cats/effect/IO$$anon$2$$Lambda$105.0x0000000800dbf2f8.<init>',1,0,0)
f(20,178,1,1,'cats/data/Chain$$$Lambda$97.0x0000000800dbcc48.apply')
f(21,178,1,1,'cats/data/Chain$.$anonfun$2')
f(22,178,1,1,'cats/data/Chain$.loop$4')
f(23,178,1,1,'cats/data/Chain$.loop$4')
f(24,178,1,2,'cats/Eval.flatMap',1,0,0)
f(25,178,1,2,'cats/Eval$$anon$1.<init>',1,0,0)
f(20,179,1,2,'cats/data/Chain$$$Lambda$99.0x0000000800dbd4c8.apply',1,0,0)
f(21,179,1,2,'cats/data/Chain$.loop$4$$anonfun$1',1,0,0)
f(22,179,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(23,179,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(20,180,3,3,'itable stub')
f(17,183,30,1,'cats/data/Chain$.loop$4')
f(18,184,1,2,'cats/Eval$.defer',1,0,0)
f(19,184,1,2,'cats/Eval$$anon$5.<init>',1,0,0)
f(20,184,1,2,'cats/Eval$Defer.<init>',1,0,0)
f(18,185,3,2,'cats/Eval$.later',3,0,0)
f(18,188,7,2,'cats/Eval.map',7,0,0)
f(19,188,6,2,'cats/Eval.flatMap',6,0,0)
f(19,194,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(20,194,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(21,194,1,2,'cats/Eval$$Lambda$101.0x0000000800dbdb58.<init>',1,0,0)
f(18,195,18,1,'cats/data/Chain$.loop$4')
f(19,197,14,2,'cats/Eval.flatMap',14,0,0)
f(20,198,13,2,'cats/Eval$$anon$1.<init>',13,0,0)
f(19,211,1,2,'cats/Eval.map',1,0,0)
f(19,212,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(20,212,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(16,213,5,2,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq',5,0,0)
f(17,213,5,2,'scala/collection/mutable/Growable.$plus$plus$eq$',5,0,0)
f(18,213,5,2,'scala/collection/mutable/Growable.$plus$plus$eq',5,0,0)
f(19,213,5,2,'scala/collection/mutable/ArrayBuffer.addAll',5,0,0)
f(20,213,5,2,'scala/collection/mutable/ArrayBuffer.addAll',5,0,0)
f(21,213,5,2,'scala/collection/mutable/Growable.addAll$',5,0,0)
f(22,213,5,2,'scala/collection/mutable/Growable.addAll',5,0,0)
f(23,213,2,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',2,0,0)
f(24,214,1,3,'jint_disjoint_arraycopy')
f(23,215,1,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',1,0,0)
f(23,216,2,2,'scala/collection/immutable/List.iterator',2,0,0)
f(24,217,1,2,'scala/collection/StrictOptimizedLinearSeqOps.iterator$',1,0,0)
f(25,217,1,2,'scala/collection/StrictOptimizedLinearSeqOps.iterator',1,0,0)
f(16,218,4,2,'scala/collection/mutable/ArrayBuffer$.apply',4,0,0)
f(17,218,4,2,'scala/collection/IterableFactory.apply$',4,0,0)
f(18,218,4,2,'scala/collection/IterableFactory.apply',4,0,0)
f(19,218,4,2,'scala/collection/mutable/ArrayBuffer$.from',4,0,0)
f(20,218,4,2,'scala/collection/mutable/ArrayBuffer$.from',4,0,0)
f(21,218,2,2,'scala/collection/immutable/ArraySeq.copyToArray',2,0,0)
f(21,220,2,2,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize',2,0,0)
f(22,221,1,2,'scala/collection/mutable/ArrayBuffer$.resizeUp',1,0,0)
f(23,221,1,2,'java/lang/Math.max',1,0,0)
f(8,222,24,1,'scala/collection/AbstractIterable.toList')
f(9,222,24,1,'scala/collection/IterableOnceOps.toList$')
f(10,222,24,1,'scala/collection/IterableOnceOps.toList')
f(11,222,24,1,'scala/collection/immutable/List.prependedAll')
f(12,226,14,2,'scala/collection/immutable/$colon$colon.<init>',14,0,0)
f(13,236,1,2,'scala/collection/immutable/List.<init>',1,0,0)
f(14,236,1,2,'scala/collection/immutable/AbstractSeq.<init>',1,0,0)
f(13,237,3,2,'scala/runtime/Statics.releaseFence',3,0,0)
f(14,237,3,2,'java/lang/invoke/LambdaForm$MH.0x0000000800c88000.invoke_MT',3,0,0)
f(12,240,6,2,'scala/collection/immutable/NewVectorIterator.next',6,0,0)
f(13,242,4,2,'scala/collection/immutable/NewVectorIterator.advance',4,0,0)
f(8,246,2,2,'scala/collection/immutable/Range.map',2,0,0)
f(9,246,2,2,'scala/collection/SeqFactory$Delegate.newBuilder',2,0,0)
f(10,246,2,2,'scala/collection/immutable/Vector$.newBuilder',2,0,0)
f(8,248,3,2,'scala/runtime/RichInt$.until$extension',3,0,0)
f(9,248,3,2,'scala/collection/immutable/Range$Exclusive.<init>',3,0,0)
f(10,248,3,2,'scala/collection/immutable/Range.<init>',3,0,0)
f(11,249,2,2,'scala/collection/immutable/Range.longLength',2,0,0)
f(3,251,1,1,'cats/effect/IOFiber.execR')
f(4,251,1,1,'cats/effect/IOFiber.runLoop')
f(5,251,1,2,'kyo/bench/CollectAllBench$$Lambda$93.0x0000000800d67b70.apply',1,0,0)
f(2,252,1,2,'cats/effect/unsafe/LocalQueue.dequeue',1,0,0)
f(2,253,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,253,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(4,253,1,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',1,0,0)
f(5,253,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,253,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(2,254,7,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,254,7,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,254,7,1,'java/util/concurrent/locks/LockSupport.park')
f(5,254,7,1,'jdk/internal/misc/Unsafe.park')
f(6,254,2,3,'Unsafe_Park')
f(7,254,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,254,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,254,1,5,'do_syscall_64')
f(10,254,1,5,'syscall_enter_from_user_mode')
f(7,255,1,3,'pthread_mutex_unlock')
f(6,256,5,3,'[unknown]')
f(7,256,5,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,256,5,5,'entry_SYSCALL_64_after_hwframe')
f(9,256,5,5,'do_syscall_64')
f(10,256,5,5,'__x64_sys_futex')
f(11,256,5,5,'do_futex')
f(12,256,5,5,'futex_wait')
f(13,256,5,5,'futex_wait_queue_me')
f(14,256,5,5,'schedule')
f(15,256,5,5,'__schedule')
f(16,256,5,5,'finish_task_switch.isra.0')
f(1,261,14,1,'java/lang/Thread.run')
f(2,261,14,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,261,14,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,261,14,1,'java/util/concurrent/FutureTask.run')
f(5,261,14,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,261,14,1,'java/util/concurrent/FutureTask.run')
f(7,261,14,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,261,14,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,261,14,1,'java/lang/reflect/Method.invoke')
f(10,261,14,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,261,14,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,261,14,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,261,14,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_Throughput')
f(14,261,14,1,'kyo/bench/jmh_generated/CollectAllBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,261,14,1,'kyo/bench/Bench.forkCats')
f(16,261,12,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,261,12,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,261,6,1,'cats/effect/IO.unsafeRunAsync')
f(19,261,6,1,'cats/effect/IO.unsafeRunFiber',1,0,0)
f(20,261,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(21,261,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(22,261,1,4,'MemAllocator::allocate() const')
f(23,261,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(20,262,4,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,262,4,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,262,4,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,262,4,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,262,4,1,'jdk/internal/misc/Unsafe.unpark')
f(25,262,4,3,'pthread_cond_signal')
f(26,262,4,5,'entry_SYSCALL_64_after_hwframe')
f(27,262,4,5,'do_syscall_64')
f(28,262,4,5,'__x64_sys_futex')
f(29,262,4,5,'do_futex')
f(30,262,4,5,'futex_wake')
f(31,263,3,5,'wake_up_q')
f(32,263,3,5,'_raw_spin_unlock_irqrestore')
f(20,266,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(21,266,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial',1,0,0)
f(18,267,6,1,'scala/concurrent/package$.blocking')
f(19,267,6,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,267,6,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ebf0.apply')
f(21,267,6,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,267,6,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,267,6,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,267,1,3,'clock_gettime')
f(25,267,1,3,'[vdso]')
f(24,268,5,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,268,5,1,'jdk/internal/misc/Unsafe.park')
f(26,268,1,3,'Unsafe_Park')
f(27,268,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(26,269,4,3,'[unknown]')
f(27,269,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,269,4,5,'entry_SYSCALL_64_after_hwframe')
f(29,269,4,5,'do_syscall_64')
f(30,269,4,5,'__x64_sys_futex')
f(31,269,4,5,'do_futex')
f(32,269,4,5,'futex_wait')
f(33,271,2,5,'futex_wait_queue_me')
f(34,271,2,5,'schedule')
f(35,271,2,5,'__schedule')
f(36,271,2,5,'finish_task_switch.isra.0')
f(16,273,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,273,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,273,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,273,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,273,1,4,'InstanceKlass::check_valid_for_instantiation(bool, JavaThread*)')
f(20,274,1,3,'Unsafe_AllocateInstance')
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: 624px}
</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(39);
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,16750,3,'all')
f(1,0,14527,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,14527,1,'cats/effect/IOFiber.run')
f(3,0,10674,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,10674,1,'cats/effect/IOFiber.runLoop')
f(5,0,174,1,'cats/data/Chain$$$Lambda$111.0x0000000800dc6e18.apply')
f(6,0,174,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,0,174,1,'scala/collection/immutable/List.$colon$colon')
f(8,0,174,2,'scala.collection.immutable.$colon$colon')
f(5,174,5257,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(6,174,5257,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,174,3216,1,'cats/Eval$Defer.value')
f(8,174,3216,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,174,2689,1,'cats/Eval$.loop$1')
f(10,174,2689,1,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply')
f(11,174,2689,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,174,2155,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,174,2155,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,174,564,1,'cats/Eval$.now')
f(15,174,564,1,'cats/Now$.apply')
f(16,174,564,2,'cats.Now')
f(14,738,822,1,'cats/effect/IO.flatMap')
f(15,738,822,1,'cats/effect/IO$FlatMap$.apply')
f(16,738,822,2,'cats.effect.IO$FlatMap')
f(14,1560,769,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,1560,769,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,1560,769,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,1560,769,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(12,2329,534,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,2329,534,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,2329,534,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,2329,534,2,'cats.data.Chain$$$Lambda$54+0x0000000800d975f0')
f(9,2863,527,1,'cats/Eval$Ident$.apply')
f(10,2863,527,2,'cats.Eval$Ident')
f(7,3390,275,1,'cats/Later.value')
f(8,3390,275,1,'cats/data/Chain$$$Lambda$48.0x0000000800d92a60.apply')
f(9,3390,275,1,'cats/data/Chain$.$anonfun$1')
f(10,3390,153,1,'cats/effect/IO$$anon$2.map')
f(11,3390,153,1,'cats/effect/IO$$anon$2.map')
f(12,3390,153,1,'cats/effect/IO.map')
f(13,3390,153,1,'cats/effect/IO$Map$.apply')
f(14,3390,153,2,'cats.effect.IO$Map')
f(10,3543,122,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,3543,122,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,3543,122,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,3543,122,2,'cats.data.Chain$$$Lambda$111+0x0000000800dc6e18')
f(7,3665,912,1,'cats/effect/IO.map')
f(8,3665,912,1,'cats/effect/IO$Map$.apply')
f(9,3665,912,2,'cats.effect.IO$Map')
f(7,4577,854,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,4577,854,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,4577,854,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,4577,854,2,'cats.effect.IO$$$Lambda$110+0x0000000800dc6840')
f(5,5431,5243,1,'cats/effect/IOFiber.succeeded')
f(6,5431,121,1,'cats/data/Chain$$$Lambda$56.0x0000000800d96a20.apply')
f(7,5431,121,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,5431,121,1,'cats/data/Chain$.fromSeq')
f(9,5431,121,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,5431,121,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,5431,121,1,'cats/data/Chain$Wrap$.apply')
f(12,5431,121,2,'cats.data.Chain$Wrap')
f(6,5552,1084,1,'cats/effect/IO$$$Lambda$110.0x0000000800dc6840.apply')
f(7,5552,1084,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,5552,926,1,'cats/data/Chain$$$Lambda$54.0x0000000800d975f0.apply')
f(9,5552,926,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,5552,926,1,'scala/collection/immutable/List.$colon$colon')
f(11,5552,926,2,'scala.collection.immutable.$colon$colon')
f(8,6478,158,1,'cats/data/Chain$$$Lambda$58.0x0000000800d982c0.apply')
f(9,6478,158,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,6478,158,1,'cats/data/Chain.concat')
f(11,6478,158,1,'cats/data/Chain$.concat')
f(12,6478,158,1,'cats/data/Chain$Append$.apply')
f(13,6478,158,2,'cats.data.Chain$Append')
f(6,6636,1299,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(7,6636,1299,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,6636,992,1,'cats/Eval$FlatMap.value')
f(9,6636,992,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,6636,881,1,'cats/Eval$.loop$1')
f(11,6636,372,1,'cats/Eval$$Lambda$51.0x0000000800d933b0.apply')
f(12,6636,372,1,'cats/Eval.map$$anonfun$1')
f(13,6636,99,1,'cats/Now$.apply')
f(14,6636,99,2,'cats.Now')
f(13,6735,273,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92fe0.apply')
f(14,6735,273,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,6735,157,1,'cats/effect/IO$$anon$2.map')
f(16,6735,157,1,'cats/effect/IO$$anon$2.map')
f(17,6735,157,1,'cats/effect/IO.map')
f(18,6735,157,1,'cats/effect/IO$Map$.apply')
f(19,6735,157,2,'cats.effect.IO$Map')
f(15,6892,116,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,6892,116,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,6892,116,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,6892,116,2,'cats.data.Chain$$$Lambda$56+0x0000000800d96a20')
f(11,7008,509,1,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply')
f(12,7008,509,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,7008,399,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,7008,399,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,7008,78,1,'cats/Eval$.now')
f(16,7008,78,1,'cats/Now$.apply')
f(17,7008,78,2,'cats.Now')
f(15,7086,146,1,'cats/effect/IO.flatMap')
f(16,7086,146,1,'cats/effect/IO$FlatMap$.apply')
f(17,7086,146,2,'cats.effect.IO$FlatMap')
f(15,7232,175,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7232,175,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7232,175,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7232,175,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(13,7407,110,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,7407,110,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,7407,110,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,7407,110,2,'cats.data.Chain$$$Lambda$54+0x0000000800d975f0')
f(10,7517,111,1,'cats/Eval$Ident$.apply')
f(11,7517,111,2,'cats.Eval$Ident')
f(8,7628,153,1,'cats/effect/IO.map')
f(9,7628,153,1,'cats/effect/IO$Map$.apply')
f(10,7628,153,2,'cats.effect.IO$Map')
f(8,7781,154,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,7781,154,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,7781,154,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,7781,154,2,'cats.effect.IO$$$Lambda$110+0x0000000800dc6840')
f(6,7935,10,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,7935,3,1,'cats/effect/IO$.pure')
f(8,7935,3,1,'cats/effect/IO$Pure$.apply')
f(9,7935,3,2,'cats.effect.IO$Pure')
f(7,7938,7,1,'cats/effect/IOFiber.done')
f(8,7938,7,1,'cats/effect/CallbackStack.apply')
f(9,7938,7,1,'scala/runtime/function/JProcedure1.apply')
f(10,7938,7,1,'scala/runtime/function/JProcedure1.apply')
f(11,7938,7,1,'cats/effect/IO$$Lambda$106.0x0000000800dc4558.applyVoid')
f(12,7938,7,1,'cats/effect/IO.$anonfun$6')
f(13,7938,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,7938,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,7938,1,1,'cats/effect/kernel/Outcome.fold')
f(16,7938,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,7938,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,7938,1,1,'cats/effect/IO$$Lambda$115.0x0000000800dc8000.applyVoid')
f(19,7938,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,7938,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,7938,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,7938,1,1,'cats/effect/IO$$Lambda$105.0x0000000800dbf240.applyVoid')
f(23,7938,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,7938,1,1,'scala/util/Right$.apply')
f(25,7938,1,2,'scala.util.Right')
f(13,7939,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,7939,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,7939,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,7939,2,2,'cats.effect.IO$$Lambda$113+0x0000000800dc3c58')
f(16,7941,3,2,'cats.effect.IO$$Lambda$114+0x0000000800dc1800')
f(16,7944,1,2,'cats.effect.IO$$Lambda$115+0x0000000800dc8000')
f(6,7945,1808,1,'cats/instances/ListInstances$$anon$1$$Lambda$59.0x0000000800d98870.apply')
f(7,7945,1808,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,7945,1808,1,'cats/data/Chain.toList')
f(9,7945,4,2,'cats.data.Chain$ChainIterator')
f(9,7949,1804,1,'cats/data/Chain$ChainIterator.toList')
f(10,7949,1804,1,'scala/collection/IterableOnceOps.toList$')
f(11,7949,1804,1,'scala/collection/IterableOnceOps.toList')
f(12,7949,1804,1,'scala/collection/immutable/List.prependedAll')
f(13,7949,326,1,'cats/data/Chain$ChainIterator.next')
f(14,7949,326,1,'cats/data/Chain$ChainIterator.go$3')
f(15,7949,204,1,'scala/collection/immutable/List.$colon$colon')
f(16,7949,204,2,'scala.collection.immutable.$colon$colon')
f(15,8153,122,1,'scala/collection/immutable/List.iterator')
f(16,8153,122,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator$')
f(17,8153,122,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator')
f(18,8153,122,2,'scala.collection.StrictOptimizedLinearSeqOps$$anon$1')
f(13,8275,1478,2,'scala.collection.immutable.$colon$colon')
f(6,9753,921,1,'kyo/bench/CollectAllBench$$Lambda$60.0x0000000800d98c38.apply')
f(7,9753,2,1,'java/lang/Long.valueOf')
f(8,9753,2,2,'java.lang.Long')
f(7,9755,919,1,'kyo/bench/CollectAllBench.catsBench$$anonfun$1')
f(8,9755,919,1,'scala/collection/AbstractIterable.sum')
f(9,9755,919,1,'scala/collection/IterableOnceOps.sum$')
f(10,9755,919,1,'scala/collection/IterableOnceOps.sum')
f(11,9755,919,1,'scala/collection/AbstractIterable.reduce')
f(12,9755,919,1,'scala/collection/IterableOnceOps.reduce$')
f(13,9755,919,1,'scala/collection/IterableOnceOps.reduce')
f(14,9755,919,1,'scala/collection/AbstractIterable.reduceLeft')
f(15,9755,919,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(16,9755,919,1,'scala/collection/IterableOnceOps.reduceLeft')
f(17,9755,919,1,'scala/collection/IterableOnceOps$$Lambda$112.0x0000000800dc31a8.apply')
f(18,9755,919,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(19,9755,919,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(20,9755,919,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(21,9755,919,1,'java/lang/Integer.valueOf')
f(22,9755,919,2,'java.lang.Integer')
f(3,10674,3853,1,'cats/effect/IOFiber.execR')
f(4,10674,13,1,'cats/effect/ArrayStack.init')
f(5,10674,13,2,'java.lang.Object[]')
f(4,10687,205,1,'cats/effect/ByteStack$.create')
f(5,10687,205,2,'int[]')
f(4,10892,3635,1,'cats/effect/IOFiber.runLoop')
f(5,10892,55,1,'cats/data/Chain$$$Lambda$111.0x0000000800dc6e18.apply')
f(6,10892,55,1,'cats/data/Chain$.$anonfun$1$$anonfun$1')
f(7,10892,55,1,'scala/collection/immutable/List.$colon$colon')
f(8,10892,55,2,'scala.collection.immutable.$colon$colon')
f(5,10947,168,1,'cats/effect/ArrayStack.push')
f(6,10947,168,1,'cats/effect/ArrayStack.checkAndGrow')
f(7,10947,168,2,'java.lang.Object[]')
f(5,11115,12,1,'cats/effect/ByteStack$.push')
f(6,11115,12,1,'cats/effect/ByteStack$.growIfNeeded')
f(7,11115,12,2,'int[]')
f(5,11127,2262,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(6,11127,2262,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(7,11127,1375,1,'cats/Eval$Defer.value')
f(8,11127,1375,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,11127,1140,1,'cats/Eval$.loop$1')
f(10,11127,1140,1,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply')
f(11,11127,1140,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(12,11127,919,1,'cats/effect/IO$$anon$2.map2Eval')
f(13,11127,919,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,11127,270,1,'cats/Eval$.now')
f(15,11127,270,1,'cats/Now$.apply')
f(16,11127,270,2,'cats.Now')
f(14,11397,329,1,'cats/effect/IO.flatMap')
f(15,11397,329,1,'cats/effect/IO$FlatMap$.apply')
f(16,11397,329,2,'cats.effect.IO$FlatMap')
f(14,11726,320,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,11726,320,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,11726,320,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,11726,320,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(12,12046,221,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,12046,221,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,12046,221,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,12046,221,2,'cats.data.Chain$$$Lambda$54+0x0000000800d975f0')
f(9,12267,235,1,'cats/Eval$Ident$.apply')
f(10,12267,235,2,'cats.Eval$Ident')
f(7,12502,111,1,'cats/Later.value')
f(8,12502,111,1,'cats/data/Chain$$$Lambda$48.0x0000000800d92a60.apply')
f(9,12502,111,1,'cats/data/Chain$.$anonfun$1')
f(10,12502,73,1,'cats/effect/IO$$anon$2.map')
f(11,12502,73,1,'cats/effect/IO$$anon$2.map')
f(12,12502,73,1,'cats/effect/IO.map')
f(13,12502,73,1,'cats/effect/IO$Map$.apply')
f(14,12502,73,2,'cats.effect.IO$Map')
f(10,12575,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,12575,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,12575,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,12575,38,2,'cats.data.Chain$$$Lambda$111+0x0000000800dc6e18')
f(7,12613,379,1,'cats/effect/IO.map')
f(8,12613,379,1,'cats/effect/IO$Map$.apply')
f(9,12613,379,2,'cats.effect.IO$Map')
f(7,12992,397,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,12992,397,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,12992,397,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,12992,397,2,'cats.effect.IO$$$Lambda$110+0x0000000800dc6840')
f(5,13389,1138,1,'cats/effect/IOFiber.succeeded')
f(6,13389,47,1,'cats/data/Chain$$$Lambda$56.0x0000000800d96a20.apply')
f(7,13389,47,1,'cats/data/Chain$.loop$4$$anonfun$2$$anonfun$1')
f(8,13389,47,1,'cats/data/Chain$.fromSeq')
f(9,13389,47,1,'cats/data/ChainCompanionCompat.fromSeq$')
f(10,13389,47,1,'cats/data/ChainCompanionCompat.fromSeq')
f(11,13389,47,1,'cats/data/Chain$Wrap$.apply')
f(12,13389,47,2,'cats.data.Chain$Wrap')
f(6,13436,489,1,'cats/effect/IO$$$Lambda$110.0x0000000800dc6840.apply')
f(7,13436,489,1,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1')
f(8,13436,422,1,'cats/data/Chain$$$Lambda$54.0x0000000800d975f0.apply')
f(9,13436,422,1,'cats/data/Chain$.loop$4$$anonfun$1$$anonfun$1')
f(10,13436,422,1,'scala/collection/immutable/List.$colon$colon')
f(11,13436,422,2,'scala.collection.immutable.$colon$colon')
f(8,13858,67,1,'cats/data/Chain$$$Lambda$58.0x0000000800d982c0.apply')
f(9,13858,67,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,13858,67,1,'cats/data/Chain.concat')
f(11,13858,67,1,'cats/data/Chain$.concat')
f(12,13858,67,1,'cats/data/Chain$Append$.apply')
f(13,13858,67,2,'cats.data.Chain$Append')
f(6,13925,602,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(7,13925,602,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,13925,469,1,'cats/Eval$FlatMap.value')
f(9,13925,469,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,13925,419,1,'cats/Eval$.loop$1')
f(11,13925,172,1,'cats/Eval$$Lambda$51.0x0000000800d933b0.apply')
f(12,13925,172,1,'cats/Eval.map$$anonfun$1')
f(13,13925,47,1,'cats/Now$.apply')
f(14,13925,47,2,'cats.Now')
f(13,13972,125,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92fe0.apply')
f(14,13972,125,1,'cats/data/Chain$.loop$4$$anonfun$2')
f(15,13972,68,1,'cats/effect/IO$$anon$2.map')
f(16,13972,68,1,'cats/effect/IO$$anon$2.map')
f(17,13972,68,1,'cats/effect/IO.map')
f(18,13972,68,1,'cats/effect/IO$Map$.apply')
f(19,13972,68,2,'cats.effect.IO$Map')
f(15,14040,57,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,14040,57,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,14040,57,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,14040,57,2,'cats.data.Chain$$$Lambda$56+0x0000000800d96a20')
f(11,14097,247,1,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply')
f(12,14097,247,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(13,14097,190,1,'cats/effect/IO$$anon$2.map2Eval')
f(14,14097,190,1,'cats/effect/IO$$anon$2.map2Eval')
f(15,14097,40,1,'cats/Eval$.now')
f(16,14097,40,1,'cats/Now$.apply')
f(17,14097,40,2,'cats.Now')
f(15,14137,74,1,'cats/effect/IO.flatMap')
f(16,14137,74,1,'cats/effect/IO$FlatMap$.apply')
f(17,14137,74,2,'cats.effect.IO$FlatMap')
f(15,14211,76,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,14211,76,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,14211,76,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,14211,76,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(13,14287,57,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,14287,57,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,14287,57,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,14287,57,2,'cats.data.Chain$$$Lambda$54+0x0000000800d975f0')
f(10,14344,50,1,'cats/Eval$Ident$.apply')
f(11,14344,50,2,'cats.Eval$Ident')
f(8,14394,66,1,'cats/effect/IO.map')
f(9,14394,66,1,'cats/effect/IO$Map$.apply')
f(10,14394,66,2,'cats.effect.IO$Map')
f(8,14460,67,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,14460,67,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,14460,67,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,14460,67,2,'cats.effect.IO$$$Lambda$110+0x0000000800dc6840')
f(1,14527,2220,1,'java/lang/Thread.run')
f(2,14527,2220,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,14527,2220,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,14527,2220,1,'java/util/concurrent/FutureTask.run')
f(5,14527,2220,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,14527,2220,1,'java/util/concurrent/FutureTask.run')
f(7,14527,2220,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,14527,2220,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,14527,2220,1,'java/lang/reflect/Method.invoke')
f(10,14527,2220,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,14527,2220,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,14527,2220,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,14527,2220,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_Throughput')
f(14,14527,2220,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,14527,2220,1,'kyo/bench/Bench.syncCats')
f(16,14527,39,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,14527,39,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,14527,6,1,'cats/effect/IO.unsafeRunAsync')
f(19,14527,6,1,'cats/effect/IO.unsafeRunFiber')
f(20,14527,2,2,'cats.effect.IOFiber')
f(20,14529,4,1,'cats/effect/IOFiber.<init>')
f(21,14529,1,1,'cats/effect/ArrayStack$.apply')
f(22,14529,1,2,'cats.effect.ArrayStack')
f(21,14530,1,1,'cats/effect/CallbackStack$.apply')
f(22,14530,1,2,'cats.effect.CallbackStack')
f(21,14531,1,1,'cats/effect/IO$.async')
f(22,14531,1,1,'cats/effect/IO$IOCont$.apply')
f(23,14531,1,2,'cats.effect.IO$IOCont')
f(21,14532,1,1,'cats/effect/IO$.uncancelable')
f(22,14532,1,1,'cats/effect/IO$Uncancelable$.apply')
f(23,14532,1,2,'cats.effect.IO$Uncancelable')
f(18,14533,2,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,14533,2,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,14533,1,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,14533,1,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,14534,1,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,14534,1,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,14534,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,14535,2,1,'scala/concurrent/package$.blocking')
f(19,14535,2,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,14535,2,1,'cats/effect/IOPlatform$$Lambda$109.0x0000000800dc6158.apply')
f(21,14535,2,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,14535,2,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,14535,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,14535,2,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,14537,29,1,'scala/util/Either.fold')
f(19,14537,29,1,'cats/effect/IOPlatform$$Lambda$117.0x0000000800dc87d0.apply')
f(20,14537,29,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,14537,29,1,'scala/Some$.apply')
f(22,14537,29,2,'scala.Some')
f(16,14566,2181,1,'kyo/bench/CollectAllBench.catsBench')
f(17,14566,1441,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence')
f(18,14566,1441,1,'cats/Traverse$Ops.sequence$')
f(19,14566,1441,1,'cats/Traverse$Ops.sequence')
f(20,14566,1441,1,'cats/instances/ListInstances$$anon$1.sequence')
f(21,14566,1441,1,'cats/Traverse.sequence$')
f(22,14566,1441,1,'cats/Traverse.sequence')
f(23,14566,1441,1,'cats/instances/ListInstances$$anon$1.traverse')
f(24,14566,1441,1,'cats/instances/ListInstances$$anon$1.traverse')
f(25,14566,1326,1,'cats/data/Chain$.traverseViaChain')
f(26,14566,302,1,'cats/Eval$FlatMap.value')
f(27,14566,302,1,'cats/Eval$.cats$Eval$$$evaluate')
f(28,14566,302,1,'cats/Eval$.loop$1')
f(29,14566,1,1,'cats/Eval$$anon$1$$Lambda$53.0x0000000800d97000.apply')
f(30,14566,1,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(31,14566,1,2,'cats.Eval$$anon$2')
f(29,14567,97,1,'cats/Eval$$anon$2$$Lambda$57.0x0000000800d98000.apply')
f(30,14567,97,1,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2')
f(31,14567,95,1,'cats/Eval$$anon$1$$Lambda$53.0x0000000800d97000.apply')
f(32,14567,95,1,'cats/Eval$$anon$1.$init$$$anonfun$1')
f(33,14567,47,2,'cats.Eval$$anon$2')
f(33,14614,48,1,'cats/Eval$$anon$2.<init>')
f(34,14614,48,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(35,14614,48,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(36,14614,48,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(37,14614,48,2,'cats.Eval$$anon$2$$Lambda$57+0x0000000800d98000')
f(31,14662,2,1,'cats/data/Chain$$$Lambda$52.0x0000000800d93780.apply')
f(32,14662,2,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(33,14662,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(34,14662,2,1,'cats/effect/IO$$anon$2.map2Eval')
f(35,14662,1,1,'cats/Eval$.now')
f(36,14662,1,1,'cats/Now$.apply')
f(37,14662,1,2,'cats.Now')
f(35,14663,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(36,14663,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(37,14663,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(38,14663,1,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(29,14664,39,1,'cats/Eval$Many$.apply')
f(30,14664,39,2,'cats.Eval$Many')
f(29,14703,7,1,'cats/data/Chain$$$Lambda$47.0x0000000800d924a0.apply')
f(30,14703,7,1,'cats/data/Chain$.$anonfun$2')
f(31,14703,7,1,'cats/data/Chain$.loop$4')
f(32,14703,1,1,'cats/Eval$.defer')
f(33,14703,1,2,'cats.Eval$$anon$5')
f(32,14704,1,1,'cats/Eval$.later')
f(33,14704,1,2,'cats.Later')
f(32,14705,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(33,14705,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(34,14705,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,14705,1,2,'cats.data.Chain$$$Lambda$50+0x0000000800d92fe0')
f(33,14706,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d96000.newInvokeSpecial')
f(34,14706,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,14706,4,2,'cats.data.Chain$$$Lambda$49+0x0000000800d92d20')
f(29,14710,2,1,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply')
f(30,14710,2,1,'cats/data/Chain$.loop$4$$anonfun$1')
f(31,14710,1,1,'cats/effect/IO$$anon$2.map2Eval')
f(32,14710,1,1,'cats/effect/IO$$anon$2.map2Eval')
f(33,14710,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(34,14710,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(35,14710,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(36,14710,1,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(31,14711,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,14711,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,14711,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,14711,1,2,'cats.data.Chain$$$Lambda$54+0x0000000800d975f0')
f(29,14712,156,1,'cats/data/Chain$$$Lambda$52.0x0000000800d93780.apply')
f(30,14712,156,1,'cats/data/Chain$.loop$4$$anonfun$3')
f(31,14712,123,1,'cats/effect/IO$$anon$2.map2Eval')
f(32,14712,123,1,'cats/effect/IO$$anon$2.map2Eval')
f(33,14712,34,1,'cats/Eval$.now')
f(34,14712,34,1,'cats/Now$.apply')
f(35,14712,34,2,'cats.Now')
f(33,14746,51,1,'cats/effect/IO.flatMap')
f(34,14746,51,1,'cats/effect/IO$FlatMap$.apply')
f(35,14746,51,2,'cats.effect.IO$FlatMap')
f(33,14797,38,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(34,14797,38,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(35,14797,38,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(36,14797,38,2,'cats.effect.IO$$anon$2$$Lambda$55+0x0000000800d97ba0')
f(31,14835,33,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,14835,33,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,14835,33,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,14835,33,2,'cats.data.Chain$$$Lambda$58+0x0000000800d982c0')
f(26,14868,1024,1,'cats/data/Chain$.loop$4')
f(27,14868,98,1,'cats/Eval.flatMap')
f(28,14868,62,2,'cats.Eval$$anon$1')
f(28,14930,36,1,'cats/Eval$$anon$1.<init>')
f(29,14930,36,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,14930,36,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,14930,36,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,14930,36,2,'cats.Eval$$anon$1$$Lambda$53+0x0000000800d97000')
f(27,14966,876,1,'cats/data/Chain$.loop$4')
f(28,14966,196,1,'cats/Eval$.defer')
f(29,14966,196,2,'cats.Eval$$anon$5')
f(28,15162,90,1,'cats/Eval$.later')
f(29,15162,90,2,'cats.Later')
f(28,15252,81,1,'cats/Eval.map')
f(29,15252,59,1,'cats/Eval.flatMap')
f(30,15252,59,2,'cats.Eval$$anon$3')
f(29,15311,22,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,15311,22,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,15311,22,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,15311,22,2,'cats.Eval$$Lambda$51+0x0000000800d933b0')
f(28,15333,429,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(29,15333,44,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(30,15333,44,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,15333,44,2,'cats.data.Chain$$$Lambda$50+0x0000000800d92fe0')
f(29,15377,385,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d96000.newInvokeSpecial')
f(30,15377,385,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,15377,385,2,'cats.data.Chain$$$Lambda$49+0x0000000800d92d20')
f(28,15762,80,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d95c00.linkToTargetMethod')
f(29,15762,80,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d95400.newInvokeSpecial')
f(30,15762,80,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(31,15762,80,2,'cats.data.Chain$$$Lambda$48+0x0000000800d92a60')
f(27,15842,50,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(28,15842,50,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(29,15842,50,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(30,15842,50,2,'cats.data.Chain$$$Lambda$52+0x0000000800d93780')
f(25,15892,1,1,'cats/kernel/instances/StaticMethods$.wrapMutableIndexedSeq')
f(26,15892,1,2,'cats.kernel.instances.StaticMethods$WrappedIndexedSeq')
f(25,15893,114,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq')
f(26,15893,114,1,'scala/collection/mutable/Growable.$plus$plus$eq$')
f(27,15893,114,1,'scala/collection/mutable/Growable.$plus$plus$eq')
f(28,15893,114,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(29,15893,114,1,'scala/collection/mutable/ArrayBuffer.addAll')
f(30,15893,114,1,'scala/collection/mutable/Growable.addAll$')
f(31,15893,114,1,'scala/collection/mutable/Growable.addAll')
f(32,15893,114,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(33,15893,114,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(34,15893,114,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(35,15893,114,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(36,15893,112,2,'java.lang.Object[]')
f(36,16005,2,5,'java.lang.Object[]')
f(17,16007,336,1,'scala/collection/AbstractIterable.toList')
f(18,16007,336,1,'scala/collection/IterableOnceOps.toList$')
f(19,16007,336,1,'scala/collection/IterableOnceOps.toList')
f(20,16007,336,1,'scala/collection/immutable/List.prependedAll')
f(21,16007,335,2,'scala.collection.immutable.$colon$colon')
f(21,16342,1,1,'scala/collection/immutable/Vector.iterator')
f(22,16342,1,2,'scala.collection.immutable.NewVectorIterator')
f(17,16343,404,1,'scala/collection/immutable/Range.map')
f(18,16343,334,1,'kyo/bench/CollectAllBench$$Lambda$39.0x0000000800cbf248.apply')
f(19,16343,334,1,'kyo/bench/CollectAllBench.$anonfun$adapted$2')
f(20,16343,334,1,'kyo/bench/CollectAllBench.$anonfun$3')
f(21,16343,334,1,'cats/effect/IO$.apply')
f(22,16343,334,1,'cats/effect/IO$.delay')
f(23,16343,334,1,'cats/effect/IO$Delay$.apply')
f(24,16343,334,2,'cats.effect.IO$Delay')
f(18,16677,4,1,'scala/collection/SeqFactory$Delegate.newBuilder')
f(19,16677,4,1,'scala/collection/immutable/Vector$.newBuilder')
f(20,16677,4,1,'scala/collection/immutable/Vector$.newBuilder')
f(21,16677,1,2,'scala.collection.immutable.VectorBuilder')
f(21,16678,3,1,'scala/collection/immutable/VectorBuilder.<init>')
f(22,16678,3,2,'java.lang.Object[]')
f(18,16681,63,1,'scala/collection/immutable/VectorBuilder.addOne')
f(19,16681,63,1,'scala/collection/immutable/VectorBuilder.addOne')
f(20,16681,63,1,'scala/collection/immutable/VectorBuilder.advance')
f(21,16681,63,1,'scala/collection/immutable/VectorBuilder.advance1')
f(22,16681,63,2,'java.lang.Object[]')
f(18,16744,3,1,'scala/collection/immutable/VectorBuilder.result')
f(19,16744,3,1,'scala/collection/immutable/VectorBuilder.result')
f(20,16744,2,1,'java/util/Arrays.copyOf')
f(21,16744,2,2,'java.lang.Object[]')
f(20,16746,1,1,'java/util/Arrays.copyOfRange')
f(21,16746,1,2,'java.lang.Object[][]')
f(1,16747,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,16747,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,16747,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,16747,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,16747,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,16747,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,16747,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,16747,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,16747,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,16747,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,16747,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,16747,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,16747,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,276,3,'all')
f(1,0,1,3,'[not_walkable_Java]')
f(2,0,1,3,'_new_array_Java')
f(3,0,1,4,'SharedRuntime::on_slowpath_allocation_exit(JavaThread*)')
f(1,1,5,3,'[unknown_Java]')
f(2,1,2,1,'cats/Eval$.loop$1')
f(2,3,1,1,'cats/Eval$Defer.value')
f(2,4,1,1,'cats/Eval$FlatMap.value')
f(2,5,1,1,'cats/effect/IO$$$Lambda$110.0x0000000800dc6848.apply')
f(1,6,182,1,'cats/effect/unsafe/WorkerThread.run')
f(2,6,177,1,'cats/effect/IOFiber.run')
f(3,6,132,1,'cats/effect/IOFiber.autoCedeR')
f(4,6,132,1,'cats/effect/IOFiber.runLoop')
f(5,10,7,2,'cats/effect/ArrayStack.push',7,0,0)
f(6,14,3,2,'cats/effect/ArrayStack.checkAndGrow',3,0,0)
f(5,17,2,2,'cats/effect/ByteStack$.push',2,0,0)
f(5,19,23,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply',1,0,0)
f(6,19,23,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1',1,0,0)
f(7,20,14,1,'cats/Eval$Defer.value')
f(8,21,13,1,'cats/Eval$.cats$Eval$$$evaluate',1,0,0)
f(9,22,12,1,'cats/Eval$.loop$1')
f(10,23,11,2,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply',11,0,0)
f(11,23,11,2,'cats/data/Chain$.loop$4$$anonfun$1',11,0,0)
f(12,26,8,2,'cats/effect/IO$$anon$2.map2Eval',8,0,0)
f(13,26,8,2,'cats/effect/IO$$anon$2.map2Eval',8,0,0)
f(14,26,8,2,'cats/effect/IO.flatMap',8,0,0)
f(15,26,8,2,'cats/effect/IO$FlatMap$.apply',8,0,0)
f(16,26,8,2,'cats/effect/IO$FlatMap.<init>',8,0,0)
f(7,34,8,1,'cats/Later.value')
f(8,36,2,2,'cats/data/Chain$$$Lambda$48.0x0000000800d92a60.apply',2,0,0)
f(9,36,2,2,'cats/data/Chain$.$anonfun$1',2,0,0)
f(10,36,2,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',2,0,0)
f(11,37,1,2,'scala/collection/mutable/ArrayBuffer.apply',1,0,0)
f(8,38,1,2,'scala/runtime/LazyVals$.CAS',1,0,0)
f(9,38,1,2,'sun/misc/Unsafe.compareAndSwapLong',1,0,0)
f(8,39,3,2,'scala/runtime/LazyVals$.setFlag',3,0,0)
f(9,39,2,2,'scala/runtime/LazyVals$.CAS',2,0,0)
f(10,39,2,2,'sun/misc/Unsafe.compareAndSwapLong',2,0,0)
f(9,41,1,2,'scala/runtime/LazyVals$.STATE',1,0,0)
f(5,42,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(5,43,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,44,80,1,'cats/effect/IOFiber.succeeded')
f(6,53,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,54,4,2,'cats/effect/ByteStack$.pop',4,0,0)
f(7,55,3,2,'cats/effect/ByteStack$.peek',3,0,0)
f(6,58,1,1,'cats/effect/IO$$$Lambda$110.0x0000000800dc6848.apply')
f(6,59,10,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(7,59,10,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,59,10,1,'cats/Eval$FlatMap.value')
f(9,60,9,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,60,9,1,'cats/Eval$.loop$1')
f(11,60,1,1,'cats/Eval$$Lambda$51.0x0000000800d933b0.apply')
f(12,60,1,1,'cats/Eval.map$$anonfun$1')
f(13,60,1,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92fe0.apply')
f(11,61,6,2,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply',3,0,0)
f(12,63,4,2,'cats/data/Chain$.loop$4$$anonfun$1',4,0,0)
f(13,63,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(14,63,4,2,'cats/effect/IO$$anon$2.map2Eval',4,0,0)
f(15,63,4,2,'cats/effect/IO.flatMap',4,0,0)
f(16,63,4,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(17,64,3,2,'cats/effect/IO$FlatMap.<init>',3,0,0)
f(11,67,2,3,'itable stub')
f(6,69,10,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,69,10,1,'cats/effect/IOFiber.done',1,0,0)
f(8,69,10,1,'cats/effect/CallbackStack.apply',1,0,0)
f(9,69,1,2,'java/util/concurrent/atomic/AtomicReference.get',1,0,0)
f(9,70,9,1,'scala/runtime/function/JProcedure1.apply')
f(10,70,9,1,'scala/runtime/function/JProcedure1.apply')
f(11,70,9,1,'cats/effect/IO$$Lambda$106.0x0000000800dbfad0.applyVoid')
f(12,70,9,1,'cats/effect/IO.$anonfun$6')
f(13,70,9,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,70,9,1,'cats/effect/kernel/Outcome.fold$')
f(15,70,9,1,'cats/effect/kernel/Outcome.fold')
f(16,70,9,1,'scala/runtime/function/JProcedure1.apply')
f(17,70,9,1,'scala/runtime/function/JProcedure1.apply')
f(18,70,9,1,'cats/effect/IO$$Lambda$115.0x0000000800dc8000.applyVoid')
f(19,70,9,1,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(20,71,8,1,'scala/runtime/function/JProcedure1.apply')
f(21,71,8,1,'scala/runtime/function/JProcedure1.apply')
f(22,71,8,1,'cats/effect/IO$$Lambda$105.0x0000000800dbf040.applyVoid')
f(23,71,8,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,71,8,1,'scala/runtime/function/JProcedure1.apply')
f(25,71,8,1,'scala/runtime/function/JProcedure1.apply')
f(26,71,8,1,'cats/effect/IOPlatform$$Lambda$102.0x0000000800dbe570.applyVoid')
f(27,71,8,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,71,8,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,71,8,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,71,8,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,71,8,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,71,8,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,71,8,1,'jdk/internal/misc/Unsafe.unpark')
f(34,71,1,4,'ThreadsListHandle::~ThreadsListHandle()')
f(34,72,7,3,'pthread_cond_signal')
f(35,72,7,5,'entry_SYSCALL_64_after_hwframe')
f(36,72,7,5,'do_syscall_64')
f(37,72,7,5,'__x64_sys_futex')
f(38,72,7,5,'do_futex')
f(39,72,7,5,'futex_wake')
f(40,72,7,5,'wake_up_q')
f(41,72,7,5,'_raw_spin_unlock_irqrestore')
f(6,79,20,1,'cats/instances/ListInstances$$anon$1$$Lambda$59.0x0000000800d98870.apply')
f(7,79,20,1,'cats/instances/ListInstances.cats$instances$ListInstances$$anon$1$$_$traverse$$anonfun$1')
f(8,79,20,1,'cats/data/Chain.toList')
f(9,79,20,1,'cats/data/Chain$ChainIterator.toList')
f(10,79,20,1,'scala/collection/IterableOnceOps.toList$')
f(11,79,20,1,'scala/collection/IterableOnceOps.toList')
f(12,79,20,1,'scala/collection/immutable/List.prependedAll')
f(13,82,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,83,10,1,'cats/data/Chain$ChainIterator.next')
f(14,83,10,2,'cats/data/Chain$ChainIterator.go$3',10,0,0)
f(15,89,4,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',4,0,0)
f(13,93,6,2,'scala/collection/immutable/$colon$colon.<init>',6,0,0)
f(14,98,1,2,'scala/runtime/Statics.releaseFence',1,0,0)
f(15,98,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d20000.invoke_MT',1,0,0)
f(16,98,1,2,'java/lang/invoke/Invokers.checkGenericType',1,0,0)
f(6,99,10,3,'itable stub')
f(6,109,15,1,'kyo/bench/CollectAllBench$$Lambda$60.0x0000000800d98c38.apply')
f(7,109,15,2,'kyo/bench/CollectAllBench.catsBench$$anonfun$1',8,0,0)
f(8,109,15,2,'scala/collection/AbstractIterable.sum',8,0,0)
f(9,109,15,2,'scala/collection/IterableOnceOps.sum$',8,0,0)
f(10,109,15,2,'scala/collection/IterableOnceOps.sum',8,0,0)
f(11,109,15,2,'scala/collection/AbstractIterable.reduce',8,0,0)
f(12,109,15,2,'scala/collection/IterableOnceOps.reduce$',8,0,0)
f(13,109,15,2,'scala/collection/IterableOnceOps.reduce',8,0,0)
f(14,109,15,2,'scala/collection/AbstractIterable.reduceLeft',8,0,0)
f(15,109,15,2,'scala/collection/IterableOnceOps.reduceLeft$',8,0,0)
f(16,109,15,2,'scala/collection/IterableOnceOps.reduceLeft',8,0,0)
f(17,109,13,2,'scala/collection/IterableOnceOps$$Lambda$112.0x0000000800dc3070.apply',6,0,0)
f(18,109,13,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',6,0,0)
f(19,109,13,2,'scala/math/Numeric$IntIsIntegral$.plus',6,0,0)
f(20,109,12,2,'scala/runtime/BoxesRunTime.boxToInteger',5,0,0)
f(21,113,8,1,'java/lang/Integer.valueOf',1,0,0)
f(22,114,7,1,'java/lang/Integer.<init>')
f(23,114,7,1,'java/lang/Number.<init>')
f(20,121,1,2,'scala/runtime/BoxesRunTime.unboxToInt',1,0,0)
f(17,122,2,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',2,0,0)
f(5,124,10,2,'kyo/bench/CollectAllBench$$Lambda$43.0x0000000800d21000.apply',10,0,0)
f(5,134,4,3,'vtable stub')
f(3,138,45,1,'cats/effect/IOFiber.execR')
f(4,138,45,1,'cats/effect/IOFiber.runLoop')
f(5,138,3,2,'cats/effect/ArrayStack.push',3,0,0)
f(5,141,15,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply',2,0,0)
f(6,141,15,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1',2,0,0)
f(7,142,11,1,'cats/Eval$Defer.value')
f(8,143,10,1,'cats/Eval$.cats$Eval$$$evaluate')
f(9,143,10,1,'cats/Eval$.loop$1')
f(10,145,8,2,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply',8,0,0)
f(11,146,7,2,'cats/data/Chain$.loop$4$$anonfun$1',7,0,0)
f(12,150,3,2,'cats/effect/IO$$anon$2.map2Eval',3,0,0)
f(13,150,3,2,'cats/effect/IO$$anon$2.map2Eval',3,0,0)
f(14,150,3,2,'cats/effect/IO.flatMap',3,0,0)
f(15,150,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(16,150,3,2,'cats/effect/IO$FlatMap.<init>',3,0,0)
f(7,153,2,1,'cats/Later.value')
f(8,153,2,2,'cats/data/Chain$$$Lambda$48.0x0000000800d92a60.apply',2,0,0)
f(9,153,2,2,'cats/data/Chain$.$anonfun$1',2,0,0)
f(10,153,2,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',2,0,0)
f(11,153,2,2,'scala/collection/mutable/ArrayBuffer.apply',2,0,0)
f(7,155,1,3,'vtable stub')
f(5,156,15,1,'cats/effect/IOFiber.succeeded')
f(6,162,2,1,'cats/effect/IO$$$Lambda$110.0x0000000800dc6848.apply')
f(7,162,2,2,'cats/effect/IO$.map2Eval$$anonfun$1$$anonfun$1',1,0,0)
f(8,162,2,2,'cats/data/Chain$$$Lambda$58.0x0000000800d982c0.apply',1,0,0)
f(9,163,1,1,'cats/data/Chain$.loop$4$$anonfun$3$$anonfun$1')
f(10,163,1,1,'cats/data/Chain.concat')
f(11,163,1,1,'cats/data/Chain$.concat')
f(12,163,1,2,'cats/data/Chain$Append$.apply',1,0,0)
f(6,164,5,1,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.apply')
f(7,164,5,1,'cats/effect/IO$.cats$effect$IO$$anon$2$$_$map2Eval$$anonfun$1')
f(8,164,5,1,'cats/Eval$FlatMap.value')
f(9,165,4,1,'cats/Eval$.cats$Eval$$$evaluate')
f(10,165,4,1,'cats/Eval$.loop$1')
f(11,165,1,1,'cats/Eval$$Lambda$51.0x0000000800d933b0.apply')
f(12,165,1,1,'cats/Eval.map$$anonfun$1')
f(13,165,1,1,'cats/data/Chain$$$Lambda$50.0x0000000800d92fe0.apply')
f(14,165,1,2,'cats/data/Chain$.loop$4$$anonfun$2',1,0,0)
f(15,165,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(16,165,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(17,165,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(11,166,3,2,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply',1,0,0)
f(12,167,2,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(13,167,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(14,167,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(15,167,2,2,'cats/effect/IO.flatMap',2,0,0)
f(16,167,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(17,168,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(6,169,2,3,'itable stub')
f(5,171,8,2,'kyo/bench/CollectAllBench$$Lambda$43.0x0000000800d21000.apply',8,0,0)
f(5,179,4,3,'vtable stub')
f(2,183,5,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,183,5,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,183,5,1,'java/util/concurrent/locks/LockSupport.park')
f(5,183,5,1,'jdk/internal/misc/Unsafe.park')
f(6,184,1,3,'Unsafe_Park')
f(6,185,3,3,'[unknown]')
f(7,185,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,186,2,5,'entry_SYSCALL_64_after_hwframe')
f(9,186,2,5,'do_syscall_64')
f(10,186,1,5,'__x64_sys_futex')
f(11,186,1,5,'do_futex')
f(12,186,1,5,'futex_wait')
f(13,186,1,5,'futex_wait_queue_me')
f(14,186,1,5,'schedule')
f(15,186,1,5,'__schedule')
f(16,186,1,5,'finish_task_switch.isra.0')
f(10,187,1,5,'syscall_exit_to_user_mode')
f(11,187,1,5,'exit_to_user_mode_prepare')
f(12,187,1,5,'exit_to_user_mode_loop')
f(1,188,88,1,'java/lang/Thread.run')
f(2,188,88,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,188,88,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,188,88,1,'java/util/concurrent/FutureTask.run')
f(5,188,88,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,188,88,1,'java/util/concurrent/FutureTask.run')
f(7,188,88,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,188,88,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,188,88,1,'java/lang/reflect/Method.invoke')
f(10,188,88,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,188,88,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,188,88,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,188,88,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_Throughput')
f(14,188,88,1,'kyo/bench/jmh_generated/CollectAllBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,188,88,1,'kyo/bench/Bench.syncCats')
f(16,188,14,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,188,14,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,189,7,1,'cats/effect/IO.unsafeRunAsync',1,0,0)
f(19,189,7,1,'cats/effect/IO.unsafeRunFiber',1,0,0)
f(20,189,1,2,'cats/effect/unsafe/StripedHashtable.put',1,0,0)
f(21,189,1,2,'cats/effect/unsafe/ThreadSafeHashtable.put',1,0,0)
f(22,189,1,2,'cats/effect/unsafe/ThreadSafeHashtable.insert',1,0,0)
f(20,190,6,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,190,6,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,190,6,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,190,6,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,190,6,1,'jdk/internal/misc/Unsafe.unpark')
f(25,190,1,3,'Unsafe_Unpark')
f(26,190,1,4,'SafeThreadsListPtr::release_stable_list()')
f(25,191,5,3,'pthread_cond_signal')
f(26,191,5,5,'entry_SYSCALL_64_after_hwframe')
f(27,191,5,5,'do_syscall_64')
f(28,191,5,5,'__x64_sys_futex')
f(29,191,5,5,'do_futex')
f(30,191,5,5,'futex_wake')
f(31,191,5,5,'wake_up_q')
f(32,191,5,5,'_raw_spin_unlock_irqrestore')
f(18,196,6,1,'scala/concurrent/package$.blocking')
f(19,196,6,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,196,6,1,'cats/effect/IOPlatform$$Lambda$109.0x0000000800dc5f58.apply')
f(21,196,6,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,196,6,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,196,6,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,196,6,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,196,6,1,'jdk/internal/misc/Unsafe.park')
f(26,197,5,3,'[unknown]')
f(27,197,5,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,197,5,5,'entry_SYSCALL_64_after_hwframe')
f(29,197,5,5,'do_syscall_64')
f(30,197,4,5,'__x64_sys_futex')
f(31,197,1,5,'_copy_from_user')
f(31,198,3,5,'do_futex')
f(32,198,3,5,'futex_wait')
f(33,198,2,5,'futex_wait_queue_me')
f(34,198,2,5,'schedule')
f(35,198,2,5,'__schedule')
f(36,198,2,5,'finish_task_switch.isra.0')
f(33,200,1,5,'hrtimer_init_sleeper')
f(30,201,1,5,'syscall_exit_to_user_mode_prepare')
f(16,202,74,1,'kyo/bench/CollectAllBench.catsBench')
f(17,204,48,1,'cats/Traverse$ToTraverseOps$$anon$3.sequence',3,0,0)
f(18,204,48,1,'cats/Traverse$Ops.sequence$',3,0,0)
f(19,204,48,1,'cats/Traverse$Ops.sequence',3,0,0)
f(20,204,48,1,'cats/instances/ListInstances$$anon$1.sequence',3,0,0)
f(21,204,48,1,'cats/Traverse.sequence$',3,0,0)
f(22,204,48,1,'cats/Traverse.sequence',3,0,0)
f(23,204,48,1,'cats/instances/ListInstances$$anon$1.traverse',3,0,0)
f(24,204,48,1,'cats/instances/ListInstances$$anon$1.traverse',3,0,0)
f(25,204,27,1,'cats/data/Chain$.traverseViaChain')
f(26,204,6,1,'cats/Eval$FlatMap.value')
f(27,204,6,1,'cats/Eval$.cats$Eval$$$evaluate')
f(28,204,6,1,'cats/Eval$.loop$1')
f(29,204,1,1,'cats/Eval$$anon$2$$Lambda$57.0x0000000800d98000.apply')
f(30,204,1,1,'cats/Eval.cats$Eval$$anon$2$$_$$lessinit$greater$$anonfun$2')
f(31,204,1,1,'cats/Eval$$anon$1$$Lambda$53.0x0000000800d97000.apply')
f(29,205,2,2,'cats/data/Chain$$$Lambda$49.0x0000000800d92d20.apply',2,0,0)
f(30,205,2,2,'cats/data/Chain$.loop$4$$anonfun$1',2,0,0)
f(31,205,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(32,205,1,2,'cats/effect/IO$$anon$2.map2Eval',1,0,0)
f(33,205,1,2,'cats/effect/IO.flatMap',1,0,0)
f(34,205,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(31,206,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(32,206,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(33,206,1,2,'cats/data/Chain$$$Lambda$54.0x0000000800d975f0.<init>',1,0,0)
f(29,207,3,1,'cats/data/Chain$$$Lambda$52.0x0000000800d93780.apply')
f(30,208,2,2,'cats/data/Chain$.loop$4$$anonfun$3',2,0,0)
f(31,208,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(32,208,2,2,'cats/effect/IO$$anon$2.map2Eval',2,0,0)
f(33,208,1,2,'cats/Eval$.now',1,0,0)
f(34,208,1,2,'cats/Now$.apply',1,0,0)
f(33,209,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(34,209,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(35,209,1,2,'cats/effect/IO$$anon$2$$Lambda$55.0x0000000800d97ba0.<init>',1,0,0)
f(26,210,21,1,'cats/data/Chain$.loop$4')
f(27,210,1,2,'cats/Eval$.defer',1,0,0)
f(28,210,1,2,'cats/Eval$$anon$5.<init>',1,0,0)
f(29,210,1,2,'cats/Eval$Defer.<init>',1,0,0)
f(27,211,1,2,'cats/Eval$.later',1,0,0)
f(28,211,1,2,'cats/Later.<init>',1,0,0)
f(27,212,4,2,'cats/Eval.map',4,0,0)
f(28,212,3,2,'cats/Eval.flatMap',3,0,0)
f(28,215,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(29,215,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(30,215,1,2,'cats/Eval$$Lambda$51.0x0000000800d933b0.<init>',1,0,0)
f(27,216,11,1,'cats/data/Chain$.loop$4')
f(28,217,1,2,'cats/Eval$.later',1,0,0)
f(29,217,1,2,'cats/Later.<init>',1,0,0)
f(30,217,1,2,'cats/Eval$Leaf.<init>',1,0,0)
f(31,217,1,2,'cats/Eval.<init>',1,0,0)
f(28,218,9,2,'cats/Eval.flatMap',9,0,0)
f(29,219,8,2,'cats/Eval$$anon$1.<init>',8,0,0)
f(27,227,3,2,'cats/kernel/instances/StaticMethods$WrappedIndexedSeq.apply',3,0,0)
f(27,230,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d94c00.linkToTargetMethod',1,0,0)
f(28,230,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d94400.newInvokeSpecial',1,0,0)
f(29,230,1,2,'cats/data/Chain$$$Lambda$47.0x0000000800d924a0.<init>',1,0,0)
f(30,230,1,2,'java/lang/Object.<init>',1,0,0)
f(25,231,21,1,'scala/collection/mutable/AbstractBuffer.$plus$plus$eq',3,0,0)
f(26,231,21,1,'scala/collection/mutable/Growable.$plus$plus$eq$',3,0,0)
f(27,231,21,1,'scala/collection/mutable/Growable.$plus$plus$eq',3,0,0)
f(28,231,21,1,'scala/collection/mutable/ArrayBuffer.addAll',3,0,0)
f(29,231,21,1,'scala/collection/mutable/ArrayBuffer.addAll',3,0,0)
f(30,231,21,1,'scala/collection/mutable/Growable.addAll$',3,0,0)
f(31,231,21,1,'scala/collection/mutable/Growable.addAll',3,0,0)
f(32,233,2,1,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext')
f(33,233,2,1,'scala/collection/immutable/List.isEmpty')
f(32,235,2,1,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next')
f(33,235,2,1,'scala/collection/immutable/$colon$colon.tail')
f(34,236,1,2,'scala/collection/immutable/$colon$colon.tail',1,0,0)
f(35,236,1,2,'scala/collection/immutable/$colon$colon.next',1,0,0)
f(32,237,15,1,'scala/collection/mutable/ArrayBuffer.addOne',1,0,0)
f(33,238,14,1,'scala/collection/mutable/ArrayBuffer.addOne')
f(34,240,9,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',9,0,0)
f(35,243,2,2,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize',2,0,0)
f(36,244,1,2,'scala/collection/mutable/ArrayBuffer$.resizeUp',1,0,0)
f(35,245,2,2,'scala/collection/mutable/ArrayBuffer.array_$eq',2,0,0)
f(35,247,2,2,'scala/collection/mutable/ArrayBuffer.size0',2,0,0)
f(34,249,3,2,'scala/collection/mutable/ArrayBuffer.update',3,0,0)
f(17,252,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(18,252,4,2,'java/lang/invoke/LambdaForm$MH.0x0000000800c02400.invoke',4,0,0)
f(17,256,12,1,'scala/collection/AbstractIterable.toList')
f(18,256,12,1,'scala/collection/IterableOnceOps.toList$')
f(19,256,12,1,'scala/collection/IterableOnceOps.toList')
f(20,256,12,1,'scala/collection/immutable/List.prependedAll')
f(21,259,1,2,'cats/data/Chain$ChainIterator.hasNext',1,0,0)
f(22,259,1,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.hasNext',1,0,0)
f(21,260,7,2,'scala/collection/immutable/$colon$colon.<init>',7,0,0)
f(22,265,2,2,'scala/runtime/Statics.releaseFence',2,0,0)
f(23,265,2,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d20000.invoke_MT',2,0,0)
f(24,266,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d3c000.invokeStatic',1,0,0)
f(21,267,1,2,'scala/collection/immutable/NewVectorIterator.next',1,0,0)
f(17,268,7,2,'scala/collection/immutable/Range.map',7,0,0)
f(18,268,1,2,'kyo/bench/CollectAllBench$$Lambda$39.0x0000000800cbf248.apply',1,0,0)
f(19,268,1,2,'kyo/bench/CollectAllBench.$anonfun$adapted$2',1,0,0)
f(20,268,1,2,'kyo/bench/CollectAllBench.$anonfun$3',1,0,0)
f(21,268,1,2,'cats/effect/IO$.apply',1,0,0)
f(22,268,1,2,'cats/effect/IO$.delay',1,0,0)
f(23,268,1,2,'cats/effect/IO$Delay$.apply',1,0,0)
f(24,268,1,2,'cats/effect/IO$Delay.<init>',1,0,0)
f(25,268,1,2,'cats/effect/IO.<init>',1,0,0)
f(26,268,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(27,268,1,2,'java/lang/Object.<init>',1,0,0)
f(18,269,3,2,'scala/collection/SeqFactory$Delegate.newBuilder',3,0,0)
f(18,272,1,2,'scala/collection/immutable/Range.iterator',1,0,0)
f(18,273,2,2,'scala/collection/immutable/VectorBuilder.addOne',2,0,0)
f(19,273,2,2,'scala/collection/immutable/VectorBuilder.addOne',2,0,0)
f(20,274,1,2,'scala/collection/immutable/VectorBuilder.advance',1,0,0)
f(17,275,1,2,'scala/runtime/RichInt$.until$extension',1,0,0)
f(18,275,1,2,'scala/collection/immutable/Range$Exclusive.<init>',1,0,0)
f(19,275,1,2,'scala/collection/immutable/Range.<init>',1,0,0)
f(20,275,1,2,'scala/collection/immutable/Range.longLength',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: 544px}
</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(34);
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,17814,3,'all')
f(1,0,16435,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,16435,1,'cats/effect/IOFiber.run')
f(3,0,4,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,4,1,'cats/effect/IOFiber.succeeded')
f(5,0,4,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,0,4,1,'cats/effect/IOFiber.done')
f(7,0,3,1,'cats/effect/CallbackStack.apply')
f(8,0,3,1,'scala/runtime/function/JProcedure1.apply')
f(9,0,3,1,'scala/runtime/function/JProcedure1.apply')
f(10,0,3,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(11,0,3,1,'cats/effect/IO.$anonfun$6')
f(12,0,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,0,1,1,'cats/effect/kernel/Outcome.fold$')
f(14,0,1,1,'cats/effect/kernel/Outcome.fold')
f(15,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(16,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,0,1,1,'cats/effect/IO$$Lambda$121.0x0000000800d80408.applyVoid')
f(18,0,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(19,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(20,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,0,1,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(22,0,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(23,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(24,0,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,0,1,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(26,0,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(27,0,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(28,0,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(29,0,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(30,0,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(31,0,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(32,0,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(33,0,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(12,1,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,1,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,1,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,1,2,2,'cats.effect.IO$$Lambda$120+0x0000000800d80000')
f(7,3,1,1,'cats/effect/IO$.pure')
f(8,3,1,1,'cats/effect/IO$Pure$.apply')
f(9,3,1,2,'cats.effect.IO$Pure')
f(3,4,15902,1,'cats/effect/IOFiber.autoCedeR')
f(4,4,15902,1,'cats/effect/IOFiber.runLoop')
f(5,4,1551,2,'cats.effect.IOFiber$$anon$1')
f(5,1555,6613,1,'cats/effect/IOFiber.succeeded')
f(6,1555,6613,1,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d77168.apply')
f(7,1555,6613,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,1555,6613,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,1555,1440,1,'cats/effect/IO.flatMap')
f(10,1555,1440,1,'cats/effect/IO$FlatMap$.apply')
f(11,1555,1440,2,'cats.effect.IO$FlatMap')
f(9,2995,3834,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,2995,2818,1,'cats/effect/kernel/Ref.flatModify')
f(11,2995,1391,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,2995,1391,1,'cats/effect/IO$$anon$2.uncancelable')
f(13,2995,1391,1,'cats/effect/IO$.uncancelable')
f(14,2995,1391,1,'cats/effect/IO$Uncancelable$.apply')
f(15,2995,1391,2,'cats.effect.IO$Uncancelable')
f(11,4386,1427,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,4386,1427,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,4386,1427,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,4386,1427,2,'cats.effect.kernel.Ref$$Lambda$102+0x0000000800d76d98')
f(10,5813,1016,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,5813,1016,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,5813,1016,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,5813,1016,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$101+0x0000000800d769c8')
f(9,6829,1339,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,6829,1339,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d78000.newInvokeSpecial')
f(11,6829,1339,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,6829,1339,2,'kyo.bench.CountdownLatchBench$$Lambda$103+0x0000000800d77168')
f(5,8168,4207,1,'cats/effect/kernel/Ref$$Lambda$102.0x0000000800d76d98.apply')
f(6,8168,4207,1,'cats/effect/kernel/Ref.flatModify$$anonfun$1')
f(7,8168,1388,1,'cats/effect/IO$$anon$2.flatten')
f(8,8168,1388,1,'cats/FlatMap.flatten$')
f(9,8168,1388,1,'cats/FlatMap.flatten')
f(10,8168,1388,1,'cats/effect/IO$$anon$2.flatMap')
f(11,8168,1388,1,'cats/effect/IO$$anon$2.flatMap')
f(12,8168,1388,1,'cats/effect/IO.flatMap')
f(13,8168,1388,1,'cats/effect/IO$FlatMap$.apply')
f(14,8168,1388,2,'cats.effect.IO$FlatMap')
f(7,9556,2819,1,'cats/effect/kernel/SyncRef.modify')
f(8,9556,1407,1,'cats/effect/IO$$anon$2.delay')
f(9,9556,1407,1,'cats/effect/IO$$anon$2.delay')
f(10,9556,1407,1,'cats/effect/IO$.apply')
f(11,9556,1407,1,'cats/effect/IO$.delay')
f(12,9556,1407,1,'cats/effect/IO$Delay$.apply')
f(13,9556,1407,2,'cats.effect.IO$Delay')
f(8,10963,1412,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,10963,1412,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,10963,1412,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,10963,1412,2,'cats.effect.kernel.SyncRef$$Lambda$107+0x0000000800d7cf80')
f(5,12375,3531,1,'cats/effect/kernel/SyncRef$$Lambda$107.0x0000000800d7cf80.apply')
f(6,12375,3531,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,12375,3531,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,12375,3531,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$101.0x0000000800d769c8.apply')
f(9,12375,3531,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(10,12375,740,1,'cats/effect/IO$$anon$2.unit')
f(11,12375,740,1,'cats/Applicative.unit$')
f(12,12375,740,1,'cats/Applicative.unit')
f(13,12375,740,1,'cats/effect/IO$$anon$2.pure')
f(14,12375,740,1,'cats/effect/IO$$anon$2.pure')
f(15,12375,740,1,'cats/effect/IO$.pure')
f(16,12375,740,1,'cats/effect/IO$Pure$.apply')
f(17,12375,740,2,'cats.effect.IO$Pure')
f(10,13115,1,1,'cats/effect/IODeferred.complete')
f(11,13115,1,1,'cats/effect/IODeferred.complete')
f(12,13115,1,1,'cats/effect/IO$.apply')
f(13,13115,1,1,'cats/effect/IO$.delay')
f(14,13115,1,1,'cats/effect/IO$Delay$.apply')
f(15,13115,1,2,'cats.effect.IO$Delay')
f(10,13116,1375,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,13116,1375,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,14491,1,1,'cats/syntax/AllSyntaxBinCompat.toFunctorOps')
f(11,14491,1,1,'cats/Functor$ToFunctorOps.toFunctorOps$')
f(12,14491,1,1,'cats/Functor$ToFunctorOps.toFunctorOps')
f(13,14491,1,2,'cats.Functor$ToFunctorOps$$anon$4')
f(10,14492,1414,1,'scala/Tuple2$.apply')
f(11,14492,1414,2,'scala.Tuple2')
f(3,15906,19,1,'cats/effect/IOFiber.cedeR')
f(4,15906,17,1,'cats/effect/IOFiber.runLoop')
f(5,15906,1,1,'cats/effect/IO$$$Lambda$92.0x0000000800d73100.apply')
f(6,15906,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,15906,1,2,'cats.effect.IODeferred')
f(5,15907,1,1,'cats/effect/IO$$$Lambda$99.0x0000000800d75e48.apply')
f(6,15907,1,1,'cats/effect/IO$.ref$$anonfun$1')
f(7,15907,1,1,'cats/effect/kernel/Ref$.unsafe')
f(8,15907,1,1,'cats/effect/kernel/SyncRef.<init>')
f(9,15907,1,2,'java.util.concurrent.atomic.AtomicReference')
f(5,15908,1,1,'cats/effect/IO$$anon$3$$Lambda$111.0x0000000800d7e560.apply')
f(6,15908,1,1,'cats/effect/IO$$anon$3.apply$$anonfun$1')
f(7,15908,1,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,15908,1,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,15908,1,1,'cats/effect/IO$.uncancelable')
f(10,15908,1,1,'cats/effect/IO$Uncancelable$.apply')
f(11,15908,1,2,'cats.effect.IO$Uncancelable')
f(5,15909,12,1,'cats/effect/IO$$anon$3$$Lambda$112.0x0000000800d7ee20.apply')
f(6,15909,12,1,'cats/effect/IO$$anon$3.apply$$anonfun$1$$anonfun$1')
f(7,15909,12,1,'cats/effect/IODeferred$$Lambda$97.0x0000000800d75088.apply')
f(8,15909,12,1,'cats/effect/IODeferred.$anonfun$1')
f(9,15909,12,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,15909,12,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,15909,12,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,15909,12,2,'cats.effect.IODeferred$$Lambda$113+0x0000000800d7f1f0')
f(5,15921,1,1,'cats/effect/IODeferred$$Lambda$113.0x0000000800d7f1f0.apply')
f(6,15921,1,1,'cats/effect/IODeferred.$anonfun$1$$anonfun$1')
f(7,15921,1,1,'cats/effect/CallbackStack.push')
f(8,15921,1,2,'cats.effect.CallbackStack')
f(5,15922,1,1,'cats/effect/IOFiber.succeeded')
f(6,15922,1,1,'cats/effect/std/CountDownLatch$$$Lambda$95.0x0000000800d74680.apply')
f(7,15922,1,1,'cats/effect/std/CountDownLatch$.apply$$anonfun$1')
f(8,15922,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,15922,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,15922,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,15922,1,2,'cats.effect.std.CountDownLatch$$$Lambda$100+0x0000000800d76108')
f(4,15923,2,1,'cats/effect/IOFiber.succeeded')
f(5,15923,2,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13280.apply')
f(6,15923,2,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,15923,2,1,'kyo/bench/CountdownLatchBench.catsBench')
f(8,15923,2,1,'cats/effect/std/CountDownLatch$.apply')
f(9,15923,1,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(10,15923,1,1,'cats/FlatMap$Ops.flatMap$')
f(11,15923,1,1,'cats/FlatMap$Ops.flatMap')
f(12,15923,1,1,'cats/effect/IO$$anon$2.flatMap')
f(13,15923,1,1,'cats/effect/IO$$anon$2.flatMap')
f(14,15923,1,1,'cats/effect/IO.flatMap')
f(15,15923,1,1,'cats/effect/IO$FlatMap$.apply')
f(16,15923,1,2,'cats.effect.IO$FlatMap')
f(9,15924,1,1,'cats/effect/std/CountDownLatch$State$.initial')
f(10,15924,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,15924,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d78000.newInvokeSpecial')
f(12,15924,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,15924,1,2,'cats.effect.std.CountDownLatch$State$$$Lambda$94+0x0000000800d73e30')
f(3,15925,510,1,'cats/effect/IOFiber.execR')
f(4,15925,3,1,'cats/effect/ArrayStack.init')
f(5,15925,3,2,'java.lang.Object[]')
f(4,15928,218,1,'cats/effect/ByteStack$.create')
f(5,15928,218,2,'int[]')
f(4,16146,289,1,'cats/effect/IOFiber.runLoop')
f(5,16146,24,2,'cats.effect.IOFiber$$anon$1')
f(5,16170,115,1,'cats/effect/IOFiber.succeeded')
f(6,16170,115,1,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d77168.apply')
f(7,16170,115,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,16170,115,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,16170,30,1,'cats/effect/IO.flatMap')
f(10,16170,30,1,'cats/effect/IO$FlatMap$.apply')
f(11,16170,30,2,'cats.effect.IO$FlatMap')
f(9,16200,62,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,16200,49,1,'cats/effect/kernel/Ref.flatModify')
f(11,16200,29,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,16200,29,1,'cats/effect/IO$$anon$2.uncancelable')
f(13,16200,29,1,'cats/effect/IO$.uncancelable')
f(14,16200,29,1,'cats/effect/IO$Uncancelable$.apply')
f(15,16200,29,2,'cats.effect.IO$Uncancelable')
f(11,16229,20,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,16229,20,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,16229,20,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,16229,20,2,'cats.effect.kernel.Ref$$Lambda$102+0x0000000800d76d98')
f(10,16249,13,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,16249,13,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,16249,13,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,16249,13,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$101+0x0000000800d769c8')
f(9,16262,23,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,16262,23,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d78000.newInvokeSpecial')
f(11,16262,23,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,16262,23,2,'kyo.bench.CountdownLatchBench$$Lambda$103+0x0000000800d77168')
f(5,16285,90,1,'cats/effect/kernel/Ref$$Lambda$102.0x0000000800d76d98.apply')
f(6,16285,90,1,'cats/effect/kernel/Ref.flatModify$$anonfun$1')
f(7,16285,34,1,'cats/effect/IO$$anon$2.flatten')
f(8,16285,34,1,'cats/FlatMap.flatten$')
f(9,16285,34,1,'cats/FlatMap.flatten')
f(10,16285,34,1,'cats/effect/IO$$anon$2.flatMap')
f(11,16285,34,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16285,34,1,'cats/effect/IO.flatMap')
f(13,16285,34,1,'cats/effect/IO$FlatMap$.apply')
f(14,16285,34,2,'cats.effect.IO$FlatMap')
f(7,16319,56,1,'cats/effect/kernel/SyncRef.modify')
f(8,16319,26,1,'cats/effect/IO$$anon$2.delay')
f(9,16319,26,1,'cats/effect/IO$$anon$2.delay')
f(10,16319,26,1,'cats/effect/IO$.apply')
f(11,16319,26,1,'cats/effect/IO$.delay')
f(12,16319,26,1,'cats/effect/IO$Delay$.apply')
f(13,16319,26,2,'cats.effect.IO$Delay')
f(8,16345,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,16345,30,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,16345,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,16345,30,2,'cats.effect.kernel.SyncRef$$Lambda$107+0x0000000800d7cf80')
f(5,16375,60,1,'cats/effect/kernel/SyncRef$$Lambda$107.0x0000000800d7cf80.apply')
f(6,16375,60,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,16375,60,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,16375,60,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$101.0x0000000800d769c8.apply')
f(9,16375,60,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(10,16375,14,1,'cats/effect/IO$$anon$2.unit')
f(11,16375,14,1,'cats/Applicative.unit$')
f(12,16375,14,1,'cats/Applicative.unit')
f(13,16375,14,1,'cats/effect/IO$$anon$2.pure')
f(14,16375,14,1,'cats/effect/IO$$anon$2.pure')
f(15,16375,14,1,'cats/effect/IO$.pure')
f(16,16375,14,1,'cats/effect/IO$Pure$.apply')
f(17,16375,14,2,'cats.effect.IO$Pure')
f(10,16389,23,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,16389,23,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,16412,23,1,'scala/Tuple2$.apply')
f(11,16412,23,2,'scala.Tuple2')
f(1,16435,1376,1,'java/lang/Thread.run')
f(2,16435,1376,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,16435,1376,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,16435,1376,1,'java/util/concurrent/FutureTask.run')
f(5,16435,1376,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,16435,1376,1,'java/util/concurrent/FutureTask.run')
f(7,16435,1376,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,16435,1376,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,16435,1376,1,'java/lang/reflect/Method.invoke')
f(10,16435,1376,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,16435,1376,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,16435,1376,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,16435,1376,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_Throughput')
f(14,16435,1375,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,16435,1375,1,'kyo/bench/Bench.forkCats')
f(16,16435,55,1,'cats/effect/IO.flatMap')
f(17,16435,55,1,'cats/effect/IO$FlatMap$.apply')
f(18,16435,55,2,'cats.effect.IO$FlatMap')
f(16,16490,1224,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,16490,1178,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,16490,743,1,'cats/effect/IO.unsafeRunAsync')
f(19,16490,609,1,'cats/effect/IO.unsafeRunFiber')
f(20,16490,103,2,'cats.effect.IOFiber')
f(20,16593,16,5,'cats.effect.IOFiber')
f(20,16609,355,1,'cats/effect/IOFiber.<init>')
f(21,16609,132,1,'cats/effect/ArrayStack$.apply')
f(22,16609,132,2,'cats.effect.ArrayStack')
f(21,16741,9,1,'cats/effect/CallbackStack$.apply')
f(22,16741,9,2,'cats.effect.CallbackStack')
f(21,16750,108,1,'cats/effect/IO$.async')
f(22,16750,59,2,'cats.effect.IO$$anon$4')
f(22,16809,49,1,'cats/effect/IO$IOCont$.apply')
f(23,16809,49,2,'cats.effect.IO$IOCont')
f(21,16858,102,1,'cats/effect/IO$.uncancelable')
f(22,16858,102,1,'cats/effect/IO$Uncancelable$.apply')
f(23,16858,102,2,'cats.effect.IO$Uncancelable')
f(21,16960,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,16960,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,16960,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,16960,4,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5e028')
f(20,16964,70,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,16964,70,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,16964,70,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,16964,70,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,16964,70,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,17034,65,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,17034,65,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,17034,65,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,17034,65,2,'cats.effect.IO$$Lambda$88+0x0000000800d5d1f0')
f(19,17099,134,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,17099,134,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,17099,134,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,17099,11,2,'cats.effect.IO$$Lambda$85+0x0000000800d57a08')
f(22,17110,53,2,'cats.effect.IO$$Lambda$86+0x0000000800d5c000')
f(22,17163,70,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c408')
f(18,17233,66,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17299,62,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17299,62,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17299,62,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17299,62,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57600')
f(18,17361,249,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17361,249,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17361,63,2,'java.lang.Object[]')
f(20,17424,76,2,'java.util.concurrent.locks.ReentrantLock')
f(20,17500,46,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,17500,46,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,17546,64,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,17546,64,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,17546,64,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17610,28,1,'scala/concurrent/package$.blocking')
f(19,17610,28,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17610,28,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5eff8.apply')
f(21,17610,28,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17610,28,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17610,28,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17610,28,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17638,30,1,'scala/util/Either.fold')
f(19,17638,30,1,'cats/effect/IOPlatform$$Lambda$123.0x0000000800d80bd8.apply')
f(20,17638,30,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17638,30,1,'scala/Some$.apply')
f(22,17638,30,2,'scala.Some')
f(17,17668,46,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17668,46,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17668,46,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17668,46,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17668,46,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17668,46,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17668,46,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17668,46,2,'scala.concurrent.duration.FiniteDuration')
f(16,17714,96,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,17714,96,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,17714,96,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,17714,96,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13280')
f(14,17810,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,17810,1,1,'java/lang/StringBuilder.<init>')
f(16,17810,1,1,'java/lang/AbstractStringBuilder.<init>')
f(17,17810,1,2,'byte[]')
f(1,17811,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17811,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17811,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17811,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17811,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17811,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17811,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17811,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17811,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17811,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17811,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,293,3,'all')
f(1,0,3,3,'[unknown_Java]')
f(2,0,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(2,1,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,2,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(1,3,288,1,'cats/effect/unsafe/WorkerThread.run')
f(2,3,281,1,'cats/effect/IOFiber.run')
f(3,3,2,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,3,2,1,'cats/effect/IOFiber.succeeded')
f(5,3,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,3,2,1,'cats/effect/IOFiber.done')
f(7,3,2,1,'cats/effect/CallbackStack.apply')
f(8,3,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,3,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,3,2,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(11,3,2,1,'cats/effect/IO.$anonfun$6')
f(12,3,2,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,3,2,2,'cats/effect/kernel/Outcome.fold$',1,0,0)
f(14,3,2,2,'cats/effect/kernel/Outcome.fold',1,0,0)
f(15,3,2,2,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(16,3,2,2,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(17,3,2,2,'cats/effect/IO$$Lambda$121.0x0000000800d80408.applyVoid',1,0,0)
f(18,3,2,2,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(19,3,1,2,'cats/effect/unsafe/StripedHashtable.remove',1,0,0)
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$87.0x0000000800d5c408.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$84.0x0000000800d57600.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,'pthread_cond_signal')
f(34,4,1,5,'entry_SYSCALL_64_after_hwframe')
f(35,4,1,5,'do_syscall_64')
f(36,4,1,5,'__x64_sys_futex')
f(37,4,1,5,'do_futex')
f(38,4,1,5,'futex_wake')
f(39,4,1,5,'wake_up_q')
f(40,4,1,5,'_raw_spin_unlock_irqrestore')
f(3,5,274,1,'cats/effect/IOFiber.autoCedeR')
f(4,5,274,1,'cats/effect/IOFiber.runLoop')
f(5,55,2,2,'cats/effect/ArrayStack.push',2,0,0)
f(5,57,1,2,'cats/effect/ContState.<init>',1,0,0)
f(5,58,7,2,'cats/effect/IO$.apply',7,0,0)
f(5,65,3,6,'cats/effect/IO$Delay.tag',0,3,0)
f(5,68,21,6,'cats/effect/IO$FlatMap.tag',0,21,0)
f(5,89,6,6,'cats/effect/IO$Pure.tag',0,6,0)
f(5,95,7,6,'cats/effect/IO$Uncancelable.tag',0,7,0)
f(5,102,2,1,'cats/effect/IODeferred$$Lambda$117.0x0000000800d7abd0.apply')
f(6,102,2,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,102,2,1,'cats/effect/CallbackStack.apply')
f(8,102,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,102,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,102,2,1,'cats/effect/IOFiber$$Lambda$110.0x0000000800d7d810.applyVoid')
f(11,102,2,1,'cats/effect/IOFiber.$anonfun$2')
f(12,102,2,1,'cats/effect/IOFiber.stateLoop$1')
f(13,102,2,1,'cats/effect/IOFiber.loop$1')
f(14,102,2,1,'cats/effect/IOFiber.scheduleFiber')
f(15,102,2,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,102,2,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,102,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,102,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,102,2,1,'jdk/internal/misc/Unsafe.unpark')
f(20,102,2,3,'pthread_cond_signal')
f(21,102,2,5,'entry_SYSCALL_64_after_hwframe')
f(22,102,2,5,'do_syscall_64')
f(23,102,2,5,'__x64_sys_futex')
f(24,102,2,5,'do_futex')
f(25,102,2,5,'futex_wake')
f(26,102,2,5,'wake_up_q')
f(27,102,2,5,'_raw_spin_unlock_irqrestore')
f(5,104,42,2,'cats/effect/IOFiber.rescheduleFiber',42,0,0)
f(6,104,42,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',42,0,0)
f(7,109,37,2,'cats/effect/unsafe/WorkerThread.reschedule',37,0,0)
f(8,132,14,2,'cats/effect/unsafe/LocalQueue.isEmpty',14,0,0)
f(9,136,10,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',10,0,0)
f(10,138,8,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',8,0,0)
f(5,146,81,1,'cats/effect/IOFiber.succeeded')
f(6,191,2,2,'cats/effect/ArrayStack.pop',2,0,0)
f(6,193,14,2,'cats/effect/ByteStack$.pop',14,0,0)
f(7,198,9,2,'cats/effect/ByteStack$.peek',9,0,0)
f(6,207,20,2,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d77168.apply',20,0,0)
f(7,208,19,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',19,0,0)
f(8,208,19,2,'kyo/bench/CountdownLatchBench.iterate$1',19,0,0)
f(9,209,10,2,'cats/effect/IO.flatMap',10,0,0)
f(10,209,10,2,'cats/effect/IO$FlatMap$.apply',10,0,0)
f(11,218,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(9,219,4,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release',4,0,0)
f(10,219,4,2,'cats/effect/kernel/Ref.flatModify',4,0,0)
f(11,219,2,2,'cats/effect/IO$$anon$2.uncancelable',2,0,0)
f(12,219,2,2,'cats/effect/IO$$anon$2.uncancelable',2,0,0)
f(13,219,2,2,'cats/effect/IO$.uncancelable',2,0,0)
f(14,219,2,2,'cats/effect/IO$Uncancelable$.apply',2,0,0)
f(11,221,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(12,221,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(13,221,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(9,223,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(10,223,4,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d78000.newInvokeSpecial',4,0,0)
f(11,223,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',3,0,0)
f(11,226,1,2,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d77168.<init>',1,0,0)
f(5,227,18,2,'cats/effect/kernel/Ref$$Lambda$102.0x0000000800d76d98.apply',17,0,0)
f(6,228,17,2,'cats/effect/kernel/Ref.flatModify$$anonfun$1',16,0,0)
f(7,228,11,2,'cats/effect/IO$$anon$2.flatten',10,0,0)
f(8,228,11,2,'cats/FlatMap.flatten$',10,0,0)
f(9,229,10,2,'cats/FlatMap.flatten',9,0,0)
f(10,232,7,2,'cats/effect/IO$$anon$2.flatMap',6,0,0)
f(11,232,7,2,'cats/effect/IO$$anon$2.flatMap',6,0,0)
f(12,234,5,2,'cats/effect/IO.flatMap',4,0,0)
f(13,234,5,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(14,235,4,2,'cats/effect/IO$FlatMap.<init>',3,0,0)
f(15,237,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(16,237,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(17,237,1,4,'MemAllocator::allocate() const')
f(18,237,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(19,237,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(15,238,1,2,'cats/effect/IO.<init>',1,0,0)
f(16,238,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(17,238,1,2,'java/lang/Object.<init>',1,0,0)
f(7,239,6,2,'cats/effect/kernel/SyncRef.modify',6,0,0)
f(8,239,6,2,'cats/effect/IO$$anon$2.delay',6,0,0)
f(5,245,22,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',22,0,0)
f(6,246,21,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',21,0,0)
f(7,246,3,2,'cats/effect/IOFiber$$Lambda$110.0x0000000800d7d810.<init>',3,0,0)
f(7,249,18,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',18,0,0)
f(5,267,12,3,'vtable stub')
f(3,279,1,1,'cats/effect/IOFiber.cedeR')
f(4,279,1,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,'Unsafe_Unpark')
f(12,279,1,4,'ThreadsListHandle::cv_internal_thread_to_JavaThread(_jobject*, JavaThread**, oopDesc**)')
f(3,280,4,1,'cats/effect/IOFiber.execR')
f(4,280,4,1,'cats/effect/IOFiber.runLoop')
f(5,281,1,2,'cats/effect/IOFiber.rescheduleFiber',1,0,0)
f(6,281,1,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',1,0,0)
f(7,281,1,2,'cats/effect/unsafe/WorkerThread.reschedule',1,0,0)
f(5,282,2,1,'cats/effect/IOFiber.succeeded')
f(2,284,1,2,'cats/effect/unsafe/WorkStealingThreadPool.stealTimers',1,0,0)
f(3,284,1,2,'cats/effect/unsafe/TimerSkipList.pollFirstIfTriggered',1,0,0)
f(4,284,1,2,'cats/effect/unsafe/TimerSkipList.doRemoveFirstNodeIfTriggered',1,0,0)
f(5,284,1,2,'cats/effect/unsafe/TimerSkipList.baseHead',1,0,0)
f(2,285,6,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,285,6,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,285,6,1,'java/util/concurrent/locks/LockSupport.park')
f(5,285,6,1,'jdk/internal/misc/Unsafe.park')
f(6,285,3,3,'Unsafe_Park')
f(7,285,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,286,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,286,1,5,'__x64_sys_futex')
f(7,287,1,4,'Parker::park(bool, long)')
f(8,287,1,4,'HandshakeState::has_a_non_suspend_operation()')
f(9,287,1,4,'Mutex::lock_without_safepoint_check()')
f(6,288,3,3,'[unknown]')
f(7,288,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,288,3,5,'entry_SYSCALL_64_after_hwframe')
f(9,288,3,5,'do_syscall_64')
f(10,288,3,5,'__x64_sys_futex')
f(11,288,3,5,'do_futex')
f(12,288,3,5,'futex_wait')
f(13,288,3,5,'futex_wait_queue_me')
f(14,288,3,5,'schedule')
f(15,288,3,5,'__schedule')
f(16,288,3,5,'finish_task_switch.isra.0')
f(1,291,2,1,'java/lang/Thread.run')
f(2,291,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,291,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,291,2,1,'java/util/concurrent/FutureTask.run')
f(5,291,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,291,2,1,'java/util/concurrent/FutureTask.run')
f(7,291,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,291,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,291,2,1,'java/lang/reflect/Method.invoke')
f(10,291,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,291,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,291,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,291,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_Throughput')
f(14,291,2,0,'kyo/bench/jmh_generated/CountdownLatchBench_forkCats_jmhTest.forkCats_thrpt_jmhStub',0,0,1)
f(15,292,1,1,'kyo/bench/Bench.forkCats')
f(16,292,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,292,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,292,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,292,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,292,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,292,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,292,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,292,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,292,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,292,1,3,'pthread_cond_signal')
f(26,292,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,292,1,5,'do_syscall_64')
f(28,292,1,5,'__x64_sys_futex')
f(29,292,1,5,'do_futex')
f(30,292,1,5,'futex_wake')
f(31,292,1,5,'wake_up_q')
f(32,292,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: 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,21007,3,'all')
f(1,0,19233,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,19233,1,'cats/effect/IOFiber.run')
f(3,0,18608,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,18608,1,'cats/effect/IOFiber.runLoop')
f(5,0,1732,2,'cats.effect.IOFiber$$anon$1')
f(5,1732,7559,1,'cats/effect/IOFiber.succeeded')
f(6,1732,7559,1,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d74bd0.apply')
f(7,1732,7559,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,1732,7559,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,1732,1630,1,'cats/effect/IO.flatMap')
f(10,1732,1630,1,'cats/effect/IO$FlatMap$.apply')
f(11,1732,1630,2,'cats.effect.IO$FlatMap')
f(9,3362,4401,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,3362,3268,1,'cats/effect/kernel/Ref.flatModify')
f(11,3362,1627,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,3362,1627,1,'cats/effect/IO$$anon$2.uncancelable')
f(13,3362,1627,1,'cats/effect/IO$.uncancelable')
f(14,3362,1627,1,'cats/effect/IO$Uncancelable$.apply')
f(15,3362,1627,2,'cats.effect.IO$Uncancelable')
f(11,4989,1641,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,4989,1641,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,4989,1641,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,4989,1641,2,'cats.effect.kernel.Ref$$Lambda$101+0x0000000800d74800')
f(10,6630,1133,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6630,1133,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,6630,1133,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6630,1133,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$100+0x0000000800d758c0')
f(9,7763,1528,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7763,1528,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d2c000.newInvokeSpecial')
f(11,7763,1528,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7763,1528,2,'kyo.bench.CountdownLatchBench$$Lambda$102+0x0000000800d74bd0')
f(5,9291,5037,1,'cats/effect/kernel/Ref$$Lambda$101.0x0000000800d74800.apply')
f(6,9291,5037,1,'cats/effect/kernel/Ref.flatModify$$anonfun$1')
f(7,9291,1722,1,'cats/effect/IO$$anon$2.flatten')
f(8,9291,1722,1,'cats/FlatMap.flatten$')
f(9,9291,1722,1,'cats/FlatMap.flatten')
f(10,9291,1722,1,'cats/effect/IO$$anon$2.flatMap')
f(11,9291,1722,1,'cats/effect/IO$$anon$2.flatMap')
f(12,9291,1722,1,'cats/effect/IO.flatMap')
f(13,9291,1722,1,'cats/effect/IO$FlatMap$.apply')
f(14,9291,1722,2,'cats.effect.IO$FlatMap')
f(7,11013,3315,1,'cats/effect/kernel/SyncRef.modify')
f(8,11013,1638,1,'cats/effect/IO$$anon$2.delay')
f(9,11013,1638,1,'cats/effect/IO$$anon$2.delay')
f(10,11013,1638,1,'cats/effect/IO$.apply')
f(11,11013,1638,1,'cats/effect/IO$.delay')
f(12,11013,1638,1,'cats/effect/IO$Delay$.apply')
f(13,11013,1638,2,'cats.effect.IO$Delay')
f(8,12651,1677,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,12651,1677,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,12651,1677,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,12651,1677,2,'cats.effect.kernel.SyncRef$$Lambda$106+0x0000000800d7d1f8')
f(5,14328,4280,1,'cats/effect/kernel/SyncRef$$Lambda$106.0x0000000800d7d1f8.apply')
f(6,14328,4280,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,14328,4280,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,14328,4280,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$100.0x0000000800d758c0.apply')
f(9,14328,4280,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(10,14328,922,1,'cats/effect/IO$$anon$2.unit')
f(11,14328,922,1,'cats/Applicative.unit$')
f(12,14328,922,1,'cats/Applicative.unit')
f(13,14328,922,1,'cats/effect/IO$$anon$2.pure')
f(14,14328,922,1,'cats/effect/IO$$anon$2.pure')
f(15,14328,922,1,'cats/effect/IO$.pure')
f(16,14328,922,1,'cats/effect/IO$Pure$.apply')
f(17,14328,922,2,'cats.effect.IO$Pure')
f(10,15250,1680,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,15250,1680,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,16930,1678,1,'scala/Tuple2$.apply')
f(11,16930,1678,2,'scala.Tuple2')
f(3,18608,625,1,'cats/effect/IOFiber.execR')
f(4,18608,3,1,'cats/effect/ArrayStack.init')
f(5,18608,3,2,'java.lang.Object[]')
f(4,18611,260,1,'cats/effect/ByteStack$.create')
f(5,18611,260,2,'int[]')
f(4,18871,362,1,'cats/effect/IOFiber.runLoop')
f(5,18871,1,2,'cats.effect.ContState')
f(5,18872,29,2,'cats.effect.IOFiber$$anon$1')
f(5,18901,1,1,'cats/effect/IO$$$Lambda$40.0x0000000800d2a488.apply')
f(6,18901,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,18901,1,1,'cats/effect/IODeferred.<init>')
f(8,18901,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,18901,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,18901,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,18901,1,2,'cats.effect.IODeferred$$Lambda$97+0x0000000800d77558')
f(5,18902,1,1,'cats/effect/IO$$anon$3$$Lambda$113.0x0000000800d7a000.apply')
f(6,18902,1,1,'cats/effect/IO$.cats$effect$IO$$anon$3$$_$apply$$anonfun$1$$anonfun$1$$anonfun$1')
f(7,18902,1,1,'cats/effect/IO$$anon$2.onCancel')
f(8,18902,1,1,'cats/effect/IO$$anon$2.onCancel')
f(9,18902,1,1,'cats/effect/IO.onCancel')
f(10,18902,1,1,'cats/effect/IO$OnCancel$.apply')
f(11,18902,1,2,'cats.effect.IO$OnCancel')
f(5,18903,9,1,'cats/effect/IODeferred$$Lambda$112.0x0000000800d7fa48.apply')
f(6,18903,9,1,'cats/effect/IODeferred.$anonfun$1$$anonfun$1')
f(7,18903,9,1,'scala/Some$.apply')
f(8,18903,9,2,'scala.Some')
f(5,18912,1,1,'cats/effect/IOFiber.<init>')
f(6,18912,1,1,'cats/effect/CallbackStack$.apply')
f(7,18912,1,2,'cats.effect.CallbackStack')
f(5,18913,153,1,'cats/effect/IOFiber.succeeded')
f(6,18913,150,1,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d74bd0.apply')
f(7,18913,150,1,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1')
f(8,18913,150,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,18913,45,1,'cats/effect/IO.flatMap')
f(10,18913,45,1,'cats/effect/IO$FlatMap$.apply')
f(11,18913,45,2,'cats.effect.IO$FlatMap')
f(9,18958,77,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,18958,62,1,'cats/effect/kernel/Ref.flatModify')
f(11,18958,41,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,18958,41,1,'cats/effect/IO$$anon$2.uncancelable')
f(13,18958,41,1,'cats/effect/IO$.uncancelable')
f(14,18958,41,1,'cats/effect/IO$Uncancelable$.apply')
f(15,18958,41,2,'cats.effect.IO$Uncancelable')
f(11,18999,21,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,18999,21,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,18999,21,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,18999,21,2,'cats.effect.kernel.Ref$$Lambda$101+0x0000000800d74800')
f(10,19020,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,19020,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,19020,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,19020,15,2,'cats.effect.std.CountDownLatch$ConcurrentCountDownLatch$$Lambda$100+0x0000000800d758c0')
f(9,19035,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,19035,28,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d2c000.newInvokeSpecial')
f(11,19035,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,19035,28,2,'kyo.bench.CountdownLatchBench$$Lambda$102+0x0000000800d74bd0')
f(6,19063,1,1,'kyo/bench/CountdownLatchBench$$Lambda$103.0x0000000800d7c000.apply')
f(7,19063,1,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1$$anonfun$1')
f(8,19063,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.await')
f(9,19063,1,1,'cats/effect/kernel/SyncRef.get')
f(10,19063,1,1,'cats/effect/IO$$anon$2.delay')
f(11,19063,1,1,'cats/effect/IO$$anon$2.delay')
f(12,19063,1,1,'cats/effect/IO$.apply')
f(13,19063,1,1,'cats/effect/IO$.delay')
f(14,19063,1,1,'cats/effect/IO$Delay$.apply')
f(15,19063,1,2,'cats.effect.IO$Delay')
f(6,19064,2,1,'kyo/bench/CountdownLatchBench$$Lambda$44.0x0000000800d2e000.apply')
f(7,19064,2,1,'kyo/bench/CountdownLatchBench.catsBench$$anonfun$1')
f(8,19064,2,1,'kyo/bench/CountdownLatchBench.iterate$1')
f(9,19064,1,1,'cats/effect/IO.flatMap')
f(10,19064,1,1,'cats/effect/IO$FlatMap$.apply')
f(11,19064,1,2,'cats.effect.IO$FlatMap')
f(9,19065,1,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release')
f(10,19065,1,1,'cats/effect/kernel/Ref.flatModify')
f(11,19065,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,19065,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,19065,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,19065,1,2,'cats.effect.kernel.Ref$$Lambda$101+0x0000000800d74800')
f(5,19066,91,1,'cats/effect/kernel/Ref$$Lambda$101.0x0000000800d74800.apply')
f(6,19066,91,1,'cats/effect/kernel/Ref.flatModify$$anonfun$1')
f(7,19066,32,1,'cats/effect/IO$$anon$2.flatten')
f(8,19066,32,1,'cats/FlatMap.flatten$')
f(9,19066,32,1,'cats/FlatMap.flatten')
f(10,19066,32,1,'cats/effect/IO$$anon$2.flatMap')
f(11,19066,32,1,'cats/effect/IO$$anon$2.flatMap')
f(12,19066,32,1,'cats/effect/IO.flatMap')
f(13,19066,32,1,'cats/effect/IO$FlatMap$.apply')
f(14,19066,32,2,'cats.effect.IO$FlatMap')
f(7,19098,59,1,'cats/effect/kernel/SyncRef.modify')
f(8,19098,25,1,'cats/effect/IO$$anon$2.delay')
f(9,19098,25,1,'cats/effect/IO$$anon$2.delay')
f(10,19098,25,1,'cats/effect/IO$.apply')
f(11,19098,25,1,'cats/effect/IO$.delay')
f(12,19098,25,1,'cats/effect/IO$Delay$.apply')
f(13,19098,25,2,'cats.effect.IO$Delay')
f(8,19123,34,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,19123,34,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,19123,34,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,19123,34,2,'cats.effect.kernel.SyncRef$$Lambda$106+0x0000000800d7d1f8')
f(5,19157,76,1,'cats/effect/kernel/SyncRef$$Lambda$106.0x0000000800d7d1f8.apply')
f(6,19157,76,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,19157,76,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,19157,76,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch$$Lambda$100.0x0000000800d758c0.apply')
f(9,19157,76,1,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release$$anonfun$1')
f(10,19157,24,1,'cats/effect/IO$$anon$2.unit')
f(11,19157,24,1,'cats/Applicative.unit$')
f(12,19157,24,1,'cats/Applicative.unit')
f(13,19157,24,1,'cats/effect/IO$$anon$2.pure')
f(14,19157,24,1,'cats/effect/IO$$anon$2.pure')
f(15,19157,24,1,'cats/effect/IO$.pure')
f(16,19157,24,1,'cats/effect/IO$Pure$.apply')
f(17,19157,24,2,'cats.effect.IO$Pure')
f(10,19181,27,1,'cats/effect/std/CountDownLatch$Awaiting$.apply')
f(11,19181,27,2,'cats.effect.std.CountDownLatch$Awaiting')
f(10,19208,25,1,'scala/Tuple2$.apply')
f(11,19208,25,2,'scala.Tuple2')
f(1,19233,1771,1,'java/lang/Thread.run')
f(2,19233,1771,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,19233,1771,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,19233,1771,1,'java/util/concurrent/FutureTask.run')
f(5,19233,1771,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,19233,1771,1,'java/util/concurrent/FutureTask.run')
f(7,19233,1771,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,19233,1771,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,19233,1771,1,'java/lang/reflect/Method.invoke')
f(10,19233,1771,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,19233,1771,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,19233,1771,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,19233,1771,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_Throughput')
f(14,19233,1771,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,19233,1771,1,'kyo/bench/Bench.syncCats')
f(16,19233,1369,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,19233,1366,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,19233,733,1,'cats/effect/IO.unsafeRunAsync')
f(19,19233,704,1,'cats/effect/IO.unsafeRunFiber')
f(20,19233,158,5,'cats.effect.IOFiber')
f(20,19391,485,1,'cats/effect/IOFiber.<init>')
f(21,19391,423,1,'cats/effect/ArrayStack$.apply')
f(22,19391,423,2,'cats.effect.ArrayStack')
f(21,19814,4,1,'cats/effect/CallbackStack$.apply')
f(22,19814,4,2,'cats.effect.CallbackStack')
f(21,19818,18,1,'cats/effect/IO$.async')
f(22,19818,12,2,'cats.effect.IO$$anon$4')
f(22,19830,6,1,'cats/effect/IO$IOCont$.apply')
f(23,19830,6,2,'cats.effect.IO$IOCont')
f(21,19836,7,1,'cats/effect/IO$.uncancelable')
f(22,19836,7,1,'cats/effect/IO$Uncancelable$.apply')
f(23,19836,7,2,'cats.effect.IO$Uncancelable')
f(21,19843,33,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,19843,33,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,19843,33,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,19843,23,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d73260')
f(24,19866,10,2,'cats.effect.IOFiber$$Lambda$94+0x0000000800d73850')
f(20,19876,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,19876,61,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74400.newInvokeSpecial')
f(22,19876,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,19876,61,2,'cats.effect.IO$$Lambda$92+0x0000000800d72428')
f(19,19937,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,19937,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,19937,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,19937,8,2,'cats.effect.IO$$Lambda$89+0x0000000800d70d78')
f(22,19945,10,2,'cats.effect.IO$$Lambda$90+0x0000000800d71038')
f(22,19955,11,2,'cats.effect.IO$$Lambda$91+0x0000000800d71440')
f(18,19966,29,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,19995,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,19995,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,19995,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,19995,7,2,'cats.effect.IOPlatform$$Lambda$88+0x0000000800d70970')
f(18,20002,462,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,20002,462,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,20002,54,2,'java.lang.Object[]')
f(20,20056,65,2,'java.util.concurrent.locks.ReentrantLock')
f(20,20121,318,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,20121,318,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,20439,25,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,20439,25,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,20439,25,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,20464,46,1,'scala/concurrent/package$.blocking')
f(19,20464,46,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,20464,46,1,'cats/effect/IOPlatform$$Lambda$95.0x0000000800d76200.apply')
f(21,20464,46,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,20464,46,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,20464,46,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,20464,46,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,20510,89,1,'scala/util/Either.fold')
f(19,20510,89,1,'cats/effect/IOPlatform$$Lambda$122.0x0000000800d84bd8.apply')
f(20,20510,89,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,20510,89,1,'scala/Some$.apply')
f(22,20510,89,2,'scala.Some')
f(17,20599,3,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,20599,3,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,20599,3,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,20599,3,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,20599,3,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,20599,3,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,20599,3,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,20599,3,2,'scala.concurrent.duration.FiniteDuration')
f(16,20602,402,1,'kyo/bench/CountdownLatchBench.catsBench')
f(17,20602,12,1,'cats/effect/IO.flatMap')
f(18,20602,12,1,'cats/effect/IO$FlatMap$.apply')
f(19,20602,12,2,'cats.effect.IO$FlatMap')
f(17,20614,380,1,'cats/effect/std/CountDownLatch$.apply')
f(18,20614,8,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(19,20614,8,1,'cats/FlatMap$Ops.flatMap$')
f(20,20614,8,1,'cats/FlatMap$Ops.flatMap')
f(21,20614,8,1,'cats/effect/IO$$anon$2.flatMap')
f(22,20614,8,1,'cats/effect/IO$$anon$2.flatMap')
f(23,20614,8,1,'cats/effect/IO.flatMap')
f(24,20614,8,1,'cats/effect/IO$FlatMap$.apply')
f(25,20614,8,2,'cats.effect.IO$FlatMap')
f(18,20622,348,1,'cats/effect/std/CountDownLatch$State$.initial')
f(19,20622,3,1,'cats/Functor$ToFunctorOps$$anon$4.map')
f(20,20622,3,1,'cats/Functor$Ops.map$')
f(21,20622,3,1,'cats/Functor$Ops.map')
f(22,20622,3,1,'cats/effect/IO$$anon$2.map')
f(23,20622,3,1,'cats/effect/IO$$anon$2.map')
f(24,20622,3,1,'cats/effect/IO.map')
f(25,20622,3,1,'cats/effect/IO$Map$.apply')
f(26,20622,3,2,'cats.effect.IO$Map')
f(19,20625,63,1,'cats/effect/IO$$anon$2.deferred')
f(20,20625,63,1,'cats/effect/IO$$anon$2.deferred')
f(21,20625,63,1,'cats/effect/IO$.deferred')
f(22,20625,2,1,'cats/effect/IO$.apply')
f(23,20625,2,1,'cats/effect/IO$.delay')
f(24,20625,2,1,'cats/effect/IO$Delay$.apply')
f(25,20625,2,2,'cats.effect.IO$Delay')
f(22,20627,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(23,20627,61,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(24,20627,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(25,20627,61,2,'cats.effect.IO$$$Lambda$40+0x0000000800d2a488')
f(19,20688,282,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,20688,282,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d2c000.newInvokeSpecial')
f(21,20688,282,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,20688,282,2,'cats.effect.std.CountDownLatch$State$$$Lambda$42+0x0000000800d2b1b8')
f(18,20970,24,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,20970,24,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,20970,24,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,20970,24,2,'cats.effect.std.CountDownLatch$$$Lambda$43+0x0000000800d2ba08')
f(17,20994,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,20994,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,20994,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,20994,10,2,'kyo.bench.CountdownLatchBench$$Lambda$44+0x0000000800d2e000')
f(1,21004,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,21004,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,21004,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,21004,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,21004,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,21004,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,21004,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,21004,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,21004,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,21004,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,21004,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,21004,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,21004,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: 528px}
</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(33);
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,293,3,'all')
f(1,0,8,3,'[unknown_Java]')
f(2,0,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(2,2,5,6,'cats/effect/IO$FlatMap.tag',0,5,0)
f(2,7,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(1,8,283,1,'cats/effect/unsafe/WorkerThread.run')
f(2,8,279,1,'cats/effect/IOFiber.run')
f(3,8,269,1,'cats/effect/IOFiber.autoCedeR')
f(4,8,269,1,'cats/effect/IOFiber.runLoop')
f(5,68,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(5,69,24,2,'cats/effect/ArrayStack.push',24,0,0)
f(6,73,20,2,'cats/effect/ArrayStack.checkAndGrow',20,0,0)
f(5,93,8,2,'cats/effect/ByteStack$.push',7,0,0)
f(6,100,1,1,'cats/effect/ByteStack$.growIfNeeded')
f(7,100,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(8,100,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(9,100,1,4,'MemAllocator::allocate() const')
f(10,100,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(11,100,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(12,100,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(13,100,1,4,'VMThread::execute(VM_Operation*)')
f(14,100,1,4,'VMThread::wait_until_executed(VM_Operation*)')
f(15,100,1,4,'Monitor::wait(long)')
f(5,101,2,2,'cats/effect/IO$.apply',2,0,0)
f(6,101,2,2,'cats/effect/IO$.delay',2,0,0)
f(7,101,2,2,'cats/effect/IO$Delay$.apply',2,0,0)
f(8,101,2,2,'cats/effect/IO$Delay.<init>',2,0,0)
f(9,101,2,2,'cats/effect/IO.<init>',2,0,0)
f(10,101,2,2,'cats/effect/IOPlatform.<init>',2,0,0)
f(5,103,8,6,'cats/effect/IO$Delay.tag',0,8,0)
f(5,111,19,6,'cats/effect/IO$FlatMap.tag',0,19,0)
f(5,130,4,6,'cats/effect/IO$Pure.tag',0,4,0)
f(5,134,7,6,'cats/effect/IO$Uncancelable.tag',0,7,0)
f(5,141,1,1,'cats/effect/IODeferred$$Lambda$116.0x0000000800d7b688.apply')
f(6,141,1,1,'cats/effect/IODeferred.complete$$anonfun$1')
f(7,141,1,1,'cats/effect/CallbackStack.apply')
f(8,141,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,141,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,141,1,1,'cats/effect/IOFiber$$Lambda$109.0x0000000800d7e288.applyVoid')
f(11,141,1,1,'cats/effect/IOFiber.$anonfun$2')
f(12,141,1,1,'cats/effect/IOFiber.stateLoop$1')
f(13,141,1,1,'cats/effect/IOFiber.loop$1')
f(14,141,1,1,'cats/effect/IOFiber.scheduleFiber')
f(15,141,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(16,141,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(17,141,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(18,141,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(19,141,1,1,'jdk/internal/misc/Unsafe.unpark')
f(20,141,1,3,'pthread_cond_signal')
f(21,141,1,5,'entry_SYSCALL_64_after_hwframe')
f(22,141,1,5,'do_syscall_64')
f(23,141,1,5,'__x64_sys_futex')
f(24,141,1,5,'do_futex')
f(25,141,1,5,'futex_wake')
f(26,141,1,5,'wake_up_q')
f(27,141,1,5,'_raw_spin_unlock_irqrestore')
f(5,142,31,2,'cats/effect/IOFiber.rescheduleFiber',31,0,0)
f(6,142,31,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',31,0,0)
f(7,146,1,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',1,0,0)
f(7,147,26,2,'cats/effect/unsafe/WorkerThread.reschedule',26,0,0)
f(8,163,10,2,'cats/effect/unsafe/LocalQueue.isEmpty',10,0,0)
f(9,168,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',5,0,0)
f(5,173,72,1,'cats/effect/IOFiber.succeeded')
f(6,216,3,2,'cats/effect/ArrayStack.pop',3,0,0)
f(6,219,7,2,'cats/effect/ByteStack$.pop',7,0,0)
f(7,223,3,2,'cats/effect/ByteStack$.peek',3,0,0)
f(6,226,19,2,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d74bd0.apply',19,0,0)
f(7,226,19,2,'kyo/bench/CountdownLatchBench.iterate$1$$anonfun$1',19,0,0)
f(8,226,19,2,'kyo/bench/CountdownLatchBench.iterate$1',19,0,0)
f(9,226,5,2,'cats/effect/IO.flatMap',5,0,0)
f(10,226,5,2,'cats/effect/IO$FlatMap$.apply',5,0,0)
f(9,231,5,2,'cats/effect/std/CountDownLatch$ConcurrentCountDownLatch.release',5,0,0)
f(10,233,3,2,'cats/effect/kernel/Ref.flatModify',3,0,0)
f(11,233,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(12,233,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(13,233,1,2,'cats/effect/IO$.uncancelable',1,0,0)
f(14,233,1,2,'cats/effect/IO$Uncancelable$.apply',1,0,0)
f(11,234,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(12,234,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(13,234,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(9,236,9,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',9,0,0)
f(10,236,9,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d2c000.newInvokeSpecial',9,0,0)
f(11,236,8,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',8,0,0)
f(11,244,1,2,'kyo/bench/CountdownLatchBench$$Lambda$102.0x0000000800d74bd0.<init>',1,0,0)
f(5,245,15,2,'cats/effect/kernel/Ref$$Lambda$101.0x0000000800d74800.apply',15,0,0)
f(6,245,15,2,'cats/effect/kernel/Ref.flatModify$$anonfun$1',15,0,0)
f(7,245,11,2,'cats/effect/IO$$anon$2.flatten',11,0,0)
f(8,248,8,2,'cats/FlatMap.flatten$',8,0,0)
f(9,251,5,2,'cats/FlatMap.flatten',5,0,0)
f(10,251,5,2,'cats/effect/IO$$anon$2.flatMap',5,0,0)
f(11,251,5,2,'cats/effect/IO$$anon$2.flatMap',5,0,0)
f(12,251,5,2,'cats/effect/IO.flatMap',5,0,0)
f(13,252,4,2,'cats/effect/IO$FlatMap$.apply',4,0,0)
f(7,256,4,2,'cats/effect/kernel/SyncRef.modify',4,0,0)
f(5,260,5,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',5,0,0)
f(6,260,5,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',5,0,0)
f(7,260,5,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',5,0,0)
f(8,264,1,2,'java/util/Objects.requireNonNull',1,0,0)
f(5,265,12,3,'vtable stub')
f(3,277,10,1,'cats/effect/IOFiber.execR')
f(4,277,10,1,'cats/effect/IOFiber.runLoop')
f(5,278,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(6,278,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,279,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,280,1,6,'cats/effect/IO$Start.tag',0,1,0)
f(5,281,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(5,282,2,1,'cats/effect/IOFiber.scheduleFiber')
f(6,282,2,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,282,2,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,282,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,282,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,282,2,1,'jdk/internal/misc/Unsafe.unpark')
f(11,282,2,3,'pthread_cond_signal')
f(12,283,1,5,'entry_SYSCALL_64_after_hwframe')
f(13,283,1,5,'do_syscall_64')
f(14,283,1,5,'__x64_sys_futex')
f(15,283,1,5,'do_futex')
f(16,283,1,5,'futex_wake')
f(17,283,1,5,'wake_up_q')
f(18,283,1,5,'_raw_spin_unlock_irqrestore')
f(5,284,1,1,'cats/effect/IOFiber.succeeded')
f(5,285,1,3,'itable stub')
f(5,286,1,3,'vtable stub')
f(2,287,1,2,'cats/effect/unsafe/LocalQueue.dequeue',1,0,0)
f(3,287,1,3,'clock_gettime')
f(4,287,1,3,'[vdso]')
f(2,288,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,288,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(4,288,1,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',1,0,0)
f(5,288,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,288,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(2,289,2,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,289,2,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,289,2,1,'java/util/concurrent/locks/LockSupport.park')
f(5,289,2,1,'jdk/internal/misc/Unsafe.park')
f(6,289,2,3,'[unknown]')
f(7,289,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,289,2,5,'entry_SYSCALL_64_after_hwframe')
f(9,289,2,5,'do_syscall_64')
f(10,289,2,5,'__x64_sys_futex')
f(11,289,2,5,'do_futex')
f(12,289,2,5,'futex_wait')
f(13,289,2,5,'futex_wait_queue_me')
f(14,289,2,5,'schedule')
f(15,289,2,5,'__schedule')
f(16,289,2,5,'finish_task_switch.isra.0')
f(1,291,2,1,'java/lang/Thread.run')
f(2,291,2,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,291,2,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,291,2,1,'java/util/concurrent/FutureTask.run')
f(5,291,2,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,291,2,1,'java/util/concurrent/FutureTask.run')
f(7,291,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,291,2,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,291,2,1,'java/lang/reflect/Method.invoke')
f(10,291,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,291,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,291,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,291,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_Throughput')
f(14,291,2,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,291,2,1,'kyo/bench/Bench.syncCats')
f(16,291,2,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,291,2,2,'cats/effect/IOPlatform.unsafeRunTimed',1,0,0)
f(18,291,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,291,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,291,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,291,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,291,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,291,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,291,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,291,1,3,'pthread_cond_signal')
f(26,291,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,291,1,5,'do_syscall_64')
f(28,291,1,5,'__x64_sys_futex')
f(29,291,1,5,'do_futex')
f(30,291,1,5,'futex_wake')
f(31,291,1,5,'wake_up_q')
f(32,291,1,5,'_raw_spin_unlock_irqrestore')
f(18,292,1,2,'scala/concurrent/package$.blocking',1,0,0)
f(19,292,1,2,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn',1,0,0)
f(20,292,1,2,'cats/effect/IOPlatform$$Lambda$95.0x0000000800d76610.apply',1,0,0)
f(21,292,1,2,'cats/effect/IOPlatform.$anonfun$1',1,0,0)
f(22,292,1,2,'java/util/concurrent/ArrayBlockingQueue.poll',1,0,0)
f(23,292,1,2,'java/util/concurrent/locks/ReentrantLock.lockInterruptibly',1,0,0)
f(24,292,1,2,'java/util/concurrent/locks/ReentrantLock$Sync.lockInterruptibly',1,0,0)
f(25,292,1,2,'java/util/concurrent/locks/ReentrantLock$NonfairSync.initialTryLock',1,0,0)
f(26,292,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: 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,25763,3,'all')
f(1,0,23088,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,23088,1,'cats/effect/IOFiber.run')
f(3,0,21547,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,21547,1,'cats/effect/IOFiber.runLoop')
f(5,0,21539,1,'cats/effect/IOFiber.next$2')
f(6,0,21539,1,'kyo/bench/DeepBindBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,0,21539,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,0,21539,1,'kyo/bench/DeepBindBench.loop$2')
f(9,0,10751,1,'cats/effect/IO.flatMap')
f(10,0,10751,1,'cats/effect/IO$FlatMap$.apply')
f(11,0,10751,2,'cats.effect.IO$FlatMap')
f(9,10751,10788,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,10751,10788,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial')
f(11,10751,10788,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,10751,10788,2,'kyo.bench.DeepBindBench$$Lambda$92+0x0000000800d5f6e0')
f(5,21539,8,1,'cats/effect/IOFiber.succeeded')
f(6,21539,8,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,21539,1,1,'cats/effect/IO$.pure')
f(8,21539,1,1,'cats/effect/IO$Pure$.apply')
f(9,21539,1,2,'cats.effect.IO$Pure')
f(7,21540,6,1,'cats/effect/IOFiber.done')
f(8,21540,5,1,'cats/effect/CallbackStack.apply')
f(9,21540,5,1,'scala/runtime/function/JProcedure1.apply')
f(10,21540,5,1,'scala/runtime/function/JProcedure1.apply')
f(11,21540,5,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cfe8.applyVoid')
f(12,21540,5,1,'cats/effect/IO.$anonfun$6')
f(13,21540,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,21540,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,21540,1,1,'cats/effect/kernel/Outcome.fold')
f(16,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,21540,1,1,'cats/effect/IO$$Lambda$95.0x0000000800d5a6c8.applyVoid')
f(19,21540,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,21540,1,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,21540,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,21540,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,21540,1,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57348.applyVoid')
f(27,21540,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,21540,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,21540,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,21540,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,21540,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,21540,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,21540,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,21540,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,21541,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,21541,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,21541,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,21541,3,2,'cats.effect.IO$$Lambda$93+0x0000000800d5a000')
f(16,21544,1,2,'cats.effect.IO$$Lambda$95+0x0000000800d5a6c8')
f(8,21545,1,1,'cats/effect/IO$.pure')
f(9,21545,1,1,'cats/effect/IO$Pure$.apply')
f(10,21545,1,2,'cats.effect.IO$Pure')
f(7,21546,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,21546,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(3,21547,1230,1,'cats/effect/IOFiber.cedeR')
f(4,21547,1228,1,'cats/effect/IOFiber.runLoop')
f(5,21547,1228,1,'cats/effect/IOFiber.next$2')
f(6,21547,1228,1,'kyo/bench/DeepBindBench$$Lambda$92.0x0000000800d5f6e0.apply')
f(7,21547,1228,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,21547,1228,1,'kyo/bench/DeepBindBench.loop$2')
f(9,21547,628,1,'cats/effect/IO.flatMap')
f(10,21547,628,1,'cats/effect/IO$FlatMap$.apply')
f(11,21547,628,2,'cats.effect.IO$FlatMap')
f(9,22175,600,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,22175,600,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial')
f(11,22175,600,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,22175,600,2,'kyo.bench.DeepBindBench$$Lambda$92+0x0000000800d5f6e0')
f(4,22775,2,1,'cats/effect/IOFiber.succeeded')
f(5,22775,2,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13078.apply')
f(6,22775,2,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,22775,2,1,'kyo/bench/DeepBindBench.catsBench')
f(8,22775,2,1,'kyo/bench/DeepBindBench.loop$2')
f(9,22775,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,22775,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial')
f(11,22775,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,22775,2,2,'kyo.bench.DeepBindBench$$Lambda$92+0x0000000800d5f6e0')
f(3,22777,311,1,'cats/effect/IOFiber.execR')
f(4,22777,6,1,'cats/effect/ArrayStack.init')
f(5,22777,6,2,'java.lang.Object[]')
f(4,22783,305,1,'cats/effect/ByteStack$.create')
f(5,22783,305,2,'int[]')
f(1,23088,2672,1,'java/lang/Thread.run')
f(2,23088,2672,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,23088,2672,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,23088,2672,1,'java/util/concurrent/FutureTask.run')
f(5,23088,2672,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,23088,2672,1,'java/util/concurrent/FutureTask.run')
f(7,23088,2672,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,23088,2672,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,23088,2672,1,'java/lang/reflect/Method.invoke')
f(10,23088,2672,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,23088,2672,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,23088,2672,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,23088,2672,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_Throughput')
f(14,23088,2671,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,23088,2671,1,'kyo/bench/Bench.forkCats')
f(16,23088,107,1,'cats/effect/IO.flatMap')
f(17,23088,107,1,'cats/effect/IO$FlatMap$.apply')
f(18,23088,107,2,'cats.effect.IO$FlatMap')
f(16,23195,2487,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,23195,2377,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,23195,1386,1,'cats/effect/IO.unsafeRunAsync')
f(19,23195,1185,1,'cats/effect/IO.unsafeRunFiber')
f(20,23195,292,2,'cats.effect.IOFiber')
f(20,23487,721,1,'cats/effect/IOFiber.<init>')
f(21,23487,162,1,'cats/effect/ArrayStack$.apply')
f(22,23487,162,2,'cats.effect.ArrayStack')
f(21,23649,150,1,'cats/effect/CallbackStack$.apply')
f(22,23649,150,2,'cats.effect.CallbackStack')
f(21,23799,138,1,'cats/effect/IO$.async')
f(22,23799,40,2,'cats.effect.IO$$anon$4')
f(22,23839,98,1,'cats/effect/IO$IOCont$.apply')
f(23,23839,98,2,'cats.effect.IO$IOCont')
f(21,23937,114,1,'cats/effect/IO$.uncancelable')
f(22,23937,114,1,'cats/effect/IO$Uncancelable$.apply')
f(23,23937,114,2,'cats.effect.IO$Uncancelable')
f(21,24051,157,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,24051,157,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,24051,157,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,24051,82,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5de20')
f(24,24133,75,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(20,24208,100,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,24208,100,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,24208,100,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,24208,100,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,24208,100,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,24308,72,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,24308,72,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,24308,72,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,24308,72,2,'cats.effect.IO$$Lambda$88+0x0000000800d5cfe8')
f(19,24380,201,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,24380,201,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,24380,201,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,24380,83,2,'cats.effect.IO$$Lambda$85+0x0000000800d57750')
f(22,24463,47,2,'cats.effect.IO$$Lambda$86+0x0000000800d57a10')
f(22,24510,71,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c000')
f(18,24581,225,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,24806,65,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,24806,65,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,24806,65,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,24806,65,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57348')
f(18,24871,487,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,24871,487,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,24871,86,2,'java.lang.Object[]')
f(20,24957,46,2,'java.util.concurrent.locks.ReentrantLock')
f(20,25003,115,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,25003,115,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,25118,240,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,25118,240,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,25118,240,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,25358,138,1,'scala/concurrent/package$.blocking')
f(19,25358,138,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,25358,138,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5edf0.apply')
f(21,25358,138,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,25358,138,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,25358,138,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,25358,138,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,25496,76,1,'scala/util/Either.fold')
f(19,25496,76,1,'cats/effect/IOPlatform$$Lambda$97.0x0000000800d5b178.apply')
f(20,25496,76,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,25496,76,1,'scala/Some$.apply')
f(22,25496,76,2,'scala.Some')
f(17,25572,110,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,25572,110,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,25572,110,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,25572,110,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,25572,110,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,25572,110,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,25572,110,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,25572,110,2,'scala.concurrent.duration.FiniteDuration')
f(16,25682,77,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,25682,77,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,25682,77,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,25682,77,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13078')
f(14,25759,1,2,'org.openjdk.jmh.results.RawResults')
f(1,25760,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,25760,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,25760,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,25760,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,25760,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,25760,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,25760,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,25760,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,25760,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,25760,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,25760,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,25760,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,25760,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,267,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,247,1,'cats/effect/unsafe/WorkerThread.run')
f(2,2,239,1,'cats/effect/IOFiber.run')
f(3,2,228,1,'cats/effect/IOFiber.autoCedeR')
f(4,2,228,1,'cats/effect/IOFiber.runLoop')
f(5,123,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(6,123,1,4,'CardTableBarrierSet::on_slowpath_allocation_exit(JavaThread*, oopDesc*)')
f(5,124,3,2,'cats/effect/IO$FlatMap.f',3,0,0)
f(5,127,55,2,'cats/effect/IOFiber.next$2',55,0,0)
f(6,134,48,2,'kyo/bench/DeepBindBench$$Lambda$92.0x0000000800d5f2d8.apply',48,0,0)
f(7,149,33,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',33,0,0)
f(8,149,33,2,'kyo/bench/DeepBindBench.loop$2',33,0,0)
f(9,149,16,2,'cats/effect/IO.flatMap',16,0,0)
f(10,149,16,2,'cats/effect/IO$FlatMap$.apply',16,0,0)
f(11,161,4,2,'cats/effect/IO$FlatMap.<init>',4,0,0)
f(9,165,17,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',17,0,0)
f(10,165,17,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial',17,0,0)
f(11,165,14,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',14,0,0)
f(11,179,3,2,'kyo/bench/DeepBindBench$$Lambda$92.0x0000000800d5f2d8.<init>',3,0,0)
f(5,182,34,2,'cats/effect/IOFiber.rescheduleFiber',34,0,0)
f(5,216,14,1,'cats/effect/IOFiber.succeeded')
f(6,216,14,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,216,14,1,'cats/effect/IOFiber.done')
f(8,216,14,1,'cats/effect/CallbackStack.apply')
f(9,216,14,1,'scala/runtime/function/JProcedure1.apply')
f(10,216,14,1,'scala/runtime/function/JProcedure1.apply')
f(11,216,14,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cde8.applyVoid')
f(12,216,14,1,'cats/effect/IO.$anonfun$6')
f(13,216,14,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,216,14,1,'cats/effect/kernel/Outcome.fold$',2,0,0)
f(15,216,14,1,'cats/effect/kernel/Outcome.fold',2,0,0)
f(16,216,14,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(17,216,14,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(18,216,14,1,'cats/effect/IO$$Lambda$95.0x0000000800d5a6c8.applyVoid',2,0,0)
f(19,216,14,1,'cats/effect/IO.$anonfun$6$$anonfun$3',2,0,0)
f(20,216,2,2,'cats/effect/unsafe/StripedHashtable.remove',2,0,0)
f(21,217,1,2,'cats/effect/unsafe/ThreadSafeHashtable.remove',1,0,0)
f(20,218,12,1,'scala/runtime/function/JProcedure1.apply')
f(21,218,12,1,'scala/runtime/function/JProcedure1.apply')
f(22,218,12,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,218,12,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,218,12,1,'scala/runtime/function/JProcedure1.apply')
f(25,218,12,1,'scala/runtime/function/JProcedure1.apply')
f(26,219,11,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57140.applyVoid')
f(27,219,11,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,219,11,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,219,1,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,219,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal',1,0,0)
f(31,219,1,2,'java/util/concurrent/locks/ReentrantLock$Sync.isHeldExclusively',1,0,0)
f(29,220,10,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,220,10,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,220,10,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,220,10,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,220,10,1,'jdk/internal/misc/Unsafe.unpark')
f(34,220,10,3,'pthread_cond_signal')
f(35,221,9,5,'entry_SYSCALL_64_after_hwframe')
f(36,221,9,5,'do_syscall_64')
f(37,221,9,5,'__x64_sys_futex')
f(38,221,9,5,'do_futex')
f(39,221,9,5,'futex_wake')
f(40,221,9,5,'wake_up_q')
f(41,221,9,5,'_raw_spin_unlock_irqrestore')
f(3,230,11,1,'cats/effect/IOFiber.cedeR')
f(4,230,11,1,'cats/effect/IOFiber.runLoop')
f(5,237,2,2,'cats/effect/IOFiber.next$2',2,0,0)
f(6,237,2,2,'kyo/bench/DeepBindBench$$Lambda$92.0x0000000800d5f2d8.apply',2,0,0)
f(7,238,1,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',1,0,0)
f(8,238,1,2,'kyo/bench/DeepBindBench.loop$2',1,0,0)
f(9,238,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,238,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(5,239,2,2,'cats/effect/IOFiber.rescheduleFiber',2,0,0)
f(2,241,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(2,242,6,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,242,6,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,242,6,1,'java/util/concurrent/locks/LockSupport.park')
f(5,242,6,1,'jdk/internal/misc/Unsafe.park')
f(6,242,1,3,'Unsafe_Park')
f(7,242,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,242,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,242,1,5,'do_syscall_64')
f(10,242,1,5,'__x64_sys_futex')
f(6,243,5,3,'[unknown]')
f(7,243,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,243,3,5,'entry_SYSCALL_64_after_hwframe')
f(9,243,3,5,'do_syscall_64')
f(10,243,2,5,'__x64_sys_futex')
f(11,243,2,5,'do_futex')
f(12,243,2,5,'futex_wait')
f(13,243,2,5,'futex_wait_queue_me')
f(14,243,2,5,'schedule')
f(15,243,2,5,'__schedule')
f(16,243,2,5,'finish_task_switch.isra.0')
f(10,245,1,5,'syscall_exit_to_user_mode')
f(11,245,1,5,'exit_to_user_mode_prepare')
f(12,245,1,5,'exit_to_user_mode_loop')
f(13,245,1,5,'__rseq_handle_notify_resume')
f(14,245,1,5,'rseq_ip_fixup')
f(15,245,1,5,'__get_user_8')
f(7,246,2,3,'pthread_cond_wait')
f(1,248,19,1,'java/lang/Thread.run')
f(2,248,19,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,248,19,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,248,19,1,'java/util/concurrent/FutureTask.run')
f(5,248,19,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,248,19,1,'java/util/concurrent/FutureTask.run')
f(7,248,19,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,248,19,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,248,19,1,'java/lang/reflect/Method.invoke')
f(10,248,19,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,248,19,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,248,19,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,248,19,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_Throughput')
f(14,248,19,1,'kyo/bench/jmh_generated/DeepBindBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,249,18,1,'kyo/bench/Bench.forkCats')
f(16,249,18,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,249,18,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,249,11,1,'cats/effect/IO.unsafeRunAsync')
f(19,249,11,1,'cats/effect/IO.unsafeRunFiber')
f(20,249,1,2,'cats/effect/unsafe/StripedHashtable.put',1,0,0)
f(20,250,10,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,250,10,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,250,10,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,250,10,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,250,10,1,'jdk/internal/misc/Unsafe.unpark')
f(25,250,10,3,'pthread_cond_signal')
f(26,252,8,5,'entry_SYSCALL_64_after_hwframe')
f(27,252,8,5,'do_syscall_64')
f(28,252,8,5,'__x64_sys_futex')
f(29,252,8,5,'do_futex')
f(30,252,8,5,'futex_wake')
f(31,252,8,5,'wake_up_q')
f(32,252,8,5,'_raw_spin_unlock_irqrestore')
f(18,260,7,1,'scala/concurrent/package$.blocking')
f(19,260,7,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,260,7,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ebf0.apply',1,0,0)
f(21,260,7,1,'cats/effect/IOPlatform.$anonfun$1',1,0,0)
f(22,260,7,1,'java/util/concurrent/ArrayBlockingQueue.poll',1,0,0)
f(23,260,7,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos',1,0,0)
f(24,260,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.enableWait',1,0,0)
f(25,260,1,3,'clock_gettime')
f(26,260,1,3,'[vdso]')
f(24,261,6,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,261,6,1,'jdk/internal/misc/Unsafe.park')
f(26,261,6,3,'[unknown]')
f(27,261,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,261,6,5,'entry_SYSCALL_64_after_hwframe')
f(29,261,6,5,'do_syscall_64')
f(30,261,6,5,'__x64_sys_futex')
f(31,262,5,5,'do_futex')
f(32,262,5,5,'futex_wait')
f(33,262,5,5,'futex_wait_queue_me')
f(34,262,5,5,'schedule')
f(35,262,5,5,'__schedule')
f(36,262,5,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: 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,25239,3,'all')
f(1,0,22599,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,22599,1,'cats/effect/IOFiber.run')
f(3,0,21112,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,21112,1,'cats/effect/IOFiber.runLoop')
f(5,0,21103,1,'cats/effect/IOFiber.next$2')
f(6,0,21103,1,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.apply')
f(7,0,21103,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,0,21103,1,'kyo/bench/DeepBindBench.loop$2')
f(9,0,10592,1,'cats/effect/IO.flatMap')
f(10,0,10592,1,'cats/effect/IO$FlatMap$.apply')
f(11,0,10592,2,'cats.effect.IO$FlatMap')
f(9,10592,10511,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,10592,10511,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(11,10592,10511,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,10592,10511,2,'kyo.bench.DeepBindBench$$Lambda$40+0x0000000800d13078')
f(5,21103,9,1,'cats/effect/IOFiber.succeeded')
f(6,21103,9,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,21103,1,1,'cats/effect/IO$.pure')
f(8,21103,1,1,'cats/effect/IO$Pure$.apply')
f(9,21103,1,2,'cats.effect.IO$Pure')
f(7,21104,8,1,'cats/effect/IOFiber.done')
f(8,21104,7,1,'cats/effect/CallbackStack.apply')
f(9,21104,7,1,'scala/runtime/function/JProcedure1.apply')
f(10,21104,7,1,'scala/runtime/function/JProcedure1.apply')
f(11,21104,7,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(12,21104,7,1,'cats/effect/IO.$anonfun$6')
f(13,21104,3,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,21104,3,1,'cats/effect/kernel/Outcome.fold$')
f(15,21104,3,1,'cats/effect/kernel/Outcome.fold')
f(16,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(17,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(18,21104,3,1,'cats/effect/IO$$Lambda$94.0x0000000800d5a6c8.applyVoid')
f(19,21104,3,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(21,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(22,21104,3,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(23,21104,3,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(25,21104,3,1,'scala/runtime/function/JProcedure1.apply')
f(26,21104,3,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(27,21104,3,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,21104,3,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,21104,3,1,'java/util/concurrent/ArrayBlockingQueue.enqueue')
f(30,21104,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.signal')
f(31,21104,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.doSignal')
f(32,21104,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.enqueue')
f(33,21104,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(34,21104,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(13,21107,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,21107,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,21107,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,21107,2,2,'cats.effect.IO$$Lambda$93+0x0000000800d5a2c0')
f(16,21109,2,2,'cats.effect.IO$$Lambda$94+0x0000000800d5a6c8')
f(8,21111,1,1,'cats/effect/IO$.pure')
f(9,21111,1,1,'cats/effect/IO$Pure$.apply')
f(10,21111,1,2,'cats.effect.IO$Pure')
f(3,21112,1487,1,'cats/effect/IOFiber.execR')
f(4,21112,5,1,'cats/effect/ArrayStack.init')
f(5,21112,5,2,'java.lang.Object[]')
f(4,21117,298,1,'cats/effect/ByteStack$.create')
f(5,21117,298,2,'int[]')
f(4,21415,1184,1,'cats/effect/IOFiber.runLoop')
f(5,21415,1184,1,'cats/effect/IOFiber.next$2')
f(6,21415,1184,1,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.apply')
f(7,21415,1184,1,'kyo/bench/DeepBindBench.loop$2$$anonfun$1')
f(8,21415,1184,1,'kyo/bench/DeepBindBench.loop$2')
f(9,21415,628,1,'cats/effect/IO.flatMap')
f(10,21415,628,1,'cats/effect/IO$FlatMap$.apply')
f(11,21415,628,2,'cats.effect.IO$FlatMap')
f(9,22043,556,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,22043,556,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(11,22043,556,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,22043,556,2,'kyo.bench.DeepBindBench$$Lambda$40+0x0000000800d13078')
f(1,22599,2636,1,'java/lang/Thread.run')
f(2,22599,2636,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,22599,2636,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,22599,2636,1,'java/util/concurrent/FutureTask.run')
f(5,22599,2636,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,22599,2636,1,'java/util/concurrent/FutureTask.run')
f(7,22599,2636,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,22599,2636,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,22599,2636,1,'java/lang/reflect/Method.invoke')
f(10,22599,2636,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,22599,2636,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,22599,2636,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,22599,2636,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_Throughput')
f(14,22599,2636,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,22599,2636,1,'kyo/bench/Bench.syncCats')
f(16,22599,2418,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,22599,2339,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,22599,1316,1,'cats/effect/IO.unsafeRunAsync')
f(19,22599,1152,1,'cats/effect/IO.unsafeRunFiber')
f(20,22599,294,2,'cats.effect.IOFiber')
f(20,22893,699,1,'cats/effect/IOFiber.<init>')
f(21,22893,136,1,'cats/effect/ArrayStack$.apply')
f(22,22893,136,2,'cats.effect.ArrayStack')
f(21,23029,131,1,'cats/effect/CallbackStack$.apply')
f(22,23029,131,2,'cats.effect.CallbackStack')
f(21,23160,172,1,'cats/effect/IO$.async')
f(22,23160,32,2,'cats.effect.IO$$anon$4')
f(22,23192,140,1,'cats/effect/IO$IOCont$.apply')
f(23,23192,140,2,'cats.effect.IO$IOCont')
f(21,23332,47,1,'cats/effect/IO$.uncancelable')
f(22,23332,47,1,'cats/effect/IO$Uncancelable$.apply')
f(23,23332,47,2,'cats.effect.IO$Uncancelable')
f(21,23379,213,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,23379,213,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,23379,213,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,23379,148,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5e028')
f(24,23527,65,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e618')
f(20,23592,70,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,23592,70,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,23592,70,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,23592,70,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,23592,70,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,23662,89,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,23662,89,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,23662,89,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,23662,89,2,'cats.effect.IO$$Lambda$88+0x0000000800d5d1f0')
f(19,23751,164,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,23751,164,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,23751,164,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,23751,45,2,'cats.effect.IO$$Lambda$85+0x0000000800d57a08')
f(22,23796,42,2,'cats.effect.IO$$Lambda$86+0x0000000800d5c000')
f(22,23838,77,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c408')
f(18,23915,235,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,24150,92,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,24150,92,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,24150,92,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,24150,92,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57600')
f(18,24242,494,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,24242,494,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,24242,102,2,'java.lang.Object[]')
f(20,24344,37,2,'java.util.concurrent.locks.ReentrantLock')
f(20,24381,96,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,24381,96,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,24477,259,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,24477,259,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,24477,259,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,24736,105,1,'scala/concurrent/package$.blocking')
f(19,24736,105,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,24736,105,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5eff8.apply')
f(21,24736,105,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,24736,105,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,24736,105,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,24736,105,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,24841,97,1,'scala/util/Either.fold')
f(19,24841,97,1,'cats/effect/IOPlatform$$Lambda$96.0x0000000800d5b178.apply')
f(20,24841,97,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,24841,97,1,'scala/Some$.apply')
f(22,24841,97,2,'scala.Some')
f(17,24938,79,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,24938,79,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,24938,79,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,24938,79,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,24938,79,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,24938,79,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,24938,79,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,24938,79,2,'scala.concurrent.duration.FiniteDuration')
f(16,25017,218,1,'kyo/bench/DeepBindBench.catsBench')
f(17,25017,218,1,'kyo/bench/DeepBindBench.loop$2')
f(18,25017,84,1,'cats/effect/IO.flatMap')
f(19,25017,84,1,'cats/effect/IO$FlatMap$.apply')
f(20,25017,84,2,'cats.effect.IO$FlatMap')
f(18,25101,134,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,25101,134,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(20,25101,134,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,25101,134,2,'kyo.bench.DeepBindBench$$Lambda$40+0x0000000800d13078')
f(1,25235,4,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,25235,4,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,25235,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,25235,4,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,25235,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,25235,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,25235,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,25235,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,25235,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,25235,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,25235,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,25235,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,25235,3,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,25238,1,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,25238,1,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,25238,1,1,'java/lang/ClassLoader.loadClass')
f(10,25238,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,25238,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,25238,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,25238,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,25238,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,25238,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,25238,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,25238,1,1,'java/util/jar/JarFile.getEntry')
f(18,25238,1,1,'java/util/zip/ZipFile.getEntry')
f(19,25238,1,1,'java/util/zip/ZipFile.getZipEntry')
f(20,25238,1,1,'java/util/jar/JavaUtilJarAccessImpl.entryFor')
f(21,25238,1,1,'java/util/jar/JarFile.entryFor')
f(22,25238,1,2,'java.util.jar.JarFile$JarFileEntry')
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,'SafepointSynchronize::begin()')
f(7,0,1,4,'SafepointSynchronize::do_cleanup_tasks()')
f(8,0,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(9,0,1,3,'sem_post')
f(10,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,0,1,5,'do_syscall_64')
f(12,0,1,5,'__x64_sys_futex')
f(13,0,1,5,'do_futex')
f(14,0,1,5,'futex_wake')
f(15,0,1,5,'wake_up_q')
f(16,0,1,5,'_raw_spin_unlock_irqrestore')
f(1,1,243,1,'cats/effect/unsafe/WorkerThread.run')
f(2,1,228,1,'cats/effect/IOFiber.run',1,0,0)
f(3,1,214,1,'cats/effect/IOFiber.autoCedeR')
f(4,1,214,1,'cats/effect/IOFiber.runLoop')
f(5,126,10,2,'cats/effect/IO$FlatMap.ioe',10,0,0)
f(5,136,46,2,'cats/effect/IOFiber.next$2',46,0,0)
f(6,139,43,2,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.apply',43,0,0)
f(7,154,28,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',28,0,0)
f(8,154,28,2,'kyo/bench/DeepBindBench.loop$2',28,0,0)
f(9,154,16,2,'cats/effect/IO.flatMap',16,0,0)
f(10,154,16,2,'cats/effect/IO$FlatMap$.apply',16,0,0)
f(11,168,2,2,'cats/effect/IO$FlatMap.<init>',2,0,0)
f(9,170,12,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',12,0,0)
f(10,170,12,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial',12,0,0)
f(11,170,7,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',7,0,0)
f(11,177,5,2,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.<init>',5,0,0)
f(5,182,18,2,'cats/effect/IOFiber.shouldFinalize',18,0,0)
f(5,200,15,1,'cats/effect/IOFiber.succeeded')
f(6,200,15,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,200,15,1,'cats/effect/IOFiber.done')
f(8,200,15,1,'cats/effect/CallbackStack.apply')
f(9,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(10,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(11,200,15,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(12,200,15,1,'cats/effect/IO.$anonfun$6')
f(13,200,15,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,200,15,1,'cats/effect/kernel/Outcome.fold$')
f(15,200,15,1,'cats/effect/kernel/Outcome.fold')
f(16,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(17,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(18,200,15,1,'cats/effect/IO$$Lambda$94.0x0000000800d5a6c8.applyVoid')
f(19,200,15,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(21,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(22,200,15,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(23,200,15,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(25,200,15,1,'scala/runtime/function/JProcedure1.apply')
f(26,200,15,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(27,200,15,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,200,15,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,200,15,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,200,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,200,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,200,15,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,200,15,1,'jdk/internal/misc/Unsafe.unpark')
f(34,200,15,3,'pthread_cond_signal')
f(35,200,15,5,'entry_SYSCALL_64_after_hwframe')
f(36,200,15,5,'do_syscall_64')
f(37,200,14,5,'__x64_sys_futex')
f(38,200,14,5,'do_futex')
f(39,200,14,5,'futex_wake')
f(40,201,13,5,'wake_up_q')
f(41,201,13,5,'_raw_spin_unlock_irqrestore')
f(37,214,1,5,'syscall_enter_from_user_mode')
f(3,215,14,1,'cats/effect/IOFiber.execR',1,0,0)
f(4,215,1,2,'cats/effect/ArrayStack.init',1,0,0)
f(4,216,13,1,'cats/effect/IOFiber.runLoop')
f(5,224,4,2,'cats/effect/IOFiber.next$2',4,0,0)
f(6,224,4,2,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.apply',4,0,0)
f(7,225,3,2,'kyo/bench/DeepBindBench.loop$2$$anonfun$1',3,0,0)
f(8,225,3,2,'kyo/bench/DeepBindBench.loop$2',3,0,0)
f(9,225,2,2,'cats/effect/IO.flatMap',2,0,0)
f(10,225,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(9,227,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(10,227,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial',1,0,0)
f(11,227,1,2,'kyo/bench/DeepBindBench$$Lambda$40.0x0000000800d13078.<init>',1,0,0)
f(5,228,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(2,229,3,2,'cats/effect/unsafe/ScalQueue.poll',3,0,0)
f(3,230,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(4,230,1,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',1,0,0)
f(3,231,1,4,'os::javaTimeNanos()')
f(2,232,1,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(2,233,2,2,'cats/effect/unsafe/WorkStealingThreadPool.stealTimers',2,0,0)
f(3,233,1,3,'clock_gettime')
f(4,233,1,3,'[vdso]')
f(3,234,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(2,235,9,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,235,9,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,235,9,1,'java/util/concurrent/locks/LockSupport.park')
f(5,235,9,1,'jdk/internal/misc/Unsafe.park')
f(6,235,1,3,'Unsafe_Park')
f(7,235,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,235,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,235,1,5,'do_syscall_64')
f(10,235,1,5,'__x64_sys_futex')
f(11,235,1,5,'do_futex')
f(12,235,1,5,'futex_wake')
f(6,236,8,3,'[unknown]')
f(7,236,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,237,7,5,'entry_SYSCALL_64_after_hwframe')
f(9,237,7,5,'do_syscall_64')
f(10,237,7,5,'__x64_sys_futex')
f(11,237,7,5,'do_futex')
f(12,237,7,5,'futex_wait')
f(13,237,6,5,'futex_wait_queue_me')
f(14,237,6,5,'schedule')
f(15,237,6,5,'__schedule')
f(16,237,6,5,'finish_task_switch.isra.0')
f(13,243,1,5,'futex_wait_setup')
f(14,243,1,5,'get_futex_key')
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_syncCats_jmhTest.syncCats_Throughput')
f(14,244,21,1,'kyo/bench/jmh_generated/DeepBindBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,244,21,1,'kyo/bench/Bench.syncCats')
f(16,244,21,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,244,21,1,'cats/effect/IOPlatform.unsafeRunTimed',3,0,0)
f(18,244,14,1,'cats/effect/IO.unsafeRunAsync',2,0,0)
f(19,244,14,1,'cats/effect/IO.unsafeRunFiber',2,0,0)
f(20,244,1,1,'cats/effect/IOFiber.<init>')
f(20,245,1,2,'cats/effect/unsafe/StripedHashtable.put',1,0,0)
f(21,245,1,2,'cats/effect/unsafe/ThreadSafeHashtable.put',1,0,0)
f(22,245,1,2,'cats/effect/unsafe/ThreadSafeHashtable.insert',1,0,0)
f(20,246,12,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',1,0,0)
f(21,246,12,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal',1,0,0)
f(22,246,12,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(23,247,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,247,11,1,'jdk/internal/misc/Unsafe.unpark')
f(25,248,10,3,'pthread_cond_signal')
f(26,248,10,5,'entry_SYSCALL_64_after_hwframe')
f(27,248,10,5,'do_syscall_64')
f(28,248,9,5,'__x64_sys_futex')
f(29,248,9,5,'do_futex')
f(30,248,9,5,'futex_wake')
f(31,248,9,5,'wake_up_q')
f(32,248,9,5,'_raw_spin_unlock_irqrestore')
f(28,257,1,5,'syscall_enter_from_user_mode')
f(18,258,1,2,'java/util/concurrent/ArrayBlockingQueue.<init>',1,0,0)
f(19,258,1,2,'java/util/concurrent/ArrayBlockingQueue.<init>',1,0,0)
f(20,258,1,2,'java/util/concurrent/locks/ReentrantLock.<init>',1,0,0)
f(21,258,1,2,'java/util/concurrent/locks/ReentrantLock$NonfairSync.<init>',1,0,0)
f(22,258,1,2,'java/util/concurrent/locks/ReentrantLock$Sync.<init>',1,0,0)
f(23,258,1,3,'clock_gettime')
f(24,258,1,3,'[vdso]')
f(18,259,6,1,'scala/concurrent/package$.blocking')
f(19,259,6,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,259,6,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5eff8.apply')
f(21,259,6,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,259,6,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,259,6,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,259,6,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,259,6,1,'jdk/internal/misc/Unsafe.park')
f(26,259,6,3,'[unknown]')
f(27,259,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,259,6,5,'entry_SYSCALL_64_after_hwframe')
f(29,259,6,5,'do_syscall_64')
f(30,259,6,5,'__x64_sys_futex')
f(31,260,5,5,'do_futex')
f(32,260,5,5,'futex_wait')
f(33,260,5,5,'futex_wait_queue_me')
f(34,260,5,5,'schedule')
f(35,260,5,5,'__schedule')
f(36,260,5,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,10531,3,'all')
f(1,0,10133,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10133,1,'cats/effect/IOFiber.run')
f(3,0,9941,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,9941,1,'cats/effect/IOFiber.runLoop')
f(5,0,6132,1,'cats/effect/IOFiber.next$2')
f(6,0,6132,1,'kyo/bench/DeepBindMapBench$$Lambda$92.0x0000000800d5f4d8.apply')
f(7,0,6132,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,0,446,1,'cats/effect/IO$.apply')
f(9,0,446,1,'cats/effect/IO$.delay')
f(10,0,446,1,'cats/effect/IO$Delay$.apply')
f(11,0,446,2,'cats.effect.IO$Delay')
f(8,446,404,1,'cats/effect/IO.flatMap')
f(9,446,404,1,'cats/effect/IO$FlatMap$.apply')
f(10,446,404,2,'cats.effect.IO$FlatMap')
f(8,850,4620,1,'cats/effect/IO.map')
f(9,850,4620,1,'cats/effect/IO$Map$.apply')
f(10,850,4620,2,'cats.effect.IO$Map')
f(8,5470,662,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5470,662,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5470,662,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5470,329,2,'kyo.bench.DeepBindMapBench$$Lambda$105+0x0000000800d607d0')
f(11,5799,333,2,'kyo.bench.DeepBindMapBench$$Lambda$93+0x0000000800d5fab0')
f(5,6132,3541,1,'cats/effect/IOFiber.succeeded')
f(6,6132,850,1,'kyo/bench/DeepBindMapBench$$Lambda$105.0x0000000800d607d0.apply')
f(7,6132,850,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,6132,850,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,6132,850,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,6132,424,1,'cats/effect/IO.flatMap')
f(11,6132,424,1,'cats/effect/IO$FlatMap$.apply')
f(12,6132,424,2,'cats.effect.IO$FlatMap')
f(10,6556,426,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6556,426,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial')
f(12,6556,426,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6556,426,2,'kyo.bench.DeepBindMapBench$$Lambda$92+0x0000000800d5f4d8')
f(6,6982,2691,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,6982,2691,1,'java/lang/Integer.valueOf')
f(8,6982,2691,2,'java.lang.Integer')
f(5,9673,268,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(6,9673,268,1,'java/lang/Integer.valueOf')
f(7,9673,268,2,'java.lang.Integer')
f(3,9941,58,1,'cats/effect/IOFiber.cedeR')
f(4,9941,58,1,'cats/effect/IOFiber.runLoop')
f(5,9941,49,1,'cats/effect/IOFiber.next$2')
f(6,9941,49,1,'kyo/bench/DeepBindMapBench$$Lambda$92.0x0000000800d5f4d8.apply')
f(7,9941,49,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,9941,4,1,'cats/effect/IO$.apply')
f(9,9941,4,1,'cats/effect/IO$.delay')
f(10,9941,4,1,'cats/effect/IO$Delay$.apply')
f(11,9941,4,2,'cats.effect.IO$Delay')
f(8,9945,5,1,'cats/effect/IO.flatMap')
f(9,9945,5,1,'cats/effect/IO$FlatMap$.apply')
f(10,9945,5,2,'cats.effect.IO$FlatMap')
f(8,9950,34,1,'cats/effect/IO.map')
f(9,9950,34,1,'cats/effect/IO$Map$.apply')
f(10,9950,34,2,'cats.effect.IO$Map')
f(8,9984,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,9984,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,9984,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,9984,2,2,'kyo.bench.DeepBindMapBench$$Lambda$105+0x0000000800d607d0')
f(11,9986,4,2,'kyo.bench.DeepBindMapBench$$Lambda$93+0x0000000800d5fab0')
f(5,9990,9,1,'cats/effect/IOFiber.succeeded')
f(6,9990,9,1,'kyo/bench/DeepBindMapBench$$Lambda$105.0x0000000800d607d0.apply')
f(7,9990,9,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,9990,9,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,9990,9,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,9990,5,1,'cats/effect/IO.flatMap')
f(11,9990,5,1,'cats/effect/IO$FlatMap$.apply')
f(12,9990,5,2,'cats.effect.IO$FlatMap')
f(10,9995,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,9995,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial')
f(12,9995,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,9995,4,2,'kyo.bench.DeepBindMapBench$$Lambda$92+0x0000000800d5f4d8')
f(3,9999,134,1,'cats/effect/IOFiber.execR')
f(4,9999,1,1,'cats/effect/ArrayStack.init')
f(5,9999,1,2,'java.lang.Object[]')
f(4,10000,133,1,'cats/effect/ByteStack$.create')
f(5,10000,133,2,'int[]')
f(1,10133,395,1,'java/lang/Thread.run')
f(2,10133,395,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10133,395,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10133,395,1,'java/util/concurrent/FutureTask.run')
f(5,10133,395,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10133,395,1,'java/util/concurrent/FutureTask.run')
f(7,10133,395,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10133,395,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10133,395,1,'java/lang/reflect/Method.invoke')
f(10,10133,395,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10133,395,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10133,395,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10133,395,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,10133,394,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,10133,394,1,'kyo/bench/Bench.forkCats')
f(16,10133,394,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10133,284,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10133,27,1,'cats/effect/IO.unsafeRunAsync')
f(19,10133,27,1,'cats/effect/IO.unsafeRunFiber')
f(20,10133,3,2,'cats.effect.IOFiber')
f(20,10136,3,5,'cats.effect.IOFiber')
f(20,10139,10,1,'cats/effect/IOFiber.<init>')
f(21,10139,6,1,'cats/effect/ArrayStack$.apply')
f(22,10139,6,2,'cats.effect.ArrayStack')
f(21,10145,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10145,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10145,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10145,4,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,10145,4,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(20,10149,11,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10149,11,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,10149,11,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10149,11,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,10149,11,2,'cats.effect.IO$$Lambda$88+0x0000000800d5cfe8')
f(18,10160,15,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10160,15,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10160,15,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10160,15,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,10160,15,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57348')
f(18,10175,47,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,10175,47,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,10175,37,2,'java.util.concurrent.locks.ReentrantLock')
f(20,10212,10,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,10212,10,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,10212,10,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,10222,195,1,'scala/util/Either.fold')
f(19,10222,195,1,'cats/effect/IOPlatform$$Lambda$110.0x0000000800d61ff8.apply')
f(20,10222,195,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,10222,195,1,'scala/Some$.apply')
f(22,10222,195,2,'scala.Some')
f(17,10417,110,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,10417,110,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,10417,110,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,10417,110,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,10417,110,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,10417,110,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,10417,110,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,10417,110,2,'scala.concurrent.duration.FiniteDuration')
f(14,10527,1,2,'org.openjdk.jmh.results.ThroughputResult')
f(1,10528,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,10528,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,10528,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,10528,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,10528,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,10528,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,10528,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,10528,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,10528,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,10528,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,10528,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,10528,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,10528,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: 528px}
</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(33);
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,7,3,'[unknown_Java]')
f(2,0,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(2,1,5,6,'cats/effect/IO$Map.tag',0,5,0)
f(2,6,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(1,7,283,1,'cats/effect/unsafe/WorkerThread.run')
f(2,7,282,1,'cats/effect/IOFiber.run')
f(3,7,280,1,'cats/effect/IOFiber.autoCedeR')
f(4,7,280,1,'cats/effect/IOFiber.runLoop')
f(5,19,6,2,'cats/effect/ByteStack$.push',6,0,0)
f(5,25,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(5,27,11,6,'cats/effect/IO$Map.tag',0,11,0)
f(5,38,4,6,'cats/effect/IO$Pure.tag',0,4,0)
f(5,42,99,2,'cats/effect/IOFiber.next$2',99,0,0)
f(6,42,99,2,'kyo/bench/DeepBindMapBench$$Lambda$92.0x0000000800d5f2d8.apply',99,0,0)
f(7,44,97,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',97,0,0)
f(8,51,3,2,'cats/effect/IO$.apply',3,0,0)
f(8,54,4,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',4,0,0)
f(8,58,83,2,'scala/runtime/BoxesRunTime.boxToInteger',83,0,0)
f(5,141,2,2,'cats/effect/IOFiber.rescheduleFiber',1,0,0)
f(6,142,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(5,143,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,144,135,1,'cats/effect/IOFiber.succeeded')
f(6,171,4,2,'cats/effect/ArrayStack.pop',4,0,0)
f(6,175,18,2,'cats/effect/ByteStack$.pop',18,0,0)
f(7,182,11,2,'cats/effect/ByteStack$.peek',11,0,0)
f(6,193,37,3,'itable stub')
f(6,230,2,2,'kyo/bench/DeepBindMapBench$$Lambda$105.0x0000000800d603e8.apply',2,0,0)
f(7,230,2,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1',2,0,0)
f(8,230,2,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12',2,0,0)
f(9,230,2,2,'kyo/bench/DeepBindMapBench.loop$2',2,0,0)
f(10,230,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(11,230,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59000.newInvokeSpecial',2,0,0)
f(12,230,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(6,232,47,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,261,6,3,'itable stub')
f(7,267,4,2,'java/lang/Integer.valueOf',4,0,0)
f(7,271,1,1,'kyo/bench/DeepBindMapBench$$Lambda$100.0x0000000800d5bb78.apply$mcII$sp')
f(7,272,1,1,'kyo/bench/DeepBindMapBench$$Lambda$101.0x0000000800d59800.apply$mcII$sp')
f(7,273,1,1,'kyo/bench/DeepBindMapBench$$Lambda$102.0x0000000800d59be8.apply$mcII$sp')
f(7,274,3,1,'kyo/bench/DeepBindMapBench$$Lambda$103.0x0000000800d59400.apply$mcII$sp')
f(7,277,1,1,'kyo/bench/DeepBindMapBench$$Lambda$104.0x0000000800d60000.apply$mcII$sp')
f(8,277,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$11',1,0,0)
f(7,278,1,1,'kyo/bench/DeepBindMapBench$$Lambda$97.0x0000000800d5afc0.apply$mcII$sp')
f(5,279,8,3,'vtable stub')
f(3,287,2,1,'cats/effect/IOFiber.cedeR')
f(4,287,2,1,'cats/effect/IOFiber.runLoop')
f(5,287,2,1,'cats/effect/IOFiber.succeeded')
f(6,287,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(6,288,1,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,288,1,1,'kyo/bench/DeepBindMapBench$$Lambda$97.0x0000000800d5afc0.apply$mcII$sp')
f(2,289,1,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,289,1,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,289,1,1,'java/util/concurrent/locks/LockSupport.park')
f(5,289,1,1,'jdk/internal/misc/Unsafe.park')
f(6,289,1,3,'[unknown]')
f(7,289,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,289,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,289,1,5,'do_syscall_64')
f(10,289,1,5,'__x64_sys_futex')
f(11,289,1,5,'do_futex')
f(12,289,1,5,'futex_wait')
f(13,289,1,5,'futex_wait_queue_me')
f(14,289,1,5,'schedule')
f(15,289,1,5,'__schedule')
f(16,289,1,5,'finish_task_switch.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/DeepBindMapBench_forkCats_jmhTest.forkCats_Throughput')
f(14,290,2,1,'kyo/bench/jmh_generated/DeepBindMapBench_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,1,1,'cats/effect/IO.unsafeRunAsync')
f(19,290,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,290,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,290,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,290,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,290,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,290,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,290,1,3,'pthread_cond_signal')
f(26,290,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,290,1,5,'do_syscall_64')
f(28,290,1,5,'__x64_sys_futex')
f(29,290,1,5,'do_futex')
f(30,290,1,5,'futex_wake')
f(31,290,1,5,'wake_up_q')
f(32,290,1,5,'_raw_spin_unlock_irqrestore')
f(18,291,1,1,'scala/concurrent/package$.blocking')
f(19,291,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,291,1,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ebf0.apply')
f(21,291,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,291,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,291,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
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')
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,10707,3,'all')
f(1,0,10269,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,10269,1,'cats/effect/IOFiber.run')
f(3,0,10074,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,10074,1,'cats/effect/IOFiber.runLoop')
f(5,0,6132,1,'cats/effect/IOFiber.next$2')
f(6,0,6132,1,'kyo/bench/DeepBindMapBench$$Lambda$40.0x0000000800d13078.apply')
f(7,0,6132,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,0,427,1,'cats/effect/IO$.apply')
f(9,0,427,1,'cats/effect/IO$.delay')
f(10,0,427,1,'cats/effect/IO$Delay$.apply')
f(11,0,427,2,'cats.effect.IO$Delay')
f(8,427,467,1,'cats/effect/IO.flatMap')
f(9,427,467,1,'cats/effect/IO$FlatMap$.apply')
f(10,427,467,2,'cats.effect.IO$FlatMap')
f(8,894,4599,1,'cats/effect/IO.map')
f(9,894,4599,1,'cats/effect/IO$Map$.apply')
f(10,894,4599,2,'cats.effect.IO$Map')
f(8,5493,639,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,5493,639,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,5493,639,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,5493,331,2,'kyo.bench.DeepBindMapBench$$Lambda$104+0x0000000800d60000')
f(11,5824,308,2,'kyo.bench.DeepBindMapBench$$Lambda$92+0x0000000800d5f4c0')
f(5,6132,3629,1,'cats/effect/IOFiber.succeeded')
f(6,6132,895,1,'kyo/bench/DeepBindMapBench$$Lambda$104.0x0000000800d60000.apply')
f(7,6132,895,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,6132,895,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,6132,895,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,6132,411,1,'cats/effect/IO.flatMap')
f(11,6132,411,1,'cats/effect/IO$FlatMap$.apply')
f(12,6132,411,2,'cats.effect.IO$FlatMap')
f(10,6543,484,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,6543,484,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(12,6543,484,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,6543,484,2,'kyo.bench.DeepBindMapBench$$Lambda$40+0x0000000800d13078')
f(6,7027,2734,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,7027,2734,1,'java/lang/Integer.valueOf')
f(8,7027,2734,2,'java.lang.Integer')
f(5,9761,313,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(6,9761,313,1,'java/lang/Integer.valueOf')
f(7,9761,313,2,'java.lang.Integer')
f(3,10074,195,1,'cats/effect/IOFiber.execR')
f(4,10074,142,1,'cats/effect/ByteStack$.create')
f(5,10074,142,2,'int[]')
f(4,10216,53,1,'cats/effect/IOFiber.runLoop')
f(5,10216,42,1,'cats/effect/IOFiber.next$2')
f(6,10216,42,1,'kyo/bench/DeepBindMapBench$$Lambda$40.0x0000000800d13078.apply')
f(7,10216,42,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1')
f(8,10216,2,1,'cats/effect/IO.flatMap')
f(9,10216,2,1,'cats/effect/IO$FlatMap$.apply')
f(10,10216,2,2,'cats.effect.IO$FlatMap')
f(8,10218,40,1,'cats/effect/IO.map')
f(9,10218,40,1,'cats/effect/IO$Map$.apply')
f(10,10218,40,2,'cats.effect.IO$Map')
f(5,10258,11,1,'cats/effect/IOFiber.succeeded')
f(6,10258,11,1,'kyo/bench/DeepBindMapBench$$Lambda$104.0x0000000800d60000.apply')
f(7,10258,11,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$adapted$1')
f(8,10258,11,1,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1$$anonfun$12')
f(9,10258,11,1,'kyo/bench/DeepBindMapBench.loop$2')
f(10,10258,3,1,'cats/effect/IO.flatMap')
f(11,10258,3,1,'cats/effect/IO$FlatMap$.apply')
f(12,10258,3,2,'cats.effect.IO$FlatMap')
f(10,10261,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,10261,8,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(12,10261,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,10261,8,2,'kyo.bench.DeepBindMapBench$$Lambda$40+0x0000000800d13078')
f(1,10269,435,1,'java/lang/Thread.run')
f(2,10269,435,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,10269,435,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,10269,435,1,'java/util/concurrent/FutureTask.run')
f(5,10269,435,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,10269,435,1,'java/util/concurrent/FutureTask.run')
f(7,10269,435,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,10269,435,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,10269,435,1,'java/lang/reflect/Method.invoke')
f(10,10269,435,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,10269,435,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,10269,435,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,10269,435,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_Throughput')
f(14,10269,434,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,10269,434,1,'kyo/bench/Bench.syncCats')
f(16,10269,400,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,10269,392,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,10269,270,1,'cats/effect/IO.unsafeRunAsync')
f(19,10269,270,1,'cats/effect/IO.unsafeRunFiber')
f(20,10269,9,2,'cats.effect.IOFiber')
f(20,10278,24,5,'cats.effect.IOFiber')
f(20,10302,187,1,'cats/effect/IOFiber.<init>')
f(21,10302,75,1,'cats/effect/ArrayStack$.apply')
f(22,10302,75,2,'cats.effect.ArrayStack')
f(21,10377,21,1,'cats/effect/CallbackStack$.apply')
f(22,10377,21,2,'cats.effect.CallbackStack')
f(21,10398,47,1,'cats/effect/IO$.async')
f(22,10398,22,2,'cats.effect.IO$$anon$4')
f(22,10420,25,1,'cats/effect/IO$IOCont$.apply')
f(23,10420,25,2,'cats.effect.IO$IOCont')
f(21,10445,21,1,'cats/effect/IO$.uncancelable')
f(22,10445,21,1,'cats/effect/IO$Uncancelable$.apply')
f(23,10445,21,2,'cats.effect.IO$Uncancelable')
f(21,10466,23,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10466,23,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10466,23,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10466,23,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,10466,23,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5e028')
f(20,10489,25,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,10489,25,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,10489,25,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,10489,25,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,10489,25,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,10514,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10514,25,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,10514,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10514,25,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,10514,25,2,'cats.effect.IO$$Lambda$88+0x0000000800d5d1f0')
f(18,10539,21,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,10560,26,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10560,26,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10560,26,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10560,26,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,10560,26,2,'cats.effect.IOPlatform$$Lambda$91+0x0000000800d5eff8')
f(18,10586,6,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,10586,6,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,10586,3,2,'java.lang.Object[]')
f(20,10589,3,2,'java.util.concurrent.locks.ReentrantLock')
f(18,10592,34,1,'scala/concurrent/package$.blocking')
f(19,10592,34,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,10592,34,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5eff8.apply')
f(21,10592,34,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,10592,34,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,10592,34,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,10592,34,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,10626,35,1,'scala/util/Either.fold')
f(19,10626,35,1,'cats/effect/IOPlatform$$Lambda$109.0x0000000800d61a48.apply')
f(20,10626,35,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,10626,35,1,'scala/Some$.apply')
f(22,10626,35,2,'scala.Some')
f(17,10661,6,2,'scala.concurrent.duration.package$DurationLong')
f(17,10667,2,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,10667,2,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,10667,2,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,10667,2,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,10667,2,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,10667,2,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,10667,2,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,10667,2,2,'scala.concurrent.duration.FiniteDuration')
f(16,10669,34,1,'kyo/bench/DeepBindMapBench.catsBench')
f(17,10669,34,1,'kyo/bench/DeepBindMapBench.loop$2')
f(18,10669,17,1,'cats/effect/IO.flatMap')
f(19,10669,17,1,'cats/effect/IO$FlatMap$.apply')
f(20,10669,17,2,'cats.effect.IO$FlatMap')
f(18,10686,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10686,17,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d14800.newInvokeSpecial')
f(20,10686,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10686,17,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,10686,17,2,'kyo.bench.DeepBindMapBench$$Lambda$40+0x0000000800d13078')
f(14,10703,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,10703,1,1,'org/openjdk/jmh/results/Result.of')
f(16,10703,1,2,'org.openjdk.jmh.util.SingletonStatistics')
f(1,10704,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,10704,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,10704,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,10704,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,10704,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,10704,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,10704,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,10704,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,10704,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,10704,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,10704,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,10704,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,10704,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,1,3,'[unknown_Java]')
f(2,0,1,1,'cats/effect/IOFiber.succeeded')
f(1,1,292,1,'cats/effect/unsafe/WorkerThread.run')
f(2,1,291,1,'cats/effect/IOFiber.run')
f(3,1,289,1,'cats/effect/IOFiber.autoCedeR')
f(4,1,289,1,'cats/effect/IOFiber.runLoop')
f(5,28,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,29,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,33,10,6,'cats/effect/IO$Map.tag',0,10,0)
f(5,43,93,2,'cats/effect/IOFiber.next$2',93,0,0)
f(6,43,93,2,'kyo/bench/DeepBindMapBench$$Lambda$40.0x0000000800d13078.apply',93,0,0)
f(7,43,93,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',93,0,0)
f(8,43,22,2,'cats/effect/IO$.apply',22,0,0)
f(9,43,22,2,'cats/effect/IO$.delay',22,0,0)
f(10,43,22,2,'cats/effect/Thunk$.asFunction0',22,0,0)
f(8,65,15,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',15,0,0)
f(9,67,13,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',13,0,0)
f(10,70,10,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',10,0,0)
f(8,80,56,2,'scala/runtime/BoxesRunTime.boxToInteger',56,0,0)
f(5,136,1,1,'cats/effect/IOFiber.rescheduleFiber')
f(6,136,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(5,137,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,138,146,1,'cats/effect/IOFiber.succeeded')
f(6,165,1,5,'asm_sysvec_hyperv_stimer0')
f(7,165,1,5,'sysvec_hyperv_stimer0')
f(8,165,1,5,'irq_exit_rcu')
f(9,165,1,5,'__irq_exit_rcu')
f(10,165,1,5,'__softirqentry_text_start')
f(11,165,1,5,'run_rebalance_domains')
f(12,165,1,5,'update_blocked_averages')
f(6,166,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,167,15,2,'cats/effect/ByteStack$.pop',15,0,0)
f(7,171,11,2,'cats/effect/ByteStack$.peek',11,0,0)
f(6,182,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,182,2,1,'cats/effect/IOFiber.done')
f(8,182,2,1,'cats/effect/CallbackStack.apply')
f(9,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(11,182,2,1,'cats/effect/IO$$Lambda$88.0x0000000800d5d1f0.applyVoid')
f(12,182,2,1,'cats/effect/IO.$anonfun$6')
f(13,182,2,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,182,2,1,'cats/effect/kernel/Outcome.fold$')
f(15,182,2,1,'cats/effect/kernel/Outcome.fold')
f(16,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(17,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(18,182,2,1,'cats/effect/IO$$Lambda$107.0x0000000800d60f98.applyVoid')
f(19,182,2,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(21,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(22,182,2,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c408.applyVoid')
f(23,182,2,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(25,182,2,1,'scala/runtime/function/JProcedure1.apply')
f(26,182,2,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57600.applyVoid')
f(27,182,2,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,182,2,6,'java/util/concurrent/ArrayBlockingQueue.offer',0,1,0)
f(29,182,2,2,'java/util/concurrent/locks/ReentrantLock.unlock',1,0,0)
f(30,183,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,183,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,183,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,183,1,1,'jdk/internal/misc/Unsafe.unpark')
f(34,183,1,3,'pthread_cond_signal')
f(35,183,1,5,'entry_SYSCALL_64_after_hwframe')
f(36,183,1,5,'do_syscall_64')
f(37,183,1,5,'__x64_sys_futex')
f(38,183,1,5,'do_futex')
f(39,183,1,5,'futex_wake')
f(40,183,1,5,'wake_up_q')
f(41,183,1,5,'_raw_spin_unlock_irqrestore')
f(6,184,36,3,'itable stub')
f(6,220,64,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(7,252,25,3,'itable stub')
f(7,277,2,2,'java/lang/Integer.valueOf',2,0,0)
f(7,279,2,1,'kyo/bench/DeepBindMapBench$$Lambda$101.0x0000000800d593e8.apply$mcII$sp')
f(7,281,2,1,'kyo/bench/DeepBindMapBench$$Lambda$103.0x0000000800d59bb8.apply$mcII$sp')
f(7,283,1,1,'kyo/bench/DeepBindMapBench$$Lambda$96.0x0000000800d5afc0.apply$mcII$sp')
f(5,284,6,3,'vtable stub')
f(3,290,2,1,'cats/effect/IOFiber.execR')
f(4,290,2,1,'cats/effect/IOFiber.runLoop')
f(5,290,1,2,'cats/effect/IOFiber.next$2',1,0,0)
f(6,290,1,2,'kyo/bench/DeepBindMapBench$$Lambda$40.0x0000000800d13078.apply',1,0,0)
f(7,290,1,2,'kyo/bench/DeepBindMapBench.loop$2$$anonfun$1',1,0,0)
f(8,290,1,2,'scala/runtime/BoxesRunTime.boxToInteger',1,0,0)
f(5,291,1,1,'cats/effect/IOFiber.succeeded')
f(6,291,1,1,'scala/runtime/java8/JFunction1$mcII$sp.apply')
f(2,292,1,3,'clock_gettime')
f(3,292,1,3,'[vdso]')
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,1,'cats/effect/IO.unsafeRunAsync')
f(19,293,1,1,'cats/effect/IO.unsafeRunFiber')
f(20,293,1,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,293,1,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,293,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,293,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,293,1,1,'jdk/internal/misc/Unsafe.unpark')
f(25,293,1,3,'pthread_cond_signal')
f(26,293,1,5,'entry_SYSCALL_64_after_hwframe')
f(27,293,1,5,'do_syscall_64')
f(28,293,1,5,'__x64_sys_futex')
f(29,293,1,5,'do_futex')
f(30,293,1,5,'futex_wake')
f(31,293,1,5,'wake_up_q')
f(32,293,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: 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,21299,3,'all')
f(1,0,20887,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,20887,1,'cats/effect/IOFiber.run')
f(3,0,20482,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,20482,1,'cats/effect/IOFiber.runLoop')
f(5,0,768,2,'cats.effect.IOFiber$$anon$1')
f(5,768,7198,1,'cats/effect/IO$$$Lambda$105.0x0000000800d7f268.apply')
f(6,768,7198,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,768,1059,2,'cats.effect.IODeferred')
f(7,1827,6139,1,'cats/effect/IODeferred.<init>')
f(8,1827,741,1,'cats/effect/CallbackStack$.apply')
f(9,1827,741,2,'cats.effect.CallbackStack')
f(8,2568,1296,1,'cats/effect/IO$.asyncCheckAttempt')
f(9,2568,514,2,'cats.effect.IO$$anon$3')
f(9,3082,782,1,'cats/effect/IO$IOCont$.apply')
f(10,3082,782,2,'cats.effect.IO$IOCont')
f(8,3864,1622,1,'cats/effect/IO$.defer')
f(9,3864,806,1,'cats/effect/IO$.delay')
f(10,3864,806,1,'cats/effect/IO$Delay$.apply')
f(11,3864,806,2,'cats.effect.IO$Delay')
f(9,4670,816,1,'cats/effect/IO.flatten')
f(10,4670,816,1,'cats/effect/IO.flatMap')
f(11,4670,816,1,'cats/effect/IO$FlatMap$.apply')
f(12,4670,816,2,'cats.effect.IO$FlatMap')
f(8,5486,631,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,6117,482,2,'java.util.concurrent.atomic.AtomicReference')
f(8,6599,1367,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6599,1367,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6599,1367,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6599,540,2,'cats.effect.IODeferred$$Lambda$107+0x0000000800d7ec00')
f(11,7139,827,2,'cats.effect.IODeferred$$Lambda$108+0x0000000800d80000')
f(5,7966,2290,1,'cats/effect/IOFiber.succeeded')
f(6,7966,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,7966,1,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,7966,1,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,7967,771,1,'kyo/bench/EnqueueDequeueBench$$Lambda$104.0x0000000800d7b3f8.apply')
f(7,7967,771,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,7967,397,1,'cats/effect/IO.flatMap')
f(9,7967,397,1,'cats/effect/IO$FlatMap$.apply')
f(10,7967,397,2,'cats.effect.IO$FlatMap')
f(8,8364,374,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7e800.linkToTargetMethod')
f(9,8364,374,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7e000.newInvokeSpecial')
f(10,8364,374,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8364,374,2,'kyo.bench.EnqueueDequeueBench$$Lambda$111+0x0000000800d80c60')
f(6,8738,1518,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d80c60.apply')
f(7,8738,1518,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,8738,1518,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,8738,352,1,'cats/effect/IO.flatMap')
f(10,8738,352,1,'cats/effect/IO$FlatMap$.apply')
f(11,8738,352,2,'cats.effect.IO$FlatMap')
f(9,9090,785,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,9090,428,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,9090,428,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,9090,428,1,'cats/effect/IO$.uncancelable')
f(13,9090,428,1,'cats/effect/IO$Uncancelable$.apply')
f(14,9090,428,2,'cats.effect.IO$Uncancelable')
f(10,9518,357,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,9518,357,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,9518,357,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,9518,357,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$103+0x0000000800d7b028')
f(9,9875,381,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7e800.linkToTargetMethod')
f(10,9875,381,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7e000.newInvokeSpecial')
f(11,9875,381,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,9875,381,2,'kyo.bench.EnqueueDequeueBench$$Lambda$104+0x0000000800d7b3f8')
f(5,10256,3896,1,'cats/effect/kernel/SyncRef$$Lambda$102.0x0000000800d7ad68.apply')
f(6,10256,3896,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,10256,3896,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,10256,1944,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d802c0.apply')
f(9,10256,1944,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$15')
f(10,10256,236,1,'cats/effect/IO$$anon$2.unit')
f(11,10256,236,1,'cats/Applicative.unit$')
f(12,10256,236,1,'cats/Applicative.unit')
f(13,10256,236,1,'cats/effect/IO$$anon$2.pure')
f(14,10256,236,1,'cats/effect/IO$$anon$2.pure')
f(15,10256,236,1,'cats/effect/IO$.pure')
f(16,10256,236,1,'cats/effect/IO$Pure$.apply')
f(17,10256,236,2,'cats.effect.IO$Pure')
f(10,10492,546,1,'cats/effect/std/Queue$State$.apply')
f(11,10492,546,2,'cats.effect.std.Queue$State')
f(10,11038,425,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,11038,425,2,'scala.Tuple2')
f(10,11463,737,1,'scala/collection/immutable/Queue.enqueue')
f(11,11463,343,2,'scala.collection.immutable.$colon$colon')
f(11,11806,394,2,'scala.collection.immutable.Queue')
f(8,12200,1952,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d81400.apply')
f(9,12200,1952,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,12200,265,1,'cats/effect/IO$$anon$2.pure')
f(11,12200,265,1,'cats/effect/IO$$anon$2.pure')
f(12,12200,265,1,'cats/effect/IO$.pure')
f(13,12200,265,1,'cats/effect/IO$Pure$.apply')
f(14,12200,265,2,'cats.effect.IO$Pure')
f(10,12465,516,1,'cats/effect/std/Queue$State$.apply')
f(11,12465,516,2,'cats.effect.std.Queue$State')
f(10,12981,457,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,12981,457,2,'scala.Tuple2')
f(10,13438,714,1,'scala/collection/immutable/Queue.dequeue')
f(11,13438,331,2,'scala.collection.immutable.Queue')
f(11,13769,383,1,'scala/collection/immutable/List.reverse')
f(12,13769,383,1,'scala/collection/immutable/List.$colon$colon')
f(13,13769,383,2,'scala.collection.immutable.$colon$colon')
f(5,14152,1347,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$103.0x0000000800d7b028.apply')
f(6,14152,1347,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,14152,360,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,14152,360,1,'cats/FlatMap$Ops.flatMap$')
f(9,14152,360,1,'cats/FlatMap$Ops.flatMap')
f(10,14152,360,1,'cats/effect/IO$$anon$2.flatMap')
f(11,14152,360,1,'cats/effect/IO$$anon$2.flatMap')
f(12,14152,360,1,'cats/effect/IO.flatMap')
f(13,14152,360,1,'cats/effect/IO$FlatMap$.apply')
f(14,14152,360,2,'cats.effect.IO$FlatMap')
f(7,14512,638,1,'cats/effect/IO$$anon$2.deferred')
f(8,14512,638,1,'cats/effect/IO$$anon$2.deferred')
f(9,14512,638,1,'cats/effect/IO$.deferred')
f(10,14512,411,1,'cats/effect/IO$.apply')
f(11,14512,411,1,'cats/effect/IO$.delay')
f(12,14512,411,1,'cats/effect/IO$Delay$.apply')
f(13,14512,411,2,'cats.effect.IO$Delay')
f(10,14923,227,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,14923,227,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,14923,227,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,14923,227,2,'cats.effect.IO$$$Lambda$105+0x0000000800d7f268')
f(7,15150,349,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,15150,349,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,15150,349,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,15150,349,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$106+0x0000000800d7f788')
f(5,15499,1662,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7f788.apply')
f(6,15499,1662,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,15499,806,1,'cats/effect/kernel/SyncRef.modify')
f(8,15499,438,1,'cats/effect/IO$$anon$2.delay')
f(9,15499,438,1,'cats/effect/IO$$anon$2.delay')
f(10,15499,438,1,'cats/effect/IO$.apply')
f(11,15499,438,1,'cats/effect/IO$.delay')
f(12,15499,438,1,'cats/effect/IO$Delay$.apply')
f(13,15499,438,2,'cats.effect.IO$Delay')
f(8,15937,368,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,15937,368,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,15937,368,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,15937,368,2,'cats.effect.kernel.SyncRef$$Lambda$102+0x0000000800d7ad68')
f(7,16305,383,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,16305,383,1,'cats/effect/IO$$anon$2.flatten')
f(9,16305,383,1,'cats/FlatMap.flatten$')
f(10,16305,383,1,'cats/FlatMap.flatten')
f(11,16305,383,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16305,383,1,'cats/effect/IO$$anon$2.flatMap')
f(13,16305,383,1,'cats/effect/IO.flatMap')
f(14,16305,383,1,'cats/effect/IO$FlatMap$.apply')
f(15,16305,383,2,'cats.effect.IO$FlatMap')
f(7,16688,473,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,16688,473,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(9,16688,473,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,16688,473,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d802c0')
f(5,17161,1898,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81030.apply')
f(6,17161,1898,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1')
f(7,17161,928,1,'cats/effect/kernel/SyncRef.modify')
f(8,17161,482,1,'cats/effect/IO$$anon$2.delay')
f(9,17161,482,1,'cats/effect/IO$$anon$2.delay')
f(10,17161,482,1,'cats/effect/IO$.apply')
f(11,17161,482,1,'cats/effect/IO$.delay')
f(12,17161,482,1,'cats/effect/IO$Delay$.apply')
f(13,17161,482,2,'cats.effect.IO$Delay')
f(8,17643,446,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,17643,446,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,17643,446,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,17643,446,2,'cats.effect.kernel.SyncRef$$Lambda$102+0x0000000800d7ad68')
f(7,18089,363,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,18089,363,1,'cats/effect/IO$$anon$2.flatten')
f(9,18089,363,1,'cats/FlatMap.flatten$')
f(10,18089,363,1,'cats/FlatMap.flatten')
f(11,18089,363,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18089,363,1,'cats/effect/IO$$anon$2.flatMap')
f(13,18089,363,1,'cats/effect/IO.flatMap')
f(14,18089,363,1,'cats/effect/IO$FlatMap$.apply')
f(15,18089,363,2,'cats.effect.IO$FlatMap')
f(7,18452,607,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod')
f(8,18452,607,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial')
f(9,18452,607,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18452,607,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$113+0x0000000800d81400')
f(5,19059,1423,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$96.0x0000000800d79798.apply')
f(6,19059,1423,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3')
f(7,19059,285,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,19059,285,1,'cats/FlatMap$Ops.flatMap$')
f(9,19059,285,1,'cats/FlatMap$Ops.flatMap')
f(10,19059,285,1,'cats/effect/IO$$anon$2.flatMap')
f(11,19059,285,1,'cats/effect/IO$$anon$2.flatMap')
f(12,19059,285,1,'cats/effect/IO.flatMap')
f(13,19059,285,1,'cats/effect/IO$FlatMap$.apply')
f(14,19059,285,2,'cats.effect.IO$FlatMap')
f(7,19344,597,1,'cats/effect/IO$$anon$2.deferred')
f(8,19344,597,1,'cats/effect/IO$$anon$2.deferred')
f(9,19344,597,1,'cats/effect/IO$.deferred')
f(10,19344,394,1,'cats/effect/IO$.apply')
f(11,19344,394,1,'cats/effect/IO$.delay')
f(12,19344,394,1,'cats/effect/IO$Delay$.apply')
f(13,19344,394,2,'cats.effect.IO$Delay')
f(10,19738,203,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,19738,203,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,19738,203,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,19738,203,2,'cats.effect.IO$$$Lambda$105+0x0000000800d7f268')
f(7,19941,541,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod')
f(8,19941,541,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial')
f(9,19941,541,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,19941,541,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d81030')
f(3,20482,142,1,'cats/effect/IOFiber.cedeR')
f(4,20482,141,1,'cats/effect/IOFiber.runLoop')
f(5,20482,20,2,'cats.effect.IOFiber$$anon$1')
f(5,20502,34,1,'cats/effect/IO$$$Lambda$105.0x0000000800d7f268.apply')
f(6,20502,34,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,20502,4,2,'cats.effect.IODeferred')
f(7,20506,30,1,'cats/effect/IODeferred.<init>')
f(8,20506,4,1,'cats/effect/CallbackStack$.apply')
f(9,20506,4,2,'cats.effect.CallbackStack')
f(8,20510,9,1,'cats/effect/IO$.asyncCheckAttempt')
f(9,20510,4,2,'cats.effect.IO$$anon$3')
f(9,20514,5,1,'cats/effect/IO$IOCont$.apply')
f(10,20514,5,2,'cats.effect.IO$IOCont')
f(8,20519,7,1,'cats/effect/IO$.defer')
f(9,20519,4,1,'cats/effect/IO$.delay')
f(10,20519,4,1,'cats/effect/IO$Delay$.apply')
f(11,20519,4,2,'cats.effect.IO$Delay')
f(9,20523,3,1,'cats/effect/IO.flatten')
f(10,20523,3,1,'cats/effect/IO.flatMap')
f(11,20523,3,1,'cats/effect/IO$FlatMap$.apply')
f(12,20523,3,2,'cats.effect.IO$FlatMap')
f(8,20526,2,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,20528,3,2,'java.util.concurrent.atomic.AtomicReference')
f(8,20531,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20531,5,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20531,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20531,2,2,'cats.effect.IODeferred$$Lambda$107+0x0000000800d7ec00')
f(11,20533,3,2,'cats.effect.IODeferred$$Lambda$108+0x0000000800d80000')
f(5,20536,21,1,'cats/effect/IOFiber.succeeded')
f(6,20536,8,1,'kyo/bench/EnqueueDequeueBench$$Lambda$104.0x0000000800d7b3f8.apply')
f(7,20536,8,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,20536,7,1,'cats/effect/IO.flatMap')
f(9,20536,7,1,'cats/effect/IO$FlatMap$.apply')
f(10,20536,7,2,'cats.effect.IO$FlatMap')
f(8,20543,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7e800.linkToTargetMethod')
f(9,20543,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7e000.newInvokeSpecial')
f(10,20543,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20543,1,2,'kyo.bench.EnqueueDequeueBench$$Lambda$111+0x0000000800d80c60')
f(6,20544,13,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d80c60.apply')
f(7,20544,13,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,20544,13,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,20544,5,1,'cats/effect/IO.flatMap')
f(10,20544,5,1,'cats/effect/IO$FlatMap$.apply')
f(11,20544,5,2,'cats.effect.IO$FlatMap')
f(9,20549,6,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,20549,3,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,20549,3,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,20549,3,1,'cats/effect/IO$.uncancelable')
f(13,20549,3,1,'cats/effect/IO$Uncancelable$.apply')
f(14,20549,3,2,'cats.effect.IO$Uncancelable')
f(10,20552,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,20552,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,20552,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,20552,3,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$103+0x0000000800d7b028')
f(9,20555,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7e800.linkToTargetMethod')
f(10,20555,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7e000.newInvokeSpecial')
f(11,20555,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,20555,2,2,'kyo.bench.EnqueueDequeueBench$$Lambda$104+0x0000000800d7b3f8')
f(5,20557,21,1,'cats/effect/kernel/SyncRef$$Lambda$102.0x0000000800d7ad68.apply')
f(6,20557,21,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,20557,21,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,20557,13,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d802c0.apply')
f(9,20557,13,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$15')
f(10,20557,1,1,'cats/effect/IO$$anon$2.unit')
f(11,20557,1,1,'cats/Applicative.unit$')
f(12,20557,1,1,'cats/Applicative.unit')
f(13,20557,1,1,'cats/effect/IO$$anon$2.pure')
f(14,20557,1,1,'cats/effect/IO$$anon$2.pure')
f(15,20557,1,1,'cats/effect/IO$.pure')
f(16,20557,1,1,'cats/effect/IO$Pure$.apply')
f(17,20557,1,2,'cats.effect.IO$Pure')
f(10,20558,4,1,'cats/effect/std/Queue$State$.apply')
f(11,20558,4,2,'cats.effect.std.Queue$State')
f(10,20562,2,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,20562,2,2,'scala.Tuple2')
f(10,20564,6,1,'scala/collection/immutable/Queue.enqueue')
f(11,20564,3,2,'scala.collection.immutable.$colon$colon')
f(11,20567,3,2,'scala.collection.immutable.Queue')
f(8,20570,8,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d81400.apply')
f(9,20570,8,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,20570,2,1,'cats/effect/IO$$anon$2.pure')
f(11,20570,2,1,'cats/effect/IO$$anon$2.pure')
f(12,20570,2,1,'cats/effect/IO$.pure')
f(13,20570,2,1,'cats/effect/IO$Pure$.apply')
f(14,20570,2,2,'cats.effect.IO$Pure')
f(10,20572,2,1,'cats/effect/std/Queue$State$.apply')
f(11,20572,2,2,'cats.effect.std.Queue$State')
f(10,20574,1,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,20574,1,2,'scala.Tuple2')
f(10,20575,3,1,'scala/collection/immutable/Queue.dequeue')
f(11,20575,2,2,'scala.collection.immutable.Queue')
f(11,20577,1,1,'scala/collection/immutable/List.reverse')
f(12,20577,1,1,'scala/collection/immutable/List.$colon$colon')
f(13,20577,1,2,'scala.collection.immutable.$colon$colon')
f(5,20578,7,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$103.0x0000000800d7b028.apply')
f(6,20578,7,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,20578,3,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,20578,3,1,'cats/FlatMap$Ops.flatMap$')
f(9,20578,3,1,'cats/FlatMap$Ops.flatMap')
f(10,20578,3,1,'cats/effect/IO$$anon$2.flatMap')
f(11,20578,3,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20578,3,1,'cats/effect/IO.flatMap')
f(13,20578,3,1,'cats/effect/IO$FlatMap$.apply')
f(14,20578,3,2,'cats.effect.IO$FlatMap')
f(7,20581,2,1,'cats/effect/IO$$anon$2.deferred')
f(8,20581,2,1,'cats/effect/IO$$anon$2.deferred')
f(9,20581,2,1,'cats/effect/IO$.deferred')
f(10,20581,2,1,'cats/effect/IO$.apply')
f(11,20581,2,1,'cats/effect/IO$.delay')
f(12,20581,2,1,'cats/effect/IO$Delay$.apply')
f(13,20581,2,2,'cats.effect.IO$Delay')
f(7,20583,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,20583,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,20583,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20583,2,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$106+0x0000000800d7f788')
f(5,20585,15,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7f788.apply')
f(6,20585,15,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,20585,8,1,'cats/effect/kernel/SyncRef.modify')
f(8,20585,4,1,'cats/effect/IO$$anon$2.delay')
f(9,20585,4,1,'cats/effect/IO$$anon$2.delay')
f(10,20585,4,1,'cats/effect/IO$.apply')
f(11,20585,4,1,'cats/effect/IO$.delay')
f(12,20585,4,1,'cats/effect/IO$Delay$.apply')
f(13,20585,4,2,'cats.effect.IO$Delay')
f(8,20589,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20589,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20589,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20589,4,2,'cats.effect.kernel.SyncRef$$Lambda$102+0x0000000800d7ad68')
f(7,20593,2,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,20593,2,1,'cats/effect/IO$$anon$2.flatten')
f(9,20593,2,1,'cats/FlatMap.flatten$')
f(10,20593,2,1,'cats/FlatMap.flatten')
f(11,20593,2,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20593,2,1,'cats/effect/IO$$anon$2.flatMap')
f(13,20593,2,1,'cats/effect/IO.flatMap')
f(14,20593,2,1,'cats/effect/IO$FlatMap$.apply')
f(15,20593,2,2,'cats.effect.IO$FlatMap')
f(7,20595,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,20595,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(9,20595,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20595,5,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$109+0x0000000800d802c0')
f(5,20600,14,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81030.apply')
f(6,20600,14,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1')
f(7,20600,6,1,'cats/effect/kernel/SyncRef.modify')
f(8,20600,1,1,'cats/effect/IO$$anon$2.delay')
f(9,20600,1,1,'cats/effect/IO$$anon$2.delay')
f(10,20600,1,1,'cats/effect/IO$.apply')
f(11,20600,1,1,'cats/effect/IO$.delay')
f(12,20600,1,1,'cats/effect/IO$Delay$.apply')
f(13,20600,1,2,'cats.effect.IO$Delay')
f(8,20601,5,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20601,5,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20601,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20601,5,2,'cats.effect.kernel.SyncRef$$Lambda$102+0x0000000800d7ad68')
f(7,20606,3,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,20606,3,1,'cats/effect/IO$$anon$2.flatten')
f(9,20606,3,1,'cats/FlatMap.flatten$')
f(10,20606,3,1,'cats/FlatMap.flatten')
f(11,20606,3,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20606,3,1,'cats/effect/IO$$anon$2.flatMap')
f(13,20606,3,1,'cats/effect/IO.flatMap')
f(14,20606,3,1,'cats/effect/IO$FlatMap$.apply')
f(15,20606,3,2,'cats.effect.IO$FlatMap')
f(7,20609,5,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod')
f(8,20609,5,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial')
f(9,20609,5,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20609,5,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$113+0x0000000800d81400')
f(5,20614,9,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$96.0x0000000800d79798.apply')
f(6,20614,9,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3')
f(7,20614,4,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,20614,4,1,'cats/FlatMap$Ops.flatMap$')
f(9,20614,4,1,'cats/FlatMap$Ops.flatMap')
f(10,20614,4,1,'cats/effect/IO$$anon$2.flatMap')
f(11,20614,4,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20614,4,1,'cats/effect/IO.flatMap')
f(13,20614,4,1,'cats/effect/IO$FlatMap$.apply')
f(14,20614,4,2,'cats.effect.IO$FlatMap')
f(7,20618,3,1,'cats/effect/IO$$anon$2.deferred')
f(8,20618,3,1,'cats/effect/IO$$anon$2.deferred')
f(9,20618,3,1,'cats/effect/IO$.deferred')
f(10,20618,3,1,'cats/effect/IO$.apply')
f(11,20618,3,1,'cats/effect/IO$.delay')
f(12,20618,3,1,'cats/effect/IO$Delay$.apply')
f(13,20618,3,2,'cats.effect.IO$Delay')
f(7,20621,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod')
f(8,20621,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial')
f(9,20621,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20621,2,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d81030')
f(4,20623,1,1,'cats/effect/IOFiber.succeeded')
f(5,20623,1,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13280.apply')
f(6,20623,1,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,20623,1,1,'kyo/bench/EnqueueDequeueBench.catsBench')
f(8,20623,1,1,'cats/effect/IO.flatMap')
f(9,20623,1,1,'cats/effect/IO$FlatMap$.apply')
f(10,20623,1,2,'cats.effect.IO$FlatMap')
f(3,20624,263,1,'cats/effect/IOFiber.execR')
f(4,20624,263,1,'cats/effect/ByteStack$.create')
f(5,20624,263,2,'int[]')
f(1,20887,409,1,'java/lang/Thread.run')
f(2,20887,409,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,20887,409,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,20887,409,1,'java/util/concurrent/FutureTask.run')
f(5,20887,409,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,20887,409,1,'java/util/concurrent/FutureTask.run')
f(7,20887,409,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,20887,409,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,20887,409,1,'java/lang/reflect/Method.invoke')
f(10,20887,409,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,20887,409,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,20887,409,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,20887,409,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_Throughput')
f(14,20887,407,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,20887,407,1,'kyo/bench/Bench.forkCats')
f(16,20887,407,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,20887,285,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,20887,28,1,'cats/effect/IO.unsafeRunAsync')
f(19,20887,28,1,'cats/effect/IO.unsafeRunFiber')
f(20,20887,5,2,'cats.effect.IOFiber')
f(20,20892,4,5,'cats.effect.IOFiber')
f(20,20896,16,1,'cats/effect/IOFiber.<init>')
f(21,20896,12,1,'cats/effect/ArrayStack$.apply')
f(22,20896,12,2,'cats.effect.ArrayStack')
f(21,20908,1,1,'cats/effect/CallbackStack$.apply')
f(22,20908,1,2,'cats.effect.CallbackStack')
f(21,20909,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,20909,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,20909,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,20909,3,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,20909,3,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e618')
f(20,20912,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,20912,3,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,20912,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,20912,3,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,20912,3,2,'cats.effect.IO$$Lambda$88+0x0000000800d5d1f0')
f(18,20915,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,20915,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,20915,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,20915,29,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,20915,29,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57600')
f(18,20944,34,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,20944,34,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,20944,34,2,'java.util.concurrent.locks.ReentrantLock')
f(18,20978,194,1,'scala/util/Either.fold')
f(19,20978,194,1,'cats/effect/IOPlatform$$Lambda$118.0x0000000800d82e48.apply')
f(20,20978,194,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,20978,194,1,'scala/Some$.apply')
f(22,20978,194,2,'scala.Some')
f(17,21172,122,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,21172,122,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,21172,122,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,21172,122,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,21172,122,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,21172,122,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,21172,122,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,21172,122,2,'scala.concurrent.duration.FiniteDuration')
f(14,21294,1,2,'org.openjdk.jmh.results.ThroughputResult')
f(14,21295,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,21295,1,1,'java/lang/StringBuilder.<init>')
f(16,21295,1,1,'java/lang/AbstractStringBuilder.<init>')
f(17,21295,1,2,'byte[]')
f(1,21296,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,21296,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,21296,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,21296,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,21296,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,21296,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,21296,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,21296,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,21296,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,21296,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,21296,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,21296,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,21296,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: 400px}
</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(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,293,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,4,3,'[unknown_Java]')
f(2,1,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(2,3,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(2,4,1,1,'cats/effect/kernel/SyncRef$$Lambda$102.0x0000000800d7ad68.apply')
f(1,5,287,1,'cats/effect/unsafe/WorkerThread.run')
f(2,5,285,1,'cats/effect/IOFiber.run')
f(3,5,281,1,'cats/effect/IOFiber.autoCedeR')
f(4,5,281,1,'cats/effect/IOFiber.runLoop')
f(5,33,11,1,'cats/FlatMap$$Lambda$110.0x0000000800d80898.apply')
f(5,44,6,6,'cats/effect/IO$Delay.tag',0,6,0)
f(5,50,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,54,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,57,5,6,'cats/effect/IO$Uncancelable.tag',0,5,0)
f(5,62,55,2,'cats/effect/IOFiber.rescheduleFiber',54,0,0)
f(6,89,28,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',27,0,0)
f(7,95,3,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',3,0,0)
f(7,98,19,2,'cats/effect/unsafe/WorkerThread.reschedule',18,0,0)
f(8,108,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(9,108,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(10,108,1,4,'MemAllocator::allocate() const')
f(11,108,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(12,108,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(13,108,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(14,108,1,4,'VMThread::execute(VM_Operation*)')
f(15,108,1,4,'VMThread::wait_until_executed(VM_Operation*)')
f(16,108,1,4,'Monitor::wait(long)')
f(17,108,1,4,'Mutex::lock_without_safepoint_check()')
f(8,109,8,2,'cats/effect/unsafe/LocalQueue.isEmpty',8,0,0)
f(9,113,4,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',4,0,0)
f(10,115,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',2,0,0)
f(5,117,45,1,'cats/effect/IOFiber.succeeded')
f(6,128,8,2,'cats/effect/ByteStack$.pop',8,0,0)
f(7,129,7,2,'cats/effect/ByteStack$.peek',7,0,0)
f(6,136,16,3,'itable stub')
f(6,152,4,1,'kyo/bench/EnqueueDequeueBench$$Lambda$104.0x0000000800d7b3f8.apply')
f(7,153,3,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1',3,0,0)
f(8,153,3,2,'cats/effect/IO.flatMap',3,0,0)
f(9,153,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(10,155,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(6,156,6,1,'kyo/bench/EnqueueDequeueBench$$Lambda$111.0x0000000800d80c60.apply')
f(7,159,3,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1',3,0,0)
f(8,159,3,2,'kyo/bench/EnqueueDequeueBench.loop$1',3,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(11,160,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(9,161,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d7e800.linkToTargetMethod',1,0,0)
f(10,161,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7e000.newInvokeSpecial',1,0,0)
f(11,161,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,162,40,1,'cats/effect/kernel/SyncRef$$Lambda$102.0x0000000800d7ad68.apply')
f(6,163,39,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',25,0,0)
f(7,163,39,2,'cats/effect/kernel/SyncRef.spin$4',25,0,0)
f(8,170,12,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d802c0.apply',12,0,0)
f(9,171,11,2,'cats/effect/std/Queue$AbstractQueue.$anonfun$15',11,0,0)
f(10,171,1,2,'cats/effect/std/Queue$State._3',1,0,0)
f(11,171,1,2,'cats/effect/std/Queue$State.takers',1,0,0)
f(10,172,1,2,'scala/Predef$ArrowAssoc$.$minus$greater$extension',1,0,0)
f(10,173,4,2,'scala/collection/AbstractIterable.nonEmpty',4,0,0)
f(11,173,4,2,'scala/collection/IterableOnceOps.nonEmpty$',4,0,0)
f(12,173,4,2,'scala/collection/IterableOnceOps.nonEmpty',4,0,0)
f(13,173,4,2,'scala/collection/immutable/Queue.isEmpty',4,0,0)
f(10,177,5,2,'scala/collection/immutable/Queue.enqueue',5,0,0)
f(11,177,1,2,'scala/collection/immutable/$colon$colon.<init>',1,0,0)
f(11,178,3,2,'scala/collection/immutable/Queue.<init>',3,0,0)
f(11,181,1,2,'scala/collection/immutable/Queue.in',1,0,0)
f(8,182,16,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$113.0x0000000800d81400.apply',2,0,0)
f(9,184,14,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,188,1,2,'cats/effect/std/Queue$State._2',1,0,0)
f(11,188,1,2,'cats/effect/std/Queue$State.size',1,0,0)
f(10,189,2,2,'scala/collection/AbstractIterable.nonEmpty',2,0,0)
f(11,190,1,2,'scala/collection/IterableOnceOps.nonEmpty$',1,0,0)
f(12,190,1,2,'scala/collection/IterableOnceOps.nonEmpty',1,0,0)
f(10,191,4,2,'scala/collection/immutable/Queue.dequeue',4,0,0)
f(11,191,1,2,'scala/collection/immutable/List.equals',1,0,0)
f(11,192,3,2,'scala/collection/immutable/List.reverse',3,0,0)
f(10,195,3,2,'scala/collection/immutable/Queue.isEmpty',3,0,0)
f(11,195,3,2,'scala/collection/immutable/Queue.out',3,0,0)
f(8,198,3,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',3,0,0)
f(9,198,3,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',3,0,0)
f(10,198,3,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',3,0,0)
f(8,201,1,2,'java/util/concurrent/atomic/AtomicReference.get',1,0,0)
f(5,202,26,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$103.0x0000000800d7b028.apply',26,0,0)
f(6,203,25,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2',25,0,0)
f(7,203,5,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',5,0,0)
f(8,203,5,2,'cats/FlatMap$Ops.flatMap$',5,0,0)
f(9,203,5,2,'cats/FlatMap$Ops.flatMap',5,0,0)
f(10,203,5,2,'cats/effect/IO$$anon$2.flatMap',5,0,0)
f(11,206,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,206,2,2,'cats/effect/IO.flatMap',2,0,0)
f(7,208,14,2,'cats/effect/IO$$anon$2.deferred',14,0,0)
f(8,208,14,2,'cats/effect/IO$$anon$2.deferred',14,0,0)
f(9,208,14,2,'cats/effect/IO$.deferred',14,0,0)
f(10,213,8,2,'cats/effect/IO$.apply',8,0,0)
f(11,213,8,2,'cats/effect/IO$.delay',8,0,0)
f(12,216,5,2,'cats/effect/IO$Delay$.apply',5,0,0)
f(10,221,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(11,221,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(7,222,6,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',6,0,0)
f(8,222,6,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',6,0,0)
f(9,223,5,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7f788.<init>',5,0,0)
f(5,228,7,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$106.0x0000000800d7f788.apply')
f(6,230,5,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1',5,0,0)
f(7,230,3,2,'cats/effect/kernel/SyncRef.modify',3,0,0)
f(8,231,2,2,'cats/effect/IO$$anon$2.delay',2,0,0)
f(9,231,2,2,'cats/effect/IO$$anon$2.delay',2,0,0)
f(10,231,2,2,'cats/effect/IO$.apply',2,0,0)
f(11,231,2,2,'cats/effect/IO$.delay',2,0,0)
f(12,231,1,2,'cats/effect/IO$Delay$.apply',1,0,0)
f(12,232,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(7,233,1,2,'cats/syntax/FlattenOps$.flatten$extension',1,0,0)
f(8,233,1,2,'cats/effect/IO$$anon$2.flatten',1,0,0)
f(9,233,1,2,'cats/FlatMap.flatten$',1,0,0)
f(10,233,1,2,'cats/FlatMap.flatten',1,0,0)
f(11,233,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(12,233,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(13,233,1,2,'cats/effect/IO.flatMap',1,0,0)
f(14,233,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(7,234,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(8,234,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial',1,0,0)
f(9,234,1,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d802c0.<init>',1,0,0)
f(5,235,8,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81030.apply')
f(6,235,8,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1',8,0,0)
f(7,236,3,2,'cats/effect/kernel/SyncRef.modify',3,0,0)
f(8,236,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(9,236,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(10,236,3,2,'cats/effect/IO$.apply',3,0,0)
f(11,236,3,2,'cats/effect/IO$.delay',3,0,0)
f(12,236,3,2,'cats/effect/Thunk$.asFunction0',3,0,0)
f(7,239,3,2,'cats/syntax/FlattenOps$.flatten$extension',3,0,0)
f(8,239,3,2,'cats/effect/IO$$anon$2.flatten',3,0,0)
f(9,239,3,2,'cats/FlatMap.flatten$',3,0,0)
f(10,239,3,2,'cats/FlatMap.flatten',3,0,0)
f(11,239,3,2,'cats/effect/IO$$anon$2.flatMap',3,0,0)
f(12,239,3,2,'cats/effect/IO$$anon$2.flatMap',3,0,0)
f(13,239,3,2,'cats/effect/IO.flatMap',3,0,0)
f(14,239,3,2,'cats/effect/IO$FlatMap$.apply',3,0,0)
f(7,242,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod',1,0,0)
f(8,242,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial',1,0,0)
f(9,242,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,243,20,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$96.0x0000000800d79798.apply',20,0,0)
f(6,243,20,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3',20,0,0)
f(7,243,10,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',10,0,0)
f(8,243,10,2,'cats/FlatMap$Ops.flatMap$',10,0,0)
f(9,245,8,2,'cats/FlatMap$Ops.flatMap',8,0,0)
f(10,247,6,2,'cats/effect/IO$$anon$2.flatMap',6,0,0)
f(11,247,6,2,'cats/effect/IO$$anon$2.flatMap',6,0,0)
f(12,247,6,2,'cats/effect/IO.flatMap',6,0,0)
f(7,253,1,2,'cats/effect/IO$$anon$2.deferred',1,0,0)
f(8,253,1,2,'cats/effect/IO$$anon$2.deferred',1,0,0)
f(9,253,1,2,'cats/effect/IO$.deferred',1,0,0)
f(10,253,1,2,'cats/effect/IO$.apply',1,0,0)
f(11,253,1,2,'cats/effect/IO$.delay',1,0,0)
f(12,253,1,2,'cats/effect/IO$Delay$.apply',1,0,0)
f(13,253,1,2,'cats/effect/IO$Delay.<init>',1,0,0)
f(14,253,1,2,'cats/effect/IO.<init>',1,0,0)
f(15,253,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(16,253,1,2,'java/lang/Object.<init>',1,0,0)
f(7,254,4,2,'cats/syntax/AllSyntaxBinCompat.toFlatMapOps',4,0,0)
f(8,254,4,2,'cats/FlatMap$ToFlatMapOps.toFlatMapOps$',4,0,0)
f(9,254,4,2,'cats/FlatMap$ToFlatMapOps.toFlatMapOps',4,0,0)
f(10,256,2,2,'cats/FlatMap$ToFlatMapOps$$anon$2.<init>',2,0,0)
f(7,258,5,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod',5,0,0)
f(8,258,5,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial',5,0,0)
f(9,258,2,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81030.<init>',2,0,0)
f(9,260,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',3,0,0)
f(5,263,9,3,'itable stub')
f(5,272,14,3,'vtable stub')
f(3,286,4,1,'cats/effect/IOFiber.cedeR')
f(4,286,3,1,'cats/effect/IOFiber.runLoop')
f(5,287,2,1,'cats/effect/kernel/SyncRef$$Lambda$102.0x0000000800d7ad68.apply')
f(6,287,2,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',2,0,0)
f(7,287,2,2,'cats/effect/kernel/SyncRef.spin$4',2,0,0)
f(8,288,1,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$109.0x0000000800d802c0.apply',1,0,0)
f(9,288,1,2,'cats/effect/std/Queue$AbstractQueue.$anonfun$15',1,0,0)
f(10,288,1,2,'scala/Predef$ArrowAssoc$.$minus$greater$extension',1,0,0)
f(4,289,1,1,'cats/effect/IOFiber.succeeded')
f(5,289,1,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13280.apply')
f(6,289,1,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,289,1,1,'kyo/bench/EnqueueDequeueBench.catsBench')
f(8,289,1,1,'cats/effect/std/Queue$.bounded')
f(9,289,1,1,'cats/effect/std/Queue$.boundedForConcurrent')
f(10,289,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7cc00.linkToTargetMethod')
f(11,289,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7c400.newInvokeSpecial')
f(12,289,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,289,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(14,289,1,3,'Unsafe_AllocateInstance')
f(2,290,1,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,290,1,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,290,1,1,'java/util/concurrent/locks/LockSupport.park')
f(5,290,1,1,'jdk/internal/misc/Unsafe.park')
f(6,290,1,3,'[unknown]')
f(7,290,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,290,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,290,1,5,'do_syscall_64')
f(10,290,1,5,'__x64_sys_futex')
f(11,290,1,5,'do_futex')
f(12,290,1,5,'futex_wait')
f(13,290,1,5,'futex_wait_queue_me')
f(14,290,1,5,'schedule')
f(15,290,1,5,'__schedule')
f(16,290,1,5,'finish_task_switch.isra.0')
f(2,291,1,3,'clock_gettime')
f(3,291,1,3,'[vdso]')
f(1,292,1,1,'java/lang/Thread.run')
f(2,292,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,292,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,292,1,1,'java/util/concurrent/FutureTask.run')
f(5,292,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,292,1,1,'java/util/concurrent/FutureTask.run')
f(7,292,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,292,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,292,1,1,'java/lang/reflect/Method.invoke')
f(10,292,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,292,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,292,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,292,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_Throughput')
f(14,292,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,292,1,1,'kyo/bench/Bench.forkCats')
f(16,292,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,292,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,292,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,292,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,292,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,292,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,292,1,3,'Unsafe_AllocateInstance')
f(23,292,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(24,292,1,4,'MemAllocator::allocate() const')
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,21180,3,'all')
f(1,0,20601,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,20601,1,'cats/effect/IOFiber.run')
f(3,0,20186,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,20186,1,'cats/effect/IOFiber.runLoop')
f(5,0,816,2,'cats.effect.IOFiber$$anon$1')
f(5,816,7086,1,'cats/effect/IO$$$Lambda$104.0x0000000800d7edd0.apply')
f(6,816,7086,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,816,999,2,'cats.effect.IODeferred')
f(7,1815,6087,1,'cats/effect/IODeferred.<init>')
f(8,1815,782,1,'cats/effect/CallbackStack$.apply')
f(9,1815,782,2,'cats.effect.CallbackStack')
f(8,2597,1276,1,'cats/effect/IO$.asyncCheckAttempt')
f(9,2597,523,2,'cats.effect.IO$$anon$3')
f(9,3120,753,1,'cats/effect/IO$IOCont$.apply')
f(10,3120,753,2,'cats.effect.IO$IOCont')
f(8,3873,1564,1,'cats/effect/IO$.defer')
f(9,3873,792,1,'cats/effect/IO$.delay')
f(10,3873,792,1,'cats/effect/IO$Delay$.apply')
f(11,3873,792,2,'cats.effect.IO$Delay')
f(9,4665,772,1,'cats/effect/IO.flatten')
f(10,4665,772,1,'cats/effect/IO.flatMap')
f(11,4665,772,1,'cats/effect/IO$FlatMap$.apply')
f(12,4665,772,2,'cats.effect.IO$FlatMap')
f(8,5437,593,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,6030,483,2,'java.util.concurrent.atomic.AtomicReference')
f(8,6513,1389,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,6513,1389,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,6513,1389,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,6513,548,2,'cats.effect.IODeferred$$Lambda$106+0x0000000800d7f928')
f(11,7061,841,2,'cats.effect.IODeferred$$Lambda$107+0x0000000800d7dc00')
f(5,7902,2234,1,'cats/effect/IOFiber.succeeded')
f(6,7902,705,1,'kyo/bench/EnqueueDequeueBench$$Lambda$103.0x0000000800d7e000.apply')
f(7,7902,705,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,7902,335,1,'cats/effect/IO.flatMap')
f(9,7902,335,1,'cats/effect/IO$FlatMap$.apply')
f(10,7902,335,2,'cats.effect.IO$FlatMap')
f(8,8237,370,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(9,8237,370,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(10,8237,370,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8237,370,2,'kyo.bench.EnqueueDequeueBench$$Lambda$110+0x0000000800d809a0')
f(6,8607,1529,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d809a0.apply')
f(7,8607,1529,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,8607,1529,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,8607,416,1,'cats/effect/IO.flatMap')
f(10,8607,416,1,'cats/effect/IO$FlatMap$.apply')
f(11,8607,416,2,'cats.effect.IO$FlatMap')
f(9,9023,774,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,9023,371,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,9023,371,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,9023,371,1,'cats/effect/IO$.uncancelable')
f(13,9023,371,1,'cats/effect/IO$Uncancelable$.apply')
f(14,9023,371,2,'cats.effect.IO$Uncancelable')
f(10,9394,403,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,9394,403,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,9394,403,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,9394,403,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$102+0x0000000800d7bad0')
f(9,9797,339,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(10,9797,339,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(11,9797,339,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,9797,339,2,'kyo.bench.EnqueueDequeueBench$$Lambda$103+0x0000000800d7e000')
f(5,10136,3943,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d7b810.apply')
f(6,10136,3943,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,10136,3943,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,10136,2037,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80000.apply')
f(9,10136,2037,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$15')
f(10,10136,291,1,'cats/effect/IO$$anon$2.unit')
f(11,10136,291,1,'cats/Applicative.unit$')
f(12,10136,291,1,'cats/Applicative.unit')
f(13,10136,291,1,'cats/effect/IO$$anon$2.pure')
f(14,10136,291,1,'cats/effect/IO$$anon$2.pure')
f(15,10136,291,1,'cats/effect/IO$.pure')
f(16,10136,291,1,'cats/effect/IO$Pure$.apply')
f(17,10136,291,2,'cats.effect.IO$Pure')
f(10,10427,543,1,'cats/effect/std/Queue$State$.apply')
f(11,10427,543,2,'cats.effect.std.Queue$State')
f(10,10970,429,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,10970,429,2,'scala.Tuple2')
f(10,11399,774,1,'scala/collection/immutable/Queue.enqueue')
f(11,11399,385,2,'scala.collection.immutable.$colon$colon')
f(11,11784,389,2,'scala.collection.immutable.Queue')
f(8,12173,1906,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81140.apply')
f(9,12173,1906,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,12173,246,1,'cats/effect/IO$$anon$2.pure')
f(11,12173,246,1,'cats/effect/IO$$anon$2.pure')
f(12,12173,246,1,'cats/effect/IO$.pure')
f(13,12173,246,1,'cats/effect/IO$Pure$.apply')
f(14,12173,246,2,'cats.effect.IO$Pure')
f(10,12419,531,1,'cats/effect/std/Queue$State$.apply')
f(11,12419,531,2,'cats.effect.std.Queue$State')
f(10,12950,399,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,12950,399,2,'scala.Tuple2')
f(10,13349,730,1,'scala/collection/immutable/Queue.dequeue')
f(11,13349,366,2,'scala.collection.immutable.Queue')
f(11,13715,364,1,'scala/collection/immutable/List.reverse')
f(12,13715,364,1,'scala/collection/immutable/List.$colon$colon')
f(13,13715,364,2,'scala.collection.immutable.$colon$colon')
f(5,14079,1406,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$102.0x0000000800d7bad0.apply')
f(6,14079,1406,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,14079,399,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,14079,399,1,'cats/FlatMap$Ops.flatMap$')
f(9,14079,399,1,'cats/FlatMap$Ops.flatMap')
f(10,14079,399,1,'cats/effect/IO$$anon$2.flatMap')
f(11,14079,399,1,'cats/effect/IO$$anon$2.flatMap')
f(12,14079,399,1,'cats/effect/IO.flatMap')
f(13,14079,399,1,'cats/effect/IO$FlatMap$.apply')
f(14,14079,399,2,'cats.effect.IO$FlatMap')
f(7,14478,666,1,'cats/effect/IO$$anon$2.deferred')
f(8,14478,666,1,'cats/effect/IO$$anon$2.deferred')
f(9,14478,666,1,'cats/effect/IO$.deferred')
f(10,14478,430,1,'cats/effect/IO$.apply')
f(11,14478,430,1,'cats/effect/IO$.delay')
f(12,14478,430,1,'cats/effect/IO$Delay$.apply')
f(13,14478,430,2,'cats.effect.IO$Delay')
f(10,14908,236,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,14908,236,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,14908,236,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,14908,236,2,'cats.effect.IO$$$Lambda$104+0x0000000800d7edd0')
f(7,15144,341,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,15144,341,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,15144,341,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,15144,341,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$105+0x0000000800d7f2f0')
f(5,15485,1464,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f2f0.apply')
f(6,15485,1464,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,15485,682,1,'cats/effect/kernel/SyncRef.modify')
f(8,15485,339,1,'cats/effect/IO$$anon$2.delay')
f(9,15485,339,1,'cats/effect/IO$$anon$2.delay')
f(10,15485,339,1,'cats/effect/IO$.apply')
f(11,15485,339,1,'cats/effect/IO$.delay')
f(12,15485,339,1,'cats/effect/IO$Delay$.apply')
f(13,15485,339,2,'cats.effect.IO$Delay')
f(8,15824,343,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,15824,343,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,15824,343,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,15824,343,2,'cats.effect.kernel.SyncRef$$Lambda$101+0x0000000800d7b810')
f(7,16167,347,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,16167,347,1,'cats/effect/IO$$anon$2.flatten')
f(9,16167,347,1,'cats/FlatMap.flatten$')
f(10,16167,347,1,'cats/FlatMap.flatten')
f(11,16167,347,1,'cats/effect/IO$$anon$2.flatMap')
f(12,16167,347,1,'cats/effect/IO$$anon$2.flatMap')
f(13,16167,347,1,'cats/effect/IO.flatMap')
f(14,16167,347,1,'cats/effect/IO$FlatMap$.apply')
f(15,16167,347,2,'cats.effect.IO$FlatMap')
f(7,16514,435,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,16514,435,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(9,16514,435,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,16514,435,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$108+0x0000000800d80000')
f(5,16949,1693,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d80d70.apply')
f(6,16949,1693,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1')
f(7,16949,793,1,'cats/effect/kernel/SyncRef.modify')
f(8,16949,374,1,'cats/effect/IO$$anon$2.delay')
f(9,16949,374,1,'cats/effect/IO$$anon$2.delay')
f(10,16949,374,1,'cats/effect/IO$.apply')
f(11,16949,374,1,'cats/effect/IO$.delay')
f(12,16949,374,1,'cats/effect/IO$Delay$.apply')
f(13,16949,374,2,'cats.effect.IO$Delay')
f(8,17323,419,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,17323,419,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,17323,419,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,17323,419,2,'cats.effect.kernel.SyncRef$$Lambda$101+0x0000000800d7b810')
f(7,17742,359,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,17742,359,1,'cats/effect/IO$$anon$2.flatten')
f(9,17742,359,1,'cats/FlatMap.flatten$')
f(10,17742,359,1,'cats/FlatMap.flatten')
f(11,17742,359,1,'cats/effect/IO$$anon$2.flatMap')
f(12,17742,359,1,'cats/effect/IO$$anon$2.flatMap')
f(13,17742,359,1,'cats/effect/IO.flatMap')
f(14,17742,359,1,'cats/effect/IO$FlatMap$.apply')
f(15,17742,359,2,'cats.effect.IO$FlatMap')
f(7,18101,541,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod')
f(8,18101,541,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial')
f(9,18101,541,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,18101,541,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d81140')
f(5,18642,1544,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$95.0x0000000800d7a240.apply')
f(6,18642,1544,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3')
f(7,18642,349,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,18642,349,1,'cats/FlatMap$Ops.flatMap$')
f(9,18642,349,1,'cats/FlatMap$Ops.flatMap')
f(10,18642,349,1,'cats/effect/IO$$anon$2.flatMap')
f(11,18642,349,1,'cats/effect/IO$$anon$2.flatMap')
f(12,18642,349,1,'cats/effect/IO.flatMap')
f(13,18642,349,1,'cats/effect/IO$FlatMap$.apply')
f(14,18642,349,2,'cats.effect.IO$FlatMap')
f(7,18991,617,1,'cats/effect/IO$$anon$2.deferred')
f(8,18991,617,1,'cats/effect/IO$$anon$2.deferred')
f(9,18991,617,1,'cats/effect/IO$.deferred')
f(10,18991,398,1,'cats/effect/IO$.apply')
f(11,18991,398,1,'cats/effect/IO$.delay')
f(12,18991,398,1,'cats/effect/IO$Delay$.apply')
f(13,18991,398,2,'cats.effect.IO$Delay')
f(10,19389,219,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,19389,219,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,19389,219,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,19389,219,2,'cats.effect.IO$$$Lambda$104+0x0000000800d7edd0')
f(7,19608,578,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod')
f(8,19608,578,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial')
f(9,19608,578,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,19608,578,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$111+0x0000000800d80d70')
f(3,20186,415,1,'cats/effect/IOFiber.execR')
f(4,20186,258,1,'cats/effect/ByteStack$.create')
f(5,20186,258,2,'int[]')
f(4,20444,157,1,'cats/effect/IOFiber.runLoop')
f(5,20444,5,2,'cats.effect.IOFiber$$anon$1')
f(5,20449,66,1,'cats/effect/IO$$$Lambda$104.0x0000000800d7edd0.apply')
f(6,20449,66,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,20449,6,2,'cats.effect.IODeferred')
f(7,20455,60,1,'cats/effect/IODeferred.<init>')
f(8,20455,3,1,'cats/effect/CallbackStack$.apply')
f(9,20455,3,2,'cats.effect.CallbackStack')
f(8,20458,33,1,'cats/effect/IO$.asyncCheckAttempt')
f(9,20458,5,2,'cats.effect.IO$$anon$3')
f(9,20463,28,1,'cats/effect/IO$IOCont$.apply')
f(10,20463,28,2,'cats.effect.IO$IOCont')
f(8,20491,10,1,'cats/effect/IO$.defer')
f(9,20491,4,1,'cats/effect/IO$.delay')
f(10,20491,4,1,'cats/effect/IO$Delay$.apply')
f(11,20491,4,2,'cats.effect.IO$Delay')
f(9,20495,6,1,'cats/effect/IO.flatten')
f(10,20495,6,1,'cats/effect/IO.flatMap')
f(11,20495,6,1,'cats/effect/IO$FlatMap$.apply')
f(12,20495,6,2,'cats.effect.IO$FlatMap')
f(8,20501,2,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,20503,4,2,'java.util.concurrent.atomic.AtomicReference')
f(8,20507,8,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20507,8,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20507,8,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20507,3,2,'cats.effect.IODeferred$$Lambda$106+0x0000000800d7f928')
f(11,20510,5,2,'cats.effect.IODeferred$$Lambda$107+0x0000000800d7dc00')
f(5,20515,15,1,'cats/effect/IOFiber.succeeded')
f(6,20515,3,1,'kyo/bench/EnqueueDequeueBench$$Lambda$103.0x0000000800d7e000.apply')
f(7,20515,3,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1')
f(8,20515,2,1,'cats/effect/IO.flatMap')
f(9,20515,2,1,'cats/effect/IO$FlatMap$.apply')
f(10,20515,2,2,'cats.effect.IO$FlatMap')
f(8,20517,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(9,20517,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(10,20517,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20517,1,2,'kyo.bench.EnqueueDequeueBench$$Lambda$110+0x0000000800d809a0')
f(6,20518,11,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d809a0.apply')
f(7,20518,11,1,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1')
f(8,20518,11,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,20518,2,1,'cats/effect/IO.flatMap')
f(10,20518,2,1,'cats/effect/IO$FlatMap$.apply')
f(11,20518,2,2,'cats.effect.IO$FlatMap')
f(9,20520,6,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,20520,3,1,'cats/effect/IO$$anon$2.uncancelable')
f(11,20520,3,1,'cats/effect/IO$$anon$2.uncancelable')
f(12,20520,3,1,'cats/effect/IO$.uncancelable')
f(13,20520,3,1,'cats/effect/IO$Uncancelable$.apply')
f(14,20520,3,2,'cats.effect.IO$Uncancelable')
f(10,20523,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,20523,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,20523,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,20523,3,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$102+0x0000000800d7bad0')
f(9,20526,3,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d7d800.linkToTargetMethod')
f(10,20526,3,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7d000.newInvokeSpecial')
f(11,20526,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,20526,3,2,'kyo.bench.EnqueueDequeueBench$$Lambda$103+0x0000000800d7e000')
f(6,20529,1,1,'kyo/bench/EnqueueDequeueBench$$Lambda$45.0x0000000800d478d8.apply')
f(7,20529,1,1,'kyo/bench/EnqueueDequeueBench.catsBench$$anonfun$1')
f(8,20529,1,1,'kyo/bench/EnqueueDequeueBench.loop$1')
f(9,20529,1,1,'cats/effect/std/Queue$AbstractQueue.offer')
f(10,20529,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,20529,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,20529,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,20529,1,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$102+0x0000000800d7bad0')
f(5,20530,31,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d7b810.apply')
f(6,20530,31,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,20530,31,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,20530,21,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80000.apply')
f(9,20530,21,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$15')
f(10,20530,3,1,'cats/effect/IO$$anon$2.unit')
f(11,20530,3,1,'cats/Applicative.unit$')
f(12,20530,3,1,'cats/Applicative.unit')
f(13,20530,3,1,'cats/effect/IO$$anon$2.pure')
f(14,20530,3,1,'cats/effect/IO$$anon$2.pure')
f(15,20530,3,1,'cats/effect/IO$.pure')
f(16,20530,3,1,'cats/effect/IO$Pure$.apply')
f(17,20530,3,2,'cats.effect.IO$Pure')
f(10,20533,6,1,'cats/effect/std/Queue$State$.apply')
f(11,20533,6,2,'cats.effect.std.Queue$State')
f(10,20539,3,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,20539,3,2,'scala.Tuple2')
f(10,20542,9,1,'scala/collection/immutable/Queue.enqueue')
f(11,20542,6,2,'scala.collection.immutable.$colon$colon')
f(11,20548,3,2,'scala.collection.immutable.Queue')
f(8,20551,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81140.apply')
f(9,20551,10,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,20551,1,1,'cats/effect/IO$$anon$2.pure')
f(11,20551,1,1,'cats/effect/IO$$anon$2.pure')
f(12,20551,1,1,'cats/effect/IO$.pure')
f(13,20551,1,1,'cats/effect/IO$Pure$.apply')
f(14,20551,1,2,'cats.effect.IO$Pure')
f(10,20552,4,1,'cats/effect/std/Queue$State$.apply')
f(11,20552,4,2,'cats.effect.std.Queue$State')
f(10,20556,1,1,'scala/Predef$ArrowAssoc$.$minus$greater$extension')
f(11,20556,1,2,'scala.Tuple2')
f(10,20557,4,1,'scala/collection/immutable/Queue.dequeue')
f(11,20557,4,2,'scala.collection.immutable.Queue')
f(5,20561,1,1,'cats/effect/std/Queue$$$Lambda$44.0x0000000800d472e8.apply')
f(6,20561,1,1,'cats/effect/std/Queue$.boundedForConcurrent$$anonfun$1')
f(7,20561,1,1,'cats/effect/std/Queue$BoundedQueue.<init>')
f(8,20561,1,1,'cats/effect/std/Queue$AbstractQueue.<init>')
f(9,20561,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,20561,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,20561,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,20561,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(13,20561,1,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$96+0x0000000800d7a610')
f(5,20562,11,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$102.0x0000000800d7bad0.apply')
f(6,20562,11,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2')
f(7,20562,4,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,20562,4,1,'cats/FlatMap$Ops.flatMap$')
f(9,20562,4,1,'cats/FlatMap$Ops.flatMap')
f(10,20562,4,1,'cats/effect/IO$$anon$2.flatMap')
f(11,20562,4,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20562,4,1,'cats/effect/IO.flatMap')
f(13,20562,4,1,'cats/effect/IO$FlatMap$.apply')
f(14,20562,4,2,'cats.effect.IO$FlatMap')
f(7,20566,6,1,'cats/effect/IO$$anon$2.deferred')
f(8,20566,6,1,'cats/effect/IO$$anon$2.deferred')
f(9,20566,6,1,'cats/effect/IO$.deferred')
f(10,20566,3,1,'cats/effect/IO$.apply')
f(11,20566,3,1,'cats/effect/IO$.delay')
f(12,20566,3,1,'cats/effect/IO$Delay$.apply')
f(13,20566,3,2,'cats.effect.IO$Delay')
f(10,20569,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,20569,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,20569,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,20569,3,2,'cats.effect.IO$$$Lambda$104+0x0000000800d7edd0')
f(7,20572,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,20572,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,20572,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20572,1,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$105+0x0000000800d7f2f0')
f(5,20573,11,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f2f0.apply')
f(6,20573,11,1,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1')
f(7,20573,6,1,'cats/effect/kernel/SyncRef.modify')
f(8,20573,3,1,'cats/effect/IO$$anon$2.delay')
f(9,20573,3,1,'cats/effect/IO$$anon$2.delay')
f(10,20573,3,1,'cats/effect/IO$.apply')
f(11,20573,3,1,'cats/effect/IO$.delay')
f(12,20573,3,1,'cats/effect/IO$Delay$.apply')
f(13,20573,3,2,'cats.effect.IO$Delay')
f(8,20576,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20576,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20576,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20576,3,2,'cats.effect.kernel.SyncRef$$Lambda$101+0x0000000800d7b810')
f(7,20579,1,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,20579,1,1,'cats/effect/IO$$anon$2.flatten')
f(9,20579,1,1,'cats/FlatMap.flatten$')
f(10,20579,1,1,'cats/FlatMap.flatten')
f(11,20579,1,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20579,1,1,'cats/effect/IO$$anon$2.flatMap')
f(13,20579,1,1,'cats/effect/IO.flatMap')
f(14,20579,1,1,'cats/effect/IO$FlatMap$.apply')
f(15,20579,1,2,'cats.effect.IO$FlatMap')
f(7,20580,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,20580,4,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(9,20580,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20580,4,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$108+0x0000000800d80000')
f(5,20584,7,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d80d70.apply')
f(6,20584,7,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1')
f(7,20584,4,1,'cats/effect/kernel/SyncRef.modify')
f(8,20584,2,1,'cats/effect/IO$$anon$2.delay')
f(9,20584,2,1,'cats/effect/IO$$anon$2.delay')
f(10,20584,2,1,'cats/effect/IO$.apply')
f(11,20584,2,1,'cats/effect/IO$.delay')
f(12,20584,2,1,'cats/effect/IO$Delay$.apply')
f(13,20584,2,2,'cats.effect.IO$Delay')
f(8,20586,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,20586,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,20586,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,20586,2,2,'cats.effect.kernel.SyncRef$$Lambda$101+0x0000000800d7b810')
f(7,20588,1,1,'cats/syntax/FlattenOps$.flatten$extension')
f(8,20588,1,1,'cats/effect/IO$$anon$2.flatten')
f(9,20588,1,1,'cats/FlatMap.flatten$')
f(10,20588,1,1,'cats/FlatMap.flatten')
f(11,20588,1,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20588,1,1,'cats/effect/IO$$anon$2.flatMap')
f(13,20588,1,1,'cats/effect/IO.flatMap')
f(14,20588,1,1,'cats/effect/IO$FlatMap$.apply')
f(15,20588,1,2,'cats.effect.IO$FlatMap')
f(7,20589,2,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod')
f(8,20589,2,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial')
f(9,20589,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20589,2,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$112+0x0000000800d81140')
f(5,20591,10,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$95.0x0000000800d7a240.apply')
f(6,20591,10,1,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3')
f(7,20591,2,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,20591,2,1,'cats/FlatMap$Ops.flatMap$')
f(9,20591,2,1,'cats/FlatMap$Ops.flatMap')
f(10,20591,2,1,'cats/effect/IO$$anon$2.flatMap')
f(11,20591,2,1,'cats/effect/IO$$anon$2.flatMap')
f(12,20591,2,1,'cats/effect/IO.flatMap')
f(13,20591,2,1,'cats/effect/IO$FlatMap$.apply')
f(14,20591,2,2,'cats.effect.IO$FlatMap')
f(7,20593,2,1,'cats/effect/IO$$anon$2.deferred')
f(8,20593,2,1,'cats/effect/IO$$anon$2.deferred')
f(9,20593,2,1,'cats/effect/IO$.deferred')
f(10,20593,1,1,'cats/effect/IO$.apply')
f(11,20593,1,1,'cats/effect/IO$.delay')
f(12,20593,1,1,'cats/effect/IO$Delay$.apply')
f(13,20593,1,2,'cats.effect.IO$Delay')
f(10,20594,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,20594,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,20594,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,20594,1,2,'cats.effect.IO$$$Lambda$104+0x0000000800d7edd0')
f(7,20595,6,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod')
f(8,20595,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial')
f(9,20595,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,20595,6,2,'cats.effect.std.Queue$AbstractQueue$$Lambda$111+0x0000000800d80d70')
f(1,20601,575,1,'java/lang/Thread.run')
f(2,20601,575,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,20601,575,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,20601,575,1,'java/util/concurrent/FutureTask.run')
f(5,20601,575,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,20601,575,1,'java/util/concurrent/FutureTask.run')
f(7,20601,575,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,20601,575,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,20601,575,1,'java/lang/reflect/Method.invoke')
f(10,20601,575,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,20601,575,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,20601,575,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,20601,575,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_Throughput')
f(14,20601,574,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,20601,574,1,'kyo/bench/Bench.syncCats')
f(16,20601,449,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,20601,417,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,20601,281,1,'cats/effect/IO.unsafeRunAsync')
f(19,20601,275,1,'cats/effect/IO.unsafeRunFiber')
f(20,20601,6,2,'cats.effect.IOFiber')
f(20,20607,83,5,'cats.effect.IOFiber')
f(20,20690,156,1,'cats/effect/IOFiber.<init>')
f(21,20690,115,1,'cats/effect/ArrayStack$.apply')
f(22,20690,115,2,'cats.effect.ArrayStack')
f(21,20805,4,1,'cats/effect/IO$.async')
f(22,20805,1,2,'cats.effect.IO$$anon$4')
f(22,20806,3,1,'cats/effect/IO$IOCont$.apply')
f(23,20806,3,2,'cats.effect.IO$IOCont')
f(21,20809,20,1,'cats/effect/IO$.uncancelable')
f(22,20809,20,1,'cats/effect/IO$Uncancelable$.apply')
f(23,20809,20,2,'cats.effect.IO$Uncancelable')
f(21,20829,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,20829,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,20829,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,20829,17,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,20829,3,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d78410')
f(25,20832,14,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d78a00')
f(20,20846,24,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,20846,24,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,20846,24,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,20846,24,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,20846,24,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,20870,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,20870,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial')
f(22,20870,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,20870,6,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,20870,6,2,'cats.effect.IO$$Lambda$91+0x0000000800d75558')
f(19,20876,6,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,20876,6,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,20876,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,20876,6,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,20876,1,2,'cats.effect.IO$$Lambda$88+0x0000000800d76e48')
f(23,20877,1,2,'cats.effect.IO$$Lambda$89+0x0000000800d77108')
f(23,20878,4,2,'cats.effect.IO$$Lambda$90+0x0000000800d77510')
f(18,20882,4,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,20886,20,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,20886,20,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,20886,20,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,20886,20,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,20886,20,2,'cats.effect.IOPlatform$$Lambda$94+0x0000000800d793e0')
f(18,20906,75,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,20906,75,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,20906,22,2,'java.lang.Object[]')
f(20,20928,14,2,'java.util.concurrent.locks.ReentrantLock')
f(20,20942,2,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,20942,2,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,20944,37,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,20944,37,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,20944,37,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,20981,1,1,'scala/concurrent/package$.blocking')
f(19,20981,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,20981,1,1,'cats/effect/IOPlatform$$Lambda$94.0x0000000800d793e0.apply')
f(21,20981,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,20981,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,20981,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,20981,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,20982,36,1,'scala/util/Either.fold')
f(19,20982,36,1,'cats/effect/IOPlatform$$Lambda$117.0x0000000800d82b88.apply')
f(20,20982,36,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,20982,36,1,'scala/Some$.apply')
f(22,20982,36,2,'scala.Some')
f(17,21018,3,2,'scala.concurrent.duration.package$DurationLong')
f(17,21021,29,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,21021,29,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,21021,29,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,21021,29,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,21021,29,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,21021,29,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,21021,29,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,21021,29,2,'scala.concurrent.duration.FiniteDuration')
f(16,21050,125,1,'kyo/bench/EnqueueDequeueBench.catsBench')
f(17,21050,2,1,'cats/effect/IO.flatMap')
f(18,21050,2,1,'cats/effect/IO$FlatMap$.apply')
f(19,21050,2,2,'cats.effect.IO$FlatMap')
f(17,21052,23,1,'cats/effect/std/Queue$.bounded')
f(18,21052,23,1,'cats/effect/std/Queue$.boundedForConcurrent')
f(19,21052,3,1,'cats/Functor$ToFunctorOps$$anon$4.map')
f(20,21052,3,1,'cats/Functor$Ops.map$')
f(21,21052,3,1,'cats/Functor$Ops.map')
f(22,21052,3,1,'cats/effect/IO$$anon$2.map')
f(23,21052,3,1,'cats/effect/IO$$anon$2.map')
f(24,21052,3,1,'cats/effect/IO.map')
f(25,21052,3,1,'cats/effect/IO$Map$.apply')
f(26,21052,3,2,'cats.effect.IO$Map')
f(19,21055,5,1,'cats/effect/IO$$anon$2.ref')
f(20,21055,5,1,'cats/effect/IO$$anon$2.ref')
f(21,21055,5,1,'cats/effect/IO$.ref')
f(22,21055,5,1,'cats/effect/IO$.apply')
f(23,21055,5,1,'cats/effect/IO$.delay')
f(24,21055,5,1,'cats/effect/IO$Delay$.apply')
f(25,21055,5,2,'cats.effect.IO$Delay')
f(19,21060,7,1,'cats/effect/std/Queue$State$.empty')
f(20,21060,7,1,'cats/effect/std/Queue$State$.apply')
f(21,21060,7,2,'cats.effect.std.Queue$State')
f(19,21067,2,1,'cats/syntax/AllSyntaxBinCompat.toFunctorOps')
f(20,21067,2,1,'cats/Functor$ToFunctorOps.toFunctorOps$')
f(21,21067,2,1,'cats/Functor$ToFunctorOps.toFunctorOps')
f(22,21067,2,2,'cats.Functor$ToFunctorOps$$anon$4')
f(19,21069,6,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d48c00.linkToTargetMethod')
f(20,21069,6,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d48400.newInvokeSpecial')
f(21,21069,6,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,21069,6,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,21069,6,2,'cats.effect.std.Queue$$$Lambda$44+0x0000000800d472e8')
f(17,21075,100,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,21075,100,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,21075,100,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,21075,100,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(21,21075,100,2,'kyo.bench.EnqueueDequeueBench$$Lambda$45+0x0000000800d478d8')
f(14,21175,1,2,'org.openjdk.jmh.results.RawResults')
f(1,21176,4,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,21176,4,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,21176,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,21176,4,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,21176,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,21176,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,21176,4,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,21176,1,1,'java/util/concurrent/ExecutorCompletionService.poll')
f(9,21176,1,1,'java/util/concurrent/LinkedBlockingQueue.poll')
f(10,21176,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(11,21176,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(8,21177,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,21177,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,21177,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,21177,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,21177,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,21177,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: 384px}
</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(24);
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,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_1(G1ParScanThreadStateSet*, G1RedirtyCardsQueueSet*)')
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(20,0,1,5,'wake_up_q')
f(21,0,1,5,'_raw_spin_unlock_irqrestore')
f(1,1,7,3,'[unknown_Java]')
f(2,1,4,6,'cats/effect/IO$Delay.tag',0,4,0)
f(2,5,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(2,7,1,6,'cats/effect/IO$Uncancelable.tag',0,1,0)
f(1,8,285,1,'cats/effect/unsafe/WorkerThread.run')
f(2,8,284,1,'cats/effect/IOFiber.run')
f(3,8,274,1,'cats/effect/IOFiber.autoCedeR')
f(4,8,274,1,'cats/effect/IOFiber.runLoop')
f(5,76,4,2,'cats/effect/ByteStack$.push',4,0,0)
f(6,79,1,2,'cats/effect/ByteStack$.growIfNeeded',1,0,0)
f(5,80,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(5,82,10,6,'cats/effect/IO$FlatMap.tag',0,10,0)
f(5,92,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(5,93,6,6,'cats/effect/IO$Uncancelable.tag',0,6,0)
f(5,99,23,2,'cats/effect/IOFiber.rescheduleFiber',23,0,0)
f(6,101,21,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',21,0,0)
f(7,106,2,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',2,0,0)
f(7,108,14,2,'cats/effect/unsafe/WorkerThread.reschedule',14,0,0)
f(8,117,5,2,'cats/effect/unsafe/LocalQueue.isEmpty',5,0,0)
f(9,119,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',3,0,0)
f(5,122,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,123,32,1,'cats/effect/IOFiber.succeeded')
f(6,131,1,2,'cats/effect/ArrayStack.pop',1,0,0)
f(6,132,10,2,'cats/effect/ByteStack$.pop',10,0,0)
f(7,136,6,2,'cats/effect/ByteStack$.peek',6,0,0)
f(6,142,7,3,'itable stub')
f(6,149,3,1,'kyo/bench/EnqueueDequeueBench$$Lambda$103.0x0000000800d7e000.apply')
f(7,151,1,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1',1,0,0)
f(8,151,1,2,'cats/effect/IO.flatMap',1,0,0)
f(9,151,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(6,152,3,1,'kyo/bench/EnqueueDequeueBench$$Lambda$110.0x0000000800d809a0.apply')
f(7,154,1,2,'kyo/bench/EnqueueDequeueBench.loop$1$$anonfun$1$$anonfun$1',1,0,0)
f(8,154,1,2,'kyo/bench/EnqueueDequeueBench.loop$1',1,0,0)
f(9,154,1,2,'cats/effect/IO.flatMap',1,0,0)
f(10,154,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(11,154,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(5,155,49,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d7b810.apply')
f(6,155,49,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',31,0,0)
f(7,155,49,2,'cats/effect/kernel/SyncRef.spin$4',31,0,0)
f(8,159,10,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$108.0x0000000800d80000.apply',10,0,0)
f(9,161,8,2,'cats/effect/std/Queue$AbstractQueue.$anonfun$15',8,0,0)
f(10,161,1,2,'cats/effect/IO$$anon$2.unit',1,0,0)
f(11,161,1,2,'cats/Applicative.unit$',1,0,0)
f(12,161,1,2,'cats/Applicative.unit',1,0,0)
f(13,161,1,2,'cats/effect/IO$$anon$2.pure',1,0,0)
f(14,161,1,2,'cats/effect/IO$$anon$2.pure',1,0,0)
f(15,161,1,2,'cats/effect/IO$.pure',1,0,0)
f(16,161,1,2,'cats/effect/IO$Pure$.apply',1,0,0)
f(10,162,3,2,'scala/collection/AbstractIterable.nonEmpty',3,0,0)
f(11,162,3,2,'scala/collection/IterableOnceOps.nonEmpty$',3,0,0)
f(12,162,3,2,'scala/collection/IterableOnceOps.nonEmpty',3,0,0)
f(13,162,3,2,'scala/collection/immutable/Queue.isEmpty',3,0,0)
f(14,163,1,2,'scala/collection/immutable/List.isEmpty',1,0,0)
f(14,164,1,2,'scala/collection/immutable/Queue.out',1,0,0)
f(10,165,4,2,'scala/collection/immutable/Queue.enqueue',4,0,0)
f(11,165,4,2,'scala/collection/immutable/Queue.<init>',4,0,0)
f(8,169,23,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$112.0x0000000800d81140.apply',5,0,0)
f(9,174,18,1,'cats/effect/std/Queue$AbstractQueue.$anonfun$12')
f(10,178,1,2,'cats/effect/std/Queue$State._2',1,0,0)
f(11,178,1,2,'cats/effect/std/Queue$State.size',1,0,0)
f(10,179,5,2,'scala/collection/AbstractIterable.nonEmpty',5,0,0)
f(11,180,4,2,'scala/collection/IterableOnceOps.nonEmpty$',4,0,0)
f(12,180,4,2,'scala/collection/IterableOnceOps.nonEmpty',4,0,0)
f(13,180,4,2,'scala/collection/immutable/Queue.isEmpty',4,0,0)
f(14,181,2,2,'scala/collection/immutable/List.isEmpty',2,0,0)
f(14,183,1,2,'scala/collection/immutable/Queue.in',1,0,0)
f(10,184,2,2,'scala/collection/immutable/Queue.dequeue',2,0,0)
f(11,184,1,2,'scala/collection/immutable/List.equals',1,0,0)
f(11,185,1,2,'scala/collection/immutable/List.reverse',1,0,0)
f(12,185,1,2,'scala/collection/immutable/$colon$colon.head',1,0,0)
f(10,186,6,2,'scala/collection/immutable/Queue.isEmpty',6,0,0)
f(11,186,6,2,'scala/collection/immutable/Queue.out',6,0,0)
f(8,192,7,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',7,0,0)
f(9,192,7,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',7,0,0)
f(10,192,7,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',7,0,0)
f(8,199,5,2,'java/util/concurrent/atomic/AtomicReference.get',5,0,0)
f(5,204,33,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$102.0x0000000800d7bad0.apply',32,0,0)
f(6,211,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(7,211,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(8,211,1,4,'MemAllocator::allocate() const')
f(9,211,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(6,212,25,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2',25,0,0)
f(7,213,12,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',12,0,0)
f(8,213,12,2,'cats/FlatMap$Ops.flatMap$',12,0,0)
f(9,213,12,2,'cats/FlatMap$Ops.flatMap',12,0,0)
f(10,221,4,2,'cats/effect/IO$$anon$2.flatMap',4,0,0)
f(11,223,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,223,2,2,'cats/effect/IO.flatMap',2,0,0)
f(13,223,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(14,224,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(7,225,11,2,'cats/effect/IO$$anon$2.deferred',11,0,0)
f(8,225,11,2,'cats/effect/IO$$anon$2.deferred',11,0,0)
f(9,227,9,2,'cats/effect/IO$.deferred',9,0,0)
f(10,229,4,2,'cats/effect/IO$.apply',4,0,0)
f(11,229,4,2,'cats/effect/IO$.delay',4,0,0)
f(12,230,2,2,'cats/effect/IO$Delay$.apply',2,0,0)
f(13,231,1,2,'cats/effect/IO$Delay.<init>',1,0,0)
f(12,232,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(10,233,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(11,233,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(7,236,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(8,236,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(5,237,12,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$105.0x0000000800d7f2f0.apply')
f(6,242,7,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2$$anonfun$1',7,0,0)
f(7,243,3,2,'cats/effect/kernel/SyncRef.modify',3,0,0)
f(8,243,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(9,243,3,2,'cats/effect/IO$$anon$2.delay',3,0,0)
f(10,243,3,2,'cats/effect/IO$.apply',3,0,0)
f(11,243,3,2,'cats/effect/IO$.delay',3,0,0)
f(12,243,3,2,'cats/effect/IO$Delay$.apply',3,0,0)
f(7,246,2,2,'cats/syntax/FlattenOps$.flatten$extension',2,0,0)
f(8,247,1,2,'cats/effect/IO$$anon$2.flatten',1,0,0)
f(9,247,1,2,'cats/FlatMap.flatten$',1,0,0)
f(10,247,1,2,'cats/FlatMap.flatten',1,0,0)
f(11,247,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(12,247,1,2,'cats/effect/IO$$anon$2.flatMap',1,0,0)
f(13,247,1,2,'cats/effect/IO.flatMap',1,0,0)
f(14,247,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(7,248,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(8,248,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d74c00.newInvokeSpecial',1,0,0)
f(9,248,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,249,6,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d80d70.apply')
f(6,251,4,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3$$anonfun$1',4,0,0)
f(7,251,1,2,'cats/effect/kernel/SyncRef.modify',1,0,0)
f(8,251,1,2,'cats/effect/IO$$anon$2.delay',1,0,0)
f(9,251,1,2,'cats/effect/IO$$anon$2.delay',1,0,0)
f(10,251,1,2,'cats/effect/IO$.apply',1,0,0)
f(11,251,1,2,'cats/effect/IO$.delay',1,0,0)
f(12,251,1,2,'cats/effect/Thunk$.asFunction0',1,0,0)
f(7,252,2,2,'cats/syntax/FlattenOps$.flatten$extension',2,0,0)
f(8,252,2,2,'cats/effect/IO$$anon$2.flatten',2,0,0)
f(9,252,2,2,'cats/FlatMap.flatten$',2,0,0)
f(10,252,2,2,'cats/FlatMap.flatten',2,0,0)
f(11,252,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(12,252,2,2,'cats/effect/IO$$anon$2.flatMap',2,0,0)
f(13,252,2,2,'cats/effect/IO.flatMap',2,0,0)
f(14,252,2,2,'cats/effect/IO$FlatMap$.apply',2,0,0)
f(7,254,1,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d85c00.linkToTargetMethod',1,0,0)
f(8,254,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d85400.newInvokeSpecial',1,0,0)
f(9,254,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,255,6,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$95.0x0000000800d7a240.apply',6,0,0)
f(6,255,6,2,'cats/effect/std/Queue$AbstractQueue.$init$$$anonfun$3',6,0,0)
f(7,255,2,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',2,0,0)
f(8,255,2,2,'cats/FlatMap$Ops.flatMap$',2,0,0)
f(9,255,2,2,'cats/FlatMap$Ops.flatMap',2,0,0)
f(10,255,2,2,'cats/effect/IO$$anon$2.flatMap',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.flatMap',2,0,0)
f(13,256,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(14,256,1,2,'cats/effect/IO$FlatMap.<init>',1,0,0)
f(15,256,1,2,'cats/effect/IO.<init>',1,0,0)
f(16,256,1,2,'cats/effect/IOPlatform.<init>',1,0,0)
f(7,257,1,2,'cats/effect/IO$$anon$2.deferred',1,0,0)
f(7,258,3,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d84c00.linkToTargetMethod',3,0,0)
f(8,258,3,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d84400.newInvokeSpecial',3,0,0)
f(5,261,9,3,'itable stub')
f(5,270,12,3,'vtable stub')
f(3,282,10,1,'cats/effect/IOFiber.execR')
f(4,282,9,1,'cats/effect/IOFiber.runLoop')
f(5,286,1,2,'cats/effect/IOFiber.rescheduleFiber',1,0,0)
f(6,286,1,2,'cats/effect/unsafe/WorkStealingThreadPool.reschedule',1,0,0)
f(5,287,1,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d7b810.apply')
f(6,287,1,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',1,0,0)
f(7,287,1,2,'cats/effect/kernel/SyncRef.spin$4',1,0,0)
f(5,288,2,2,'cats/effect/std/Queue$AbstractQueue$$Lambda$102.0x0000000800d7bad0.apply',2,0,0)
f(6,289,1,2,'cats/effect/std/Queue$AbstractQueue.offer$$anonfun$2',1,0,0)
f(7,289,1,2,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap',1,0,0)
f(8,289,1,2,'cats/FlatMap$Ops.flatMap$',1,0,0)
f(9,289,1,2,'cats/FlatMap$Ops.flatMap',1,0,0)
f(5,290,1,1,'cats/effect/std/Queue$AbstractQueue$$Lambda$111.0x0000000800d80d70.apply')
f(4,291,1,4,'oopFactory::new_typeArray(BasicType, int, JavaThread*)')
f(2,292,1,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,292,1,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,292,1,1,'java/util/concurrent/locks/LockSupport.park')
f(5,292,1,1,'jdk/internal/misc/Unsafe.park')
f(6,292,1,3,'Unsafe_Park')
f(7,292,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,292,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,292,1,5,'__x64_sys_futex')
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/EnqueueDequeueBench_syncCats_jmhTest.syncCats_Throughput')
f(14,293,1,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_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,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,'JNIHandleBlock::allocate_handle(oopDesc*, AllocFailStrategy::AllocFailEnum)')
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,18308,3,'all')
f(1,0,17589,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,17589,1,'cats/effect/IOFiber.run')
f(3,0,8086,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,8086,1,'cats/effect/IOFiber.runLoop')
f(5,0,1,2,'cats.effect.ContState')
f(5,1,2184,2,'cats.effect.IOFiber')
f(5,2185,4576,1,'cats/effect/IOFiber.<init>')
f(6,2185,1229,1,'cats/effect/ArrayStack$.apply')
f(7,2185,1229,2,'cats.effect.ArrayStack')
f(6,3414,683,1,'cats/effect/CallbackStack$.apply')
f(7,3414,683,2,'cats.effect.CallbackStack')
f(6,4097,1086,1,'cats/effect/IO$.async')
f(7,4097,383,2,'cats.effect.IO$$anon$4')
f(7,4480,703,1,'cats/effect/IO$IOCont$.apply')
f(8,4480,703,2,'cats.effect.IO$IOCont')
f(6,5183,608,1,'cats/effect/IO$.uncancelable')
f(7,5183,608,1,'cats/effect/IO$Uncancelable$.apply')
f(8,5183,608,2,'cats.effect.IO$Uncancelable')
f(6,5791,970,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,5791,970,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,5791,970,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,5791,502,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5ba90')
f(9,6293,468,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e220')
f(5,6761,1,1,'cats/effect/IOFiber.rescheduleFiber')
f(6,6761,1,1,'cats/effect/unsafe/WorkStealingThreadPool.reschedule')
f(7,6761,1,1,'cats/effect/unsafe/WorkerThread.reschedule')
f(8,6761,1,1,'cats/effect/unsafe/WorkerThread.schedule')
f(9,6761,1,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(10,6761,1,2,'java.lang.Runnable[]')
f(5,6762,3,1,'cats/effect/IOFiber.scheduleFiber')
f(6,6762,3,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,6762,3,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,6762,3,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(9,6762,3,2,'java.lang.Runnable[]')
f(5,6765,1321,1,'cats/effect/IOFiber.succeeded')
f(6,6765,1321,1,'kyo/bench/ForkManyBench$$Lambda$102.0x0000000800d60f48.apply')
f(7,6765,1321,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,6765,1321,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,6765,680,1,'cats/effect/IO.flatMap')
f(10,6765,680,1,'cats/effect/IO$FlatMap$.apply')
f(11,6765,680,2,'cats.effect.IO$FlatMap')
f(9,7445,641,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7445,641,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64400.newInvokeSpecial')
f(11,7445,641,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7445,641,2,'kyo.bench.ForkManyBench$$Lambda$102+0x0000000800d60f48')
f(3,8086,417,1,'cats/effect/IOFiber.cedeR')
f(4,8086,417,1,'cats/effect/IOFiber.runLoop')
f(5,8086,106,2,'cats.effect.IOFiber')
f(5,8192,1,1,'cats/effect/IO$$$Lambda$92.0x0000000800d5f758.apply')
f(6,8192,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,8192,1,1,'cats/effect/IODeferred.<init>')
f(8,8192,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(5,8193,247,1,'cats/effect/IOFiber.<init>')
f(6,8193,60,1,'cats/effect/ArrayStack$.apply')
f(7,8193,60,2,'cats.effect.ArrayStack')
f(6,8253,45,1,'cats/effect/CallbackStack$.apply')
f(7,8253,45,2,'cats.effect.CallbackStack')
f(6,8298,64,1,'cats/effect/IO$.async')
f(7,8298,28,2,'cats.effect.IO$$anon$4')
f(7,8326,36,1,'cats/effect/IO$IOCont$.apply')
f(8,8326,36,2,'cats.effect.IO$IOCont')
f(6,8362,33,1,'cats/effect/IO$.uncancelable')
f(7,8362,33,1,'cats/effect/IO$Uncancelable$.apply')
f(8,8362,33,2,'cats.effect.IO$Uncancelable')
f(6,8395,45,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,8395,45,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,8395,45,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,8395,26,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5ba90')
f(9,8421,19,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e220')
f(5,8440,63,1,'cats/effect/IOFiber.succeeded')
f(6,8440,62,1,'kyo/bench/ForkManyBench$$Lambda$102.0x0000000800d60f48.apply')
f(7,8440,62,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,8440,62,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,8440,28,1,'cats/effect/IO.flatMap')
f(10,8440,28,1,'cats/effect/IO$FlatMap$.apply')
f(11,8440,28,2,'cats.effect.IO$FlatMap')
f(9,8468,34,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,8468,34,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64400.newInvokeSpecial')
f(11,8468,34,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,8468,34,2,'kyo.bench.ForkManyBench$$Lambda$102+0x0000000800d60f48')
f(6,8502,1,1,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d60000.apply')
f(7,8502,1,1,'kyo/bench/ForkManyBench.catsBench$$anonfun$1$$anonfun$2')
f(8,8502,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8502,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8502,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8502,1,2,'kyo.bench.ForkManyBench$$Lambda$103+0x0000000800d61318')
f(3,8503,9086,1,'cats/effect/IOFiber.execR')
f(4,8503,4428,1,'cats/effect/ArrayStack.init')
f(5,8503,4428,2,'java.lang.Object[]')
f(4,12931,1107,1,'cats/effect/ByteStack$.create')
f(5,12931,1107,2,'int[]')
f(4,14038,3551,1,'cats/effect/IOFiber.runLoop')
f(5,14038,1193,1,'cats/effect/IOFiber.succeeded')
f(6,14038,1193,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,14038,295,1,'cats/effect/IO$.pure')
f(8,14038,295,1,'cats/effect/IO$Pure$.apply')
f(9,14038,295,2,'cats.effect.IO$Pure')
f(7,14333,485,1,'cats/effect/IOFiber.done')
f(8,14333,485,1,'cats/effect/IO$.pure')
f(9,14333,485,1,'cats/effect/IO$Pure$.apply')
f(10,14333,485,2,'cats.effect.IO$Pure')
f(7,14818,413,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,14818,413,2,'cats.effect.kernel.Outcome$Succeeded')
f(5,15231,2358,1,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d60a68.apply')
f(6,15231,2358,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,15231,2358,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,15231,2358,1,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d60698.apply')
f(9,15231,2358,1,'kyo/bench/ForkManyBench.$anonfun$adapted$1')
f(10,15231,2358,1,'kyo/bench/ForkManyBench.$anonfun$1')
f(11,15231,1359,1,'scala/Tuple2$.apply')
f(12,15231,1359,2,'scala.Tuple2')
f(11,16590,999,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(12,16590,999,1,'java/lang/Integer.valueOf')
f(13,16590,999,2,'java.lang.Integer')
f(1,17589,716,1,'java/lang/Thread.run')
f(2,17589,716,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,17589,716,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,17589,716,1,'java/util/concurrent/FutureTask.run')
f(5,17589,716,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,17589,716,1,'java/util/concurrent/FutureTask.run')
f(7,17589,716,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,17589,716,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,17589,716,1,'java/lang/reflect/Method.invoke')
f(10,17589,716,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,17589,716,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,17589,716,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,17589,716,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_Throughput')
f(14,17589,716,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,17589,716,1,'kyo/bench/Bench.forkCats')
f(16,17589,713,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,17589,630,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,17589,328,1,'cats/effect/IO.unsafeRunAsync')
f(19,17589,268,1,'cats/effect/IO.unsafeRunFiber')
f(20,17589,60,2,'cats.effect.IOFiber')
f(20,17649,6,5,'cats.effect.IOFiber')
f(20,17655,154,1,'cats/effect/IOFiber.<init>')
f(21,17655,75,1,'cats/effect/ArrayStack$.apply')
f(22,17655,75,2,'cats.effect.ArrayStack')
f(21,17730,6,1,'cats/effect/CallbackStack$.apply')
f(22,17730,6,2,'cats.effect.CallbackStack')
f(21,17736,17,1,'cats/effect/IO$.async')
f(22,17736,3,2,'cats.effect.IO$$anon$4')
f(22,17739,14,1,'cats/effect/IO$IOCont$.apply')
f(23,17739,14,2,'cats.effect.IO$IOCont')
f(21,17753,47,1,'cats/effect/IO$.uncancelable')
f(22,17753,47,1,'cats/effect/IO$Uncancelable$.apply')
f(23,17753,47,2,'cats.effect.IO$Uncancelable')
f(21,17800,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,17800,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,17800,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,17800,8,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5ba90')
f(24,17808,1,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e220')
f(20,17809,39,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,17809,39,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,17809,39,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,17809,39,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,17809,39,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,17848,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,17848,9,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c000.newInvokeSpecial')
f(22,17848,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,17848,6,2,'cats.effect.IO$$Lambda$88+0x0000000800d5ac58')
f(23,17854,3,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(24,17854,3,2,'cats.effect.IO$$Lambda$88+0x0000000800d5ac58')
f(19,17857,60,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,17857,60,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,17857,60,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,17857,15,2,'cats.effect.IO$$Lambda$85+0x0000000800d595a8')
f(22,17872,44,2,'cats.effect.IO$$Lambda$86+0x0000000800d59868')
f(22,17916,1,2,'cats.effect.IO$$Lambda$87+0x0000000800d59c70')
f(18,17917,15,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17932,25,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17932,25,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17932,25,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17932,9,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d591a0')
f(21,17941,4,2,'cats.effect.IOPlatform$$Lambda$91+0x0000000800d5ec00')
f(21,17945,12,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,17945,12,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d591a0')
f(18,17957,151,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17957,151,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17957,63,2,'java.lang.Object[]')
f(20,18020,20,2,'java.util.concurrent.locks.ReentrantLock')
f(20,18040,10,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,18040,10,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,18050,58,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,18050,58,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,18050,58,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,18108,29,1,'scala/concurrent/package$.blocking')
f(19,18108,29,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,18108,29,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ec00.apply')
f(21,18108,29,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,18108,29,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,18108,29,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,18108,29,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,18137,82,1,'scala/util/Either.fold')
f(19,18137,82,1,'cats/effect/IOPlatform$$Lambda$115.0x0000000800d7ebd8.apply')
f(20,18137,82,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,18137,82,1,'scala/Some$.apply')
f(22,18137,82,2,'scala.Some')
f(17,18219,3,2,'scala.concurrent.duration.package$DurationLong')
f(17,18222,80,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,18222,80,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,18222,80,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,18222,80,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,18222,80,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,18222,80,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,18222,80,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,18222,80,2,'scala.concurrent.duration.FiniteDuration')
f(16,18302,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,18302,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,18302,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,18302,3,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13aa8')
f(1,18305,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,18305,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,18305,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,18305,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,18305,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,18305,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,18305,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,18305,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,18305,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,18305,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,18305,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,18305,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,18305,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,1172,3,'all')
f(1,0,14,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,14,3,'thread_native_entry(Thread*)')
f(3,0,14,4,'Thread::call_run()')
f(4,0,14,4,'JavaThread::thread_main_inner()')
f(5,0,14,4,'CompileBroker::compiler_thread_loop()')
f(6,0,14,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,14,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,14,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::df_flow_types(ciTypeFlow::Block*, bool, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(15,0,1,4,'ciTypeFlow::flow_block(ciTypeFlow::Block*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(16,0,1,4,'ciTypeFlow::StateVector::apply_one_bytecode(ciBytecodeStream*)')
f(17,0,1,4,'ciTypeFlow::StateVector::do_invoke(ciBytecodeStream*, bool)')
f(18,0,1,4,'ciBytecodeStream::get_method(bool&, ciSignature**)')
f(19,0,1,4,'ciEnv::get_method_by_index_impl(constantPoolHandle const&, int, Bytecodes::Code, ciInstanceKlass*)')
f(20,0,1,4,'ciEnv::lookup_method(ciInstanceKlass*, ciKlass*, Symbol*, Symbol*, Bytecodes::Code, constantTag)')
f(21,0,1,4,'LinkResolver::linktime_resolve_virtual_method_or_null(LinkInfo const&)')
f(22,0,1,4,'LinkResolver::linktime_resolve_virtual_method(LinkInfo const&, JavaThread*)')
f(23,0,1,4,'LinkResolver::resolve_method(LinkInfo const&, Bytecodes::Code, JavaThread*)')
f(24,0,1,4,'LinkResolver::lookup_method_in_klasses(LinkInfo const&, bool, bool)')
f(25,0,1,4,'InstanceKlass::uncached_lookup_method(Symbol const*, Symbol const*, Klass::OverpassLookupMode, Klass::PrivateLookupMode) const')
f(26,0,1,4,'InstanceKlass::find_method_index(Array<Method*> const*, Symbol const*, Symbol const*, Klass::OverpassLookupMode, Klass::StaticLookupMode, Klass::PrivateLookupMode) [clone .constprop.0]')
f(9,1,7,4,'Compile::Code_Gen()')
f(10,1,2,4,'Matcher::match()')
f(11,1,2,4,'Matcher::xform(Node*, int)')
f(12,1,1,4,'Matcher::match_sfpt(SafePointNode*)')
f(13,1,1,4,'Matcher::match_tree(Node const*)')
f(14,1,1,4,'Matcher::Label_Root(Node const*, State*, Node*, Node*&)')
f(12,2,1,4,'Matcher::match_tree(Node const*)')
f(13,2,1,4,'Matcher::Label_Root(Node const*, State*, Node*, Node*&)')
f(14,2,1,4,'Matcher::Label_Root(Node const*, State*, Node*, Node*&)')
f(15,2,1,4,'State::DFA(int, Node const*)')
f(10,3,4,4,'PhaseChaitin::Register_Allocate()')
f(11,3,1,4,'PhaseChaitin::Select()')
f(12,3,1,4,'IndexSetIterator::advance_and_next()')
f(11,4,1,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(11,5,1,4,'PhaseChaitin::stretch_base_pointer_live_ranges(ResourceArea*)')
f(11,6,1,4,'PhaseIFG::Compute_Effective_Degree()')
f(12,6,1,4,'PhaseIFG::effective_degree(unsigned int) const')
f(10,7,1,4,'PhaseOutput::Output()')
f(11,7,1,4,'PhaseOutput::BuildOopMaps()')
f(12,7,1,4,'OopFlow::compute_reach(PhaseRegAlloc*, int, Dict*)')
f(9,8,4,4,'Compile::Optimize()')
f(10,8,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,8,1,4,'PhaseIdealLoop::Dominators()')
f(12,8,1,5,'asm_exc_page_fault')
f(13,8,1,5,'exc_page_fault')
f(14,8,1,5,'do_user_addr_fault')
f(15,8,1,5,'handle_mm_fault')
f(16,8,1,5,'__handle_mm_fault')
f(17,8,1,5,'handle_pte_fault')
f(18,8,1,5,'do_anonymous_page')
f(19,8,1,5,'alloc_pages_vma')
f(20,8,1,5,'__alloc_pages')
f(21,8,1,5,'get_page_from_freelist')
f(22,8,1,5,'clear_page_erms')
f(10,9,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,9,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,9,1,4,'PhaseIdealLoop::build_loop_early(VectorSet&, Node_List&, Node_Stack&)')
f(10,10,1,4,'PhaseMacroExpand::expand_macro_nodes()')
f(11,10,1,4,'PhaseMacroExpand::expand_allocate_common(AllocateNode*, Node*, TypeFunc const*, unsigned char*)')
f(12,10,1,4,'PhaseMacroExpand::initialize_object(AllocateNode*, Node*, Node*, Node*, Node*, Node*, Node*)')
f(13,10,1,4,'PhaseMacroExpand::make_store(Node*, Node*, Node*, int, Node*, BasicType)')
f(14,10,1,4,'StoreNode::make(PhaseGVN&, Node*, Node*, Node*, TypePtr const*, Node*, BasicType, MemNode::MemOrd)')
f(15,10,1,4,'TypeNarrowKlass::make(TypePtr const*)')
f(16,10,1,4,'Dict::Insert(void*, void*, bool)')
f(17,10,1,4,'TypeNarrowPtr::hash() const')
f(18,10,1,4,'TypeKlassPtr::hash() const')
f(10,11,1,4,'PhaseRenumberLive::PhaseRenumberLive(PhaseGVN*, Unique_Node_List*, Unique_Node_List*, Phase::PhaseNumber)')
f(11,11,1,4,'PhaseRenumberLive::update_embedded_ids(Node*)')
f(9,12,2,4,'ParseGenerator::generate(JVMState*)')
f(10,12,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,12,2,4,'Parse::do_all_blocks()')
f(12,12,2,4,'Parse::do_one_block()')
f(13,12,2,4,'Parse::do_call()')
f(14,12,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,12,1,4,'ParseGenerator::generate(JVMState*)')
f(16,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,12,1,4,'Parse::do_all_blocks()')
f(18,12,1,4,'Parse::do_one_block()')
f(19,12,1,4,'Parse::do_call()')
f(20,12,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,12,1,4,'ParseGenerator::generate(JVMState*)')
f(22,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,12,1,4,'Parse::do_all_blocks()')
f(24,12,1,4,'Parse::do_one_block()')
f(25,12,1,4,'Parse::do_call()')
f(26,12,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,12,1,4,'ParseGenerator::generate(JVMState*)')
f(28,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,12,1,4,'Parse::do_all_blocks()')
f(30,12,1,4,'Parse::do_one_block()')
f(31,12,1,4,'Parse::do_call()')
f(32,12,1,4,'ParseGenerator::generate(JVMState*)')
f(33,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(34,12,1,4,'Parse::do_all_blocks()')
f(35,12,1,4,'Parse::do_one_block()')
f(36,12,1,4,'Parse::do_call()')
f(37,12,1,4,'ParseGenerator::generate(JVMState*)')
f(38,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(39,12,1,4,'Parse::do_all_blocks()')
f(40,12,1,4,'Parse::do_one_block()')
f(41,12,1,4,'Parse::return_current(Node*)')
f(15,13,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(16,13,1,4,'ParseGenerator::generate(JVMState*)')
f(17,13,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(18,13,1,4,'Parse::do_all_blocks()')
f(19,13,1,4,'Parse::do_one_block()')
f(20,13,1,4,'Parse::do_call()')
f(21,13,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,13,1,4,'ParseGenerator::generate(JVMState*)')
f(23,13,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,13,1,4,'Parse::do_all_blocks()')
f(25,13,1,4,'Parse::do_one_block()')
f(26,13,1,4,'Parse::do_call()')
f(27,13,1,4,'ParseGenerator::generate(JVMState*)')
f(28,13,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,13,1,4,'Parse::do_all_blocks()')
f(30,13,1,4,'Parse::do_one_block()')
f(31,13,1,4,'Parse::do_call()')
f(32,13,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(33,13,1,4,'ciMethod::get_method_at_bci(int, bool&, ciSignature**)')
f(34,13,1,4,'ciBytecodeStream::get_method(bool&, ciSignature**)')
f(35,13,1,4,'ciEnv::get_method_by_index_impl(constantPoolHandle const&, int, Bytecodes::Code, ciInstanceKlass*)')
f(36,13,1,4,'ciEnv::lookup_method(ciInstanceKlass*, ciKlass*, Symbol*, Symbol*, Bytecodes::Code, constantTag)')
f(37,13,1,4,'LinkResolver::linktime_resolve_virtual_method_or_null(LinkInfo const&)')
f(38,13,1,4,'LinkResolver::linktime_resolve_virtual_method(LinkInfo const&, JavaThread*)')
f(39,13,1,4,'LinkResolver::resolve_method(LinkInfo const&, Bytecodes::Code, JavaThread*)')
f(1,14,9,3,'[unknown_Java]')
f(2,14,3,3,'Interpreter')
f(2,17,1,3,'SafepointBlob')
f(3,17,1,3,'[unknown]')
f(4,17,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(5,17,1,3,'JVM_handle_linux_signal')
f(6,17,1,4,'PosixSignals::pd_hotspot_signal_handler(int, siginfo*, ucontext*, JavaThread*)')
f(2,18,3,6,'cats/effect/IO$Start.tag',0,3,0)
f(2,21,1,1,'cats/effect/IOFiber.succeeded')
f(2,22,1,3,'clock_gettime')
f(3,22,1,3,'[vdso]')
f(1,23,1148,1,'cats/effect/unsafe/WorkerThread.run')
f(2,26,972,1,'cats/effect/IOFiber.run',92,0,0)
f(3,30,194,1,'cats/effect/IOFiber.autoCedeR',7,0,0)
f(4,37,187,1,'cats/effect/IOFiber.runLoop',0,0,7)
f(5,52,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,53,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(5,55,7,6,'cats/effect/IO$Start.tag',0,7,0)
f(5,62,42,1,'cats/effect/IOFiber.<init>',1,0,0)
f(6,95,2,2,'cats/effect/CallbackStack$.apply',2,0,0)
f(6,97,2,2,'cats/effect/IO$.async',2,0,0)
f(6,99,3,2,'cats/effect/IO$.uncancelable',3,0,0)
f(7,99,3,2,'cats/effect/IO$Uncancelable$.apply',3,0,0)
f(8,101,1,2,'cats/effect/IO$Uncancelable.<init>',1,0,0)
f(6,102,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(7,102,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(8,102,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(5,104,1,2,'cats/effect/IOFiber.rescheduleFiber',1,0,0)
f(5,105,74,1,'cats/effect/IOFiber.scheduleFiber',1,0,0)
f(6,105,74,1,'cats/effect/unsafe/WorkStealingThreadPool.execute',1,0,0)
f(7,107,72,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,112,24,2,'cats/effect/unsafe/LocalQueue.enqueue',24,0,0)
f(9,124,4,2,'cats/effect/unsafe/LocalQueue.msb',4,0,0)
f(9,128,2,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',2,0,0)
f(10,128,2,2,'cats/effect/unsafe/LocalQueue.lsb',2,0,0)
f(9,130,2,2,'cats/effect/unsafe/ScalQueue.offer',2,0,0)
f(10,130,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(11,130,2,2,'java/util/Random.nextInt',2,0,0)
f(12,130,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(13,130,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(14,130,2,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',2,0,0)
f(9,132,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(9,133,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',3,0,0)
f(8,136,43,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',2,0,0)
f(9,136,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(10,136,2,2,'java/util/Random.nextInt',2,0,0)
f(11,136,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(12,137,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(13,137,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(9,138,41,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,138,41,1,'jdk/internal/misc/Unsafe.unpark')
f(11,138,2,3,'Unsafe_Unpark')
f(12,138,1,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(12,139,1,3,'pthread_mutex_lock')
f(11,140,39,3,'pthread_cond_signal')
f(12,144,35,5,'entry_SYSCALL_64_after_hwframe')
f(13,144,35,5,'do_syscall_64')
f(14,145,34,5,'__x64_sys_futex')
f(15,145,33,5,'do_futex')
f(16,145,1,5,'_raw_spin_lock')
f(16,146,32,5,'futex_wake')
f(17,147,1,5,'mark_wake_futex')
f(17,148,30,5,'wake_up_q')
f(18,148,30,5,'_raw_spin_unlock_irqrestore')
f(15,178,1,5,'futex_wake')
f(5,179,12,1,'cats/effect/IOFiber.succeeded')
f(6,180,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(7,180,1,2,'cats/effect/ByteStack$.peek',1,0,0)
f(6,181,10,2,'cats/effect/IOFiber.runTerminusSuccessK',10,0,0)
f(7,181,10,2,'cats/effect/IOFiber.done',10,0,0)
f(8,185,4,2,'cats/effect/CallbackStack.apply',4,0,0)
f(8,189,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,189,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(10,189,2,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',2,0,0)
f(5,191,29,2,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d60698.apply',29,0,0)
f(6,191,29,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',29,0,0)
f(7,191,29,2,'cats/effect/kernel/SyncRef.spin$4',29,0,0)
f(8,191,29,2,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d602c8.apply',29,0,0)
f(9,191,29,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',29,0,0)
f(10,191,29,2,'kyo/bench/ForkManyBench.$anonfun$1',29,0,0)
f(11,191,29,2,'scala/runtime/BoxesRunTime.boxToInteger',29,0,0)
f(5,220,4,3,'vtable stub')
f(3,224,9,1,'cats/effect/IOFiber.cedeR')
f(4,224,9,1,'cats/effect/IOFiber.runLoop',0,0,1)
f(5,225,1,6,'cats/effect/IO$Map.tag',0,1,0)
f(5,226,1,1,'cats/effect/IOFiber.<init>')
f(5,227,3,1,'cats/effect/IOFiber.scheduleFiber')
f(6,227,3,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,227,3,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,227,1,2,'cats/effect/unsafe/LocalQueue.enqueue',1,0,0)
f(9,227,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',1,0,0)
f(10,227,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(8,228,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,228,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,228,2,1,'jdk/internal/misc/Unsafe.unpark')
f(11,228,2,3,'pthread_cond_signal')
f(12,228,2,5,'entry_SYSCALL_64_after_hwframe')
f(13,228,2,5,'do_syscall_64')
f(14,228,2,5,'__x64_sys_futex')
f(15,228,2,5,'do_futex')
f(16,228,2,5,'futex_wake')
f(17,228,2,5,'wake_up_q')
f(18,228,2,5,'_raw_spin_unlock_irqrestore')
f(5,230,2,1,'cats/effect/IOFiber.succeeded')
f(6,230,2,2,'cats/effect/IOFiber.runTerminusSuccessK',2,0,0)
f(7,230,2,2,'cats/effect/IOFiber.done',2,0,0)
f(8,231,1,2,'cats/effect/CallbackStack.apply',1,0,0)
f(5,232,1,3,'itable stub')
f(3,233,757,1,'cats/effect/IOFiber.execR',73,0,0)
f(4,241,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(5,241,1,4,'InstanceKlass::allocate_objArray(int, int, JavaThread*)')
f(6,241,1,4,'MemAllocator::allocate() const')
f(7,241,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(8,241,1,4,'ThreadLocalAllocBuffer::fill(HeapWordImpl**, HeapWordImpl**, unsigned long)')
f(4,242,64,2,'cats/effect/ArrayStack.init',64,0,0)
f(5,243,2,3,'[vdso]')
f(5,245,56,3,'clock_gettime')
f(6,246,55,3,'[vdso]')
f(5,301,5,4,'os::javaTimeNanos()')
f(4,306,1,2,'cats/effect/ByteStack$.push',1,0,0)
f(4,307,683,1,'cats/effect/IOFiber.runLoop',0,0,9)
f(5,456,185,2,'cats/effect/IO$$anon$3$$Lambda$107.0x0000000800d632f0.apply',185,0,0)
f(5,641,2,2,'cats/effect/IO$.apply',2,0,0)
f(6,641,2,2,'cats/effect/IO$.delay',2,0,0)
f(5,643,4,6,'cats/effect/IO$Delay.tag',0,4,0)
f(5,647,3,6,'cats/effect/IO$FlatMap.tag',0,3,0)
f(5,650,3,6,'cats/effect/IO$Pure.tag',0,3,0)
f(5,653,26,2,'cats/effect/IOFiber.scheduleFiber',26,0,0)
f(6,653,26,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',26,0,0)
f(5,679,60,1,'cats/effect/IOFiber.succeeded')
f(6,689,22,2,'cats/effect/ArrayStack.pop',22,0,0)
f(6,711,5,2,'cats/effect/ByteStack$.pop',5,0,0)
f(7,714,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(6,716,23,2,'cats/effect/IOFiber.runTerminusSuccessK',23,0,0)
f(7,729,7,2,'cats/effect/IOFiber.done',7,0,0)
f(8,733,2,2,'cats/effect/CallbackStack.apply',2,0,0)
f(8,735,1,2,'cats/effect/CallbackStack.clear',1,0,0)
f(9,735,1,2,'java/util/concurrent/atomic/AtomicReference.lazySet',1,0,0)
f(10,735,1,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',1,0,0)
f(7,736,3,2,'cats/effect/kernel/Outcome$Succeeded$.apply',3,0,0)
f(8,736,3,2,'cats/effect/kernel/Outcome$Succeeded.<init>',3,0,0)
f(9,737,2,2,'java/lang/Object.<init>',2,0,0)
f(5,739,231,2,'cats/effect/kernel/SyncRef$$Lambda$101.0x0000000800d60698.apply',230,0,0)
f(6,739,231,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',230,0,0)
f(7,739,231,2,'cats/effect/kernel/SyncRef.spin$4',230,0,0)
f(8,739,231,2,'kyo/bench/ForkManyBench$$Lambda$100.0x0000000800d602c8.apply',230,0,0)
f(9,739,231,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',230,0,0)
f(10,739,231,2,'kyo/bench/ForkManyBench.$anonfun$1',230,0,0)
f(11,739,231,2,'scala/runtime/BoxesRunTime.boxToInteger',230,0,0)
f(12,969,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,969,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(14,969,1,4,'MemAllocator::allocate() const')
f(15,969,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(16,969,1,4,'G1Allocator::unsafe_max_tlab_alloc()')
f(5,970,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(6,970,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(5,973,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(6,973,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(7,973,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(5,974,16,3,'vtable stub')
f(3,990,3,2,'cats/effect/IOFiber.readBarrier',3,0,0)
f(3,993,5,3,'clock_gettime')
f(4,995,3,3,'[vdso]')
f(2,998,8,2,'cats/effect/unsafe/LocalQueue.dequeue',8,0,0)
f(3,1001,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',5,0,0)
f(4,1003,3,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',3,0,0)
f(2,1006,1,2,'cats/effect/unsafe/LocalQueue.enqueueBatch',1,0,0)
f(2,1007,48,2,'cats/effect/unsafe/ScalQueue.poll',45,0,0)
f(3,1016,39,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',39,0,0)
f(4,1019,5,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',5,0,0)
f(5,1019,5,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',5,0,0)
f(4,1024,31,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',31,0,0)
f(5,1024,2,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',2,0,0)
f(6,1024,2,2,'java/lang/invoke/VarHandle.checkExactAccessMode',2,0,0)
f(5,1026,29,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',29,0,0)
f(6,1032,5,2,'java/lang/invoke/VarForm.getMemberName',5,0,0)
f(6,1037,18,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.setRelease',18,0,0)
f(2,1055,3,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending',1,0,0)
f(3,1056,2,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,1056,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,1056,2,1,'jdk/internal/misc/Unsafe.unpark')
f(6,1056,1,3,'Unsafe_Unpark')
f(7,1056,1,3,'pthread_mutex_lock')
f(6,1057,1,3,'pthread_cond_signal')
f(7,1057,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,1057,1,5,'do_syscall_64')
f(9,1057,1,5,'__x64_sys_futex')
f(10,1057,1,5,'do_futex')
f(11,1057,1,5,'futex_wake')
f(2,1058,60,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,1061,54,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,1093,1,2,'cats/effect/unsafe/LocalQueue.index',1,0,0)
f(4,1094,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(4,1095,8,2,'cats/effect/unsafe/LocalQueue.msb',8,0,0)
f(4,1103,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',1,0,0)
f(4,1104,10,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',10,0,0)
f(4,1114,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(3,1115,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(4,1115,1,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',1,0,0)
f(3,1116,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(4,1116,2,2,'java/util/Random.nextInt',2,0,0)
f(5,1116,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(6,1116,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(7,1116,2,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',2,0,0)
f(2,1118,7,2,'cats/effect/unsafe/WorkStealingThreadPool.stealTimers',7,0,0)
f(2,1125,8,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToSearching')
f(3,1132,1,2,'java/util/concurrent/atomic/AtomicInteger.get',1,0,0)
f(2,1133,38,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,1133,38,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,1133,38,1,'java/util/concurrent/locks/LockSupport.park')
f(5,1133,38,1,'jdk/internal/misc/Unsafe.park')
f(6,1133,5,3,'Unsafe_Park')
f(7,1134,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,1135,1,5,'entry_SYSCALL_64_after_hwframe')
f(9,1135,1,5,'do_syscall_64')
f(10,1135,1,5,'syscall_enter_from_user_mode')
f(7,1136,1,4,'Parker::park(bool, long)')
f(7,1137,1,3,'__tls_get_addr')
f(6,1138,33,3,'[unknown]')
f(7,1138,30,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,1138,30,5,'entry_SYSCALL_64_after_hwframe')
f(9,1138,30,5,'do_syscall_64')
f(10,1138,27,5,'__x64_sys_futex')
f(11,1138,27,5,'do_futex')
f(12,1138,27,5,'futex_wait')
f(13,1138,2,5,'__get_user_nocheck_4')
f(13,1140,25,5,'futex_wait_queue_me')
f(14,1140,25,5,'schedule')
f(15,1140,25,5,'__schedule')
f(16,1140,25,5,'finish_task_switch.isra.0')
f(10,1165,2,5,'syscall_enter_from_user_mode')
f(10,1167,1,5,'syscall_exit_to_user_mode')
f(11,1167,1,5,'exit_to_user_mode_prepare')
f(12,1167,1,5,'exit_to_user_mode_loop')
f(13,1167,1,5,'__rseq_handle_notify_resume')
f(14,1167,1,5,'__put_user_nocheck_8')
f(7,1168,2,3,'pthread_cond_wait')
f(7,1170,1,3,'pthread_mutex_trylock')
f(1,1171,1,1,'java/lang/Thread.run')
f(2,1171,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1171,1,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1171,1,1,'java/util/concurrent/FutureTask.run')
f(5,1171,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1171,1,1,'java/util/concurrent/FutureTask.run')
f(7,1171,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1171,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1171,1,1,'java/lang/reflect/Method.invoke')
f(10,1171,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1171,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1171,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1171,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_Throughput')
f(14,1171,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,1171,1,1,'kyo/bench/Bench.forkCats')
f(16,1171,1,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,1171,1,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,1171,1,1,'scala/concurrent/package$.blocking')
f(19,1171,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,1171,1,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5e610.apply')
f(21,1171,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,1171,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,1171,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,1171,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,1171,1,1,'jdk/internal/misc/Unsafe.park')
f(26,1171,1,3,'[unknown]')
f(27,1171,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(28,1171,1,5,'entry_SYSCALL_64_after_hwframe')
f(29,1171,1,5,'do_syscall_64')
f(30,1171,1,5,'__x64_sys_futex')
f(31,1171,1,5,'do_futex')
f(32,1171,1,5,'futex_wait')
f(33,1171,1,5,'futex_wait_queue_me')
f(34,1171,1,5,'schedule')
f(35,1171,1,5,'__schedule')
f(36,1171,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: 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,17638,3,'all')
f(1,0,16871,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,16871,1,'cats/effect/IOFiber.run')
f(3,0,7592,1,'cats/effect/IOFiber.autoCedeR')
f(4,0,7592,1,'cats/effect/IOFiber.runLoop')
f(5,0,1993,2,'cats.effect.IOFiber')
f(5,1993,2,1,'cats/effect/IO$$anon$3.apply')
f(6,1993,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,1993,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,1993,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,1993,2,2,'cats.effect.IO$$anon$3$$Lambda$106+0x0000000800d62e08')
f(5,1995,1,1,'cats/effect/IODeferred$$Lambda$108.0x0000000800d7aa78.apply')
f(6,1995,1,1,'cats/effect/IODeferred.$anonfun$1$$anonfun$1')
f(7,1995,1,1,'scala/util/Left$.apply')
f(8,1995,1,2,'scala.util.Left')
f(5,1996,4349,1,'cats/effect/IOFiber.<init>')
f(6,1996,1153,1,'cats/effect/ArrayStack$.apply')
f(7,1996,1153,2,'cats.effect.ArrayStack')
f(6,3149,632,1,'cats/effect/CallbackStack$.apply')
f(7,3149,632,2,'cats.effect.CallbackStack')
f(6,3781,1022,1,'cats/effect/IO$.async')
f(7,3781,326,2,'cats.effect.IO$$anon$4')
f(7,4107,696,1,'cats/effect/IO$IOCont$.apply')
f(8,4107,696,2,'cats.effect.IO$IOCont')
f(6,4803,584,1,'cats/effect/IO$.uncancelable')
f(7,4803,584,1,'cats/effect/IO$Uncancelable$.apply')
f(8,4803,584,2,'cats.effect.IO$Uncancelable')
f(6,5387,958,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,5387,958,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,5387,958,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,5387,486,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5e000')
f(9,5873,472,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5e5f0')
f(5,6345,3,1,'cats/effect/IOFiber.scheduleFiber')
f(6,6345,3,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,6345,3,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,6345,3,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(9,6345,3,2,'java.lang.Runnable[]')
f(5,6348,1243,1,'cats/effect/IOFiber.succeeded')
f(6,6348,1243,1,'kyo/bench/ForkManyBench$$Lambda$101.0x0000000800d60690.apply')
f(7,6348,1243,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,6348,1243,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,6348,603,1,'cats/effect/IO.flatMap')
f(10,6348,603,1,'cats/effect/IO$FlatMap$.apply')
f(11,6348,603,2,'cats.effect.IO$FlatMap')
f(9,6951,640,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,6951,640,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64400.newInvokeSpecial')
f(11,6951,640,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,6951,640,2,'kyo.bench.ForkManyBench$$Lambda$101+0x0000000800d60690')
f(5,7591,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,7591,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,7591,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,7591,1,2,'cats.effect.IOFiber$$Lambda$105+0x0000000800d620b8')
f(3,7592,9279,1,'cats/effect/IOFiber.execR')
f(4,7592,4409,1,'cats/effect/ArrayStack.init')
f(5,7592,4409,2,'java.lang.Object[]')
f(4,12001,1039,1,'cats/effect/ByteStack$.create')
f(5,12001,1039,2,'int[]')
f(4,13040,3831,1,'cats/effect/IOFiber.runLoop')
f(5,13040,89,2,'cats.effect.IOFiber')
f(5,13129,1,1,'cats/effect/IO$$$Lambda$40.0x0000000800d16000.apply')
f(6,13129,1,1,'cats/effect/IO$.deferred$$anonfun$1')
f(7,13129,1,1,'cats/effect/IODeferred.<init>')
f(8,13129,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,13129,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,13129,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,13129,1,2,'cats.effect.IODeferred$$Lambda$94+0x0000000800d5fb28')
f(5,13130,205,1,'cats/effect/IOFiber.<init>')
f(6,13130,53,1,'cats/effect/ArrayStack$.apply')
f(7,13130,53,2,'cats.effect.ArrayStack')
f(6,13183,40,1,'cats/effect/CallbackStack$.apply')
f(7,13183,40,2,'cats.effect.CallbackStack')
f(6,13223,57,1,'cats/effect/IO$.async')
f(7,13223,21,2,'cats.effect.IO$$anon$4')
f(7,13244,36,1,'cats/effect/IO$IOCont$.apply')
f(8,13244,36,2,'cats.effect.IO$IOCont')
f(6,13280,20,1,'cats/effect/IO$.uncancelable')
f(7,13280,20,1,'cats/effect/IO$Uncancelable$.apply')
f(8,13280,20,2,'cats.effect.IO$Uncancelable')
f(6,13300,35,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,13300,35,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,13300,35,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,13300,14,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5e000')
f(9,13314,21,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5e5f0')
f(5,13335,1172,1,'cats/effect/IOFiber.succeeded')
f(6,13335,1110,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,13335,296,1,'cats/effect/IO$.pure')
f(8,13335,296,1,'cats/effect/IO$Pure$.apply')
f(9,13335,296,2,'cats.effect.IO$Pure')
f(7,13631,432,1,'cats/effect/IOFiber.done')
f(8,13631,432,1,'cats/effect/IO$.pure')
f(9,13631,432,1,'cats/effect/IO$Pure$.apply')
f(10,13631,432,2,'cats.effect.IO$Pure')
f(7,14063,382,1,'cats/effect/kernel/Outcome$Succeeded$.apply')
f(8,14063,382,2,'cats.effect.kernel.Outcome$Succeeded')
f(6,14445,62,1,'kyo/bench/ForkManyBench$$Lambda$101.0x0000000800d60690.apply')
f(7,14445,62,1,'kyo/bench/ForkManyBench.repeat$1$$anonfun$1')
f(8,14445,62,1,'kyo/bench/ForkManyBench.repeat$1')
f(9,14445,32,1,'cats/effect/IO.flatMap')
f(10,14445,32,1,'cats/effect/IO$FlatMap$.apply')
f(11,14445,32,2,'cats.effect.IO$FlatMap')
f(9,14477,30,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,14477,30,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64400.newInvokeSpecial')
f(11,14477,30,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,14477,30,2,'kyo.bench.ForkManyBench$$Lambda$101+0x0000000800d60690')
f(5,14507,2363,1,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d603d0.apply')
f(6,14507,2363,1,'cats/effect/kernel/SyncRef.modify$$anonfun$1')
f(7,14507,2363,1,'cats/effect/kernel/SyncRef.spin$4')
f(8,14507,2363,1,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d60000.apply')
f(9,14507,2363,1,'kyo/bench/ForkManyBench.$anonfun$adapted$1')
f(10,14507,2363,1,'kyo/bench/ForkManyBench.$anonfun$1')
f(11,14507,1,1,'cats/effect/IODeferred.complete')
f(12,14507,1,1,'cats/effect/IODeferred.complete')
f(13,14507,1,1,'cats/effect/IO$.apply')
f(14,14507,1,1,'cats/effect/IO$.delay')
f(15,14507,1,1,'cats/effect/IO$Delay$.apply')
f(16,14507,1,2,'cats.effect.IO$Delay')
f(11,14508,1341,1,'scala/Tuple2$.apply')
f(12,14508,1341,2,'scala.Tuple2')
f(11,15849,1021,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(12,15849,1021,1,'java/lang/Integer.valueOf')
f(13,15849,1021,2,'java.lang.Integer')
f(5,16870,1,1,'kyo/bench/ForkManyBench$$Lambda$97.0x0000000800d5d7a8.apply')
f(6,16870,1,1,'kyo/bench/ForkManyBench.catsBench$$anonfun$1$$anonfun$1')
f(7,16870,1,1,'cats/effect/kernel/SyncRef.modify')
f(8,16870,1,1,'cats/effect/IO$$anon$2.delay')
f(9,16870,1,1,'cats/effect/IO$$anon$2.delay')
f(10,16870,1,1,'cats/effect/IO$.apply')
f(11,16870,1,1,'cats/effect/IO$.delay')
f(12,16870,1,1,'cats/effect/IO$Delay$.apply')
f(13,16870,1,2,'cats.effect.IO$Delay')
f(1,16871,764,1,'java/lang/Thread.run')
f(2,16871,764,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,16871,764,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,16871,763,1,'java/util/concurrent/FutureTask.run')
f(5,16871,763,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,16871,763,1,'java/util/concurrent/FutureTask.run')
f(7,16871,763,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,16871,763,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,16871,763,1,'java/lang/reflect/Method.invoke')
f(10,16871,763,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,16871,763,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,16871,763,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,16871,763,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_Throughput')
f(14,16871,763,1,'kyo/bench/jmh_generated/ForkManyBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,16871,763,1,'kyo/bench/Bench.syncCats')
f(16,16871,742,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,16871,734,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,16871,593,1,'cats/effect/IO.unsafeRunAsync')
f(19,16871,586,1,'cats/effect/IO.unsafeRunFiber')
f(20,16871,207,2,'cats.effect.IOFiber')
f(20,17078,56,5,'cats.effect.IOFiber')
f(20,17134,261,1,'cats/effect/IOFiber.<init>')
f(21,17134,107,1,'cats/effect/ArrayStack$.apply')
f(22,17134,107,2,'cats.effect.ArrayStack')
f(21,17241,42,1,'cats/effect/CallbackStack$.apply')
f(22,17241,42,2,'cats.effect.CallbackStack')
f(21,17283,54,1,'cats/effect/IO$.async')
f(22,17283,7,2,'cats.effect.IO$$anon$4')
f(22,17290,47,1,'cats/effect/IO$IOCont$.apply')
f(23,17290,47,2,'cats.effect.IO$IOCont')
f(21,17337,41,1,'cats/effect/IO$.uncancelable')
f(22,17337,41,1,'cats/effect/IO$Uncancelable$.apply')
f(23,17337,41,2,'cats.effect.IO$Uncancelable')
f(21,17378,17,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,17378,17,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,17378,17,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,17378,7,2,'cats.effect.IOFiber$$Lambda$91+0x0000000800d5e000')
f(24,17385,10,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5e5f0')
f(20,17395,4,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,17395,4,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,17395,4,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,17395,4,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,17395,4,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,17399,58,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,17399,58,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,17399,58,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,17399,58,2,'cats.effect.IO$$Lambda$90+0x0000000800d5b0e0')
f(19,17457,7,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,17457,7,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,17457,7,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,17457,7,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(23,17457,3,2,'cats.effect.IO$$Lambda$88+0x0000000800d59cf0')
f(23,17460,4,2,'cats.effect.IO$$Lambda$89+0x0000000800d5a0f8')
f(18,17464,5,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,17469,60,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17469,60,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17469,60,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17469,47,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5efd0')
f(21,17516,13,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,17516,7,2,'cats.effect.IOPlatform$$Lambda$86+0x0000000800d59628')
f(22,17523,6,2,'cats.effect.IOPlatform$$Lambda$93+0x0000000800d5efd0')
f(18,17529,18,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,17529,18,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,17529,9,2,'java.lang.Object[]')
f(20,17538,3,2,'java.util.concurrent.locks.ReentrantLock')
f(20,17541,5,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,17541,5,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,17546,1,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,17546,1,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,17546,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,17547,2,1,'scala/concurrent/package$.blocking')
f(19,17547,2,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,17547,2,1,'cats/effect/IOPlatform$$Lambda$93.0x0000000800d5efd0.apply')
f(21,17547,2,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,17547,2,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,17547,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,17547,2,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,17549,56,1,'scala/util/Either.fold')
f(19,17549,56,1,'cats/effect/IOPlatform$$Lambda$114.0x0000000800d7e3c8.apply')
f(20,17549,56,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,17549,56,1,'scala/Some$.apply')
f(22,17549,56,2,'scala.Some')
f(17,17605,2,2,'scala.concurrent.duration.package$DurationLong')
f(17,17607,6,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,17607,6,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,17607,6,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,17607,6,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,17607,6,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,17607,6,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,17607,6,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,17607,6,2,'scala.concurrent.duration.FiniteDuration')
f(16,17613,21,1,'kyo/bench/ForkManyBench.catsBench')
f(17,17613,2,1,'cats/effect/IO$.deferred')
f(18,17613,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,17613,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,17613,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,17613,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,17613,2,2,'cats.effect.IO$$$Lambda$40+0x0000000800d16000')
f(17,17615,8,1,'cats/effect/IO.flatMap')
f(18,17615,8,1,'cats/effect/IO$FlatMap$.apply')
f(19,17615,8,2,'cats.effect.IO$FlatMap')
f(17,17623,11,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,17623,11,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,17623,11,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,17623,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(21,17623,1,2,'kyo.bench.ForkManyBench$$Lambda$42+0x0000000800d16ab8')
f(20,17624,10,2,'kyo.bench.ForkManyBench$$Lambda$42+0x0000000800d16ab8')
f(4,17634,1,1,'java/util/concurrent/ThreadPoolExecutor.getTask')
f(5,17634,1,1,'java/util/concurrent/LinkedBlockingQueue.take')
f(6,17634,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await')
f(7,17634,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(1,17635,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17635,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17635,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17635,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17635,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17635,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17635,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17635,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17635,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17635,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,17635,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17635,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17635,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: 624px}
</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(39);
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,1258,3,'all')
f(1,0,46,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,46,3,'thread_native_entry(Thread*)')
f(3,0,46,4,'Thread::call_run()')
f(4,0,46,4,'JavaThread::thread_main_inner()')
f(5,0,46,4,'CompileBroker::compiler_thread_loop()')
f(6,0,46,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,45,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,44,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,29,4,'Compile::Code_Gen()')
f(10,0,2,4,'Matcher::match()')
f(11,0,1,4,'Arena::contains(void const*) const')
f(11,1,1,4,'Matcher::xform(Node*, int)')
f(12,1,1,4,'Matcher::match_tree(Node const*)')
f(10,2,2,4,'PhaseCFG::do_global_code_motion()')
f(11,2,2,4,'PhaseCFG::global_code_motion()')
f(12,2,1,4,'PhaseCFG::schedule_late(VectorSet&, Node_Stack&)')
f(13,2,1,4,'PhaseCFG::insert_anti_dependences(Block*, Node*, bool)')
f(14,2,1,4,'tlsLoadPNode::bottom_type() const')
f(12,3,1,4,'PhaseCFG::schedule_pinned_nodes(VectorSet&)')
f(10,4,1,4,'PhaseChaitin::PhaseChaitin(unsigned int, PhaseCFG&, Matcher&, bool)')
f(10,5,23,4,'PhaseChaitin::Register_Allocate()')
f(11,5,1,4,'PhaseChaitin::Select()')
f(12,5,1,4,'PhaseChaitin::bias_color(LRG&, int)')
f(11,6,2,4,'PhaseChaitin::Simplify()')
f(12,6,1,4,'IndexSetIterator::advance_and_next()')
f(12,7,1,4,'PhaseIFG::remove_node(unsigned int)')
f(11,8,2,4,'PhaseChaitin::Split(unsigned int, ResourceArea*)')
f(12,9,1,4,'PhaseChaitin::split_USE(MachSpillCopyNode::SpillType, Node*, Block*, Node*, unsigned int, unsigned int, bool, bool, GrowableArray<unsigned int>, int)')
f(13,9,1,4,'PhaseChaitin::get_spillcopy_wide(MachSpillCopyNode::SpillType, Node*, Node*, unsigned int)')
f(14,9,1,4,'MachCallJavaNode::in_RegMask(unsigned int) const')
f(11,10,7,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,10,1,4,'PhaseChaitin::add_input_to_liveout(Block*, Node*, IndexSet*, double, PhaseChaitin::Pressure&, PhaseChaitin::Pressure&)')
f(12,11,1,4,'PhaseChaitin::compute_initial_block_pressure(Block*, IndexSet*, PhaseChaitin::Pressure&, PhaseChaitin::Pressure&, double) [clone .part.0] [clone .isra.0]')
f(13,11,1,4,'PhaseChaitin::raise_pressure(Block*, LRG&, PhaseChaitin::Pressure&, PhaseChaitin::Pressure&) [clone .part.0]')
f(12,12,3,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(13,13,1,4,'IndexSet::alloc_block_containing(unsigned int)')
f(13,14,1,4,'IndexSetIterator::advance_and_next()')
f(12,15,1,4,'PhaseChaitin::remove_bound_register_from_interfering_live_ranges(LRG&, IndexSet*, unsigned int&) [clone .part.0]')
f(13,15,1,4,'RegMask::smear_to_sets(unsigned int)')
f(12,16,1,4,'RegMask::is_UP() const')
f(11,17,2,4,'PhaseChaitin::gather_lrg_masks(bool) [clone .constprop.0]')
f(12,18,1,4,'MachNode::ideal_reg() const')
f(11,19,1,4,'PhaseChaitin::merge_multidefs()')
f(11,20,2,4,'PhaseChaitin::post_allocate_copy_removal()')
f(12,20,2,4,'PhaseChaitin::elide_copy(Node*, int, Block*, Node_List&, Node_List&, bool)')
f(11,22,1,4,'PhaseCoalesce::coalesce_driver()')
f(12,22,1,4,'PhaseConservativeCoalesce::coalesce(Block*)')
f(13,22,1,4,'PhaseConservativeCoalesce::copy_copy(Node*, Node*, Block*, unsigned int) [clone .part.0]')
f(14,22,1,4,'IndexSet::lrg_union(unsigned int, unsigned int, unsigned int, PhaseIFG const*, RegMask const&)')
f(11,23,1,4,'PhaseIFG::Compute_Effective_Degree()')
f(12,23,1,4,'PhaseIFG::effective_degree(unsigned int) const')
f(11,24,2,4,'PhaseLive::compute(unsigned int)')
f(12,25,1,4,'PhaseLive::add_liveout(Block*, IndexSet*, VectorSet&)')
f(11,26,1,4,'RegMask::is_bound(unsigned int) const')
f(11,27,1,4,'jmpDirNode::is_block_proj() const')
f(10,28,1,4,'PhaseOutput::Output()')
f(11,28,1,4,'PhaseOutput::BuildOopMaps()')
f(12,28,1,4,'OopFlow::compute_reach(PhaseRegAlloc*, int, Dict*)')
f(13,28,1,4,'Dict::operator[](void const*) const')
f(9,29,11,4,'Compile::Optimize()')
f(10,29,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,29,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(10,30,6,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,30,6,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,30,1,4,'IdealLoopTree::counted_loop(PhaseIdealLoop*)')
f(13,30,1,4,'IdealLoopTree::counted_loop(PhaseIdealLoop*)')
f(14,30,1,4,'IdealLoopTree::counted_loop(PhaseIdealLoop*)')
f(15,30,1,4,'IdealLoopTree::counted_loop(PhaseIdealLoop*)')
f(16,30,1,4,'PhaseIdealLoop::is_counted_loop(Node*, IdealLoopTree*&, BasicType)')
f(17,30,1,4,'BaseCountedLoopNode::make(Node*, Node*, BasicType)')
f(12,31,1,4,'PhaseIdealLoop::Dominators()')
f(13,31,1,4,'NTarjan::DFS(NTarjan*, VectorSet&, PhaseIdealLoop*, unsigned int*)')
f(12,32,2,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(13,32,2,4,'PhaseIdealLoop::build_loop_late_post_work(Node*, bool)')
f(14,33,1,4,'PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)')
f(15,33,1,4,'PhaseIdealLoop::dom_lca_for_get_late_ctrl_internal(Node*, Node*, Node*)')
f(12,34,1,4,'ProjNode::pinned() const')
f(12,35,1,4,'SafePointNode::pinned() const')
f(10,36,3,4,'PhaseIterGVN::optimize()')
f(11,36,3,4,'PhaseIterGVN::transform_old(Node*)')
f(12,36,1,4,'Node::set_req_X(unsigned int, Node*, PhaseIterGVN*)')
f(12,37,1,4,'RegionNode::Ideal(PhaseGVN*, bool)')
f(13,37,1,4,'PhaseIterGVN::remove_globally_dead_node(Node*)')
f(12,38,1,4,'TypePtr::hash() const')
f(10,39,1,4,'PhaseRenumberLive::PhaseRenumberLive(PhaseGVN*, Unique_Node_List*, Unique_Node_List*, Phase::PhaseNumber)')
f(11,39,1,4,'PhaseRemoveUseless::PhaseRemoveUseless(PhaseGVN*, Unique_Node_List*, Phase::PhaseNumber)')
f(12,39,1,4,'Compile::identify_useful_nodes(Unique_Node_List&)')
f(9,40,3,4,'ParseGenerator::generate(JVMState*)')
f(10,40,3,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,40,3,4,'Parse::do_all_blocks()')
f(12,40,3,4,'Parse::do_one_block()')
f(13,40,2,4,'Parse::do_call()')
f(14,40,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,40,2,4,'ParseGenerator::generate(JVMState*)')
f(16,40,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,40,2,4,'Parse::do_all_blocks()')
f(18,40,2,4,'Parse::do_one_block()')
f(19,40,1,4,'Parse::do_call()')
f(20,40,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,40,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,40,1,4,'ParseGenerator::generate(JVMState*)')
f(23,40,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,40,1,4,'Parse::do_all_blocks()')
f(25,40,1,4,'Parse::do_one_block()')
f(26,40,1,4,'Parse::do_call()')
f(27,40,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(28,40,1,4,'ParseGenerator::generate(JVMState*)')
f(29,40,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(30,40,1,4,'Parse::do_all_blocks()')
f(31,40,1,4,'Parse::do_one_block()')
f(32,40,1,4,'Parse::do_call()')
f(33,40,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(34,40,1,4,'ParseGenerator::generate(JVMState*)')
f(35,40,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(36,40,1,4,'ciMethod::method_data() [clone .part.0]')
f(37,40,1,4,'ciMethodData::load_data()')
f(38,40,1,4,'ciVirtualCallData::translate_from(ProfileData const*)')
f(19,41,1,4,'Parse::do_field_access(bool, bool)')
f(20,41,1,4,'Parse::do_put_xxx(Node*, ciField*, bool)')
f(21,41,1,4,'PhaseGVN::transform_no_reclaim(Node*)')
f(22,41,1,4,'Type::hashcons()')
f(23,41,1,4,'Type::cmp(Type const*, Type const*)')
f(13,42,1,4,'Parse::do_field_access(bool, bool)')
f(14,42,1,4,'Parse::do_get_xxx(Node*, ciField*, bool)')
f(15,42,1,4,'GraphKit::basic_plus_adr(Node*, Node*, Node*)')
f(16,42,1,4,'Node::out_grow(unsigned int)')
f(9,43,1,4,'PhaseRemoveUseless::PhaseRemoveUseless(PhaseGVN*, Unique_Node_List*, Phase::PhaseNumber)')
f(10,43,1,4,'Compile::identify_useful_nodes(Unique_Node_List&)')
f(8,44,1,4,'CompileBroker::maybe_block()')
f(7,45,1,4,'ciEnv::~ciEnv()')
f(8,45,1,4,'ciObjectFactory::remove_symbols()')
f(1,46,6,3,'[unknown_Java]')
f(2,46,1,6,'cats/effect/IO$Delay.tag',0,1,0)
f(2,47,2,6,'cats/effect/IO$Start.tag',0,2,0)
f(2,49,1,1,'cats/effect/IOFiber.succeeded')
f(2,50,1,3,'clock_gettime')
f(3,50,1,3,'[vdso]')
f(2,51,1,4,'os::javaTimeNanos()')
f(1,52,1206,1,'cats/effect/unsafe/WorkerThread.run',0,12,1)
f(2,64,944,1,'cats/effect/IOFiber.run',8,0,0)
f(3,64,2,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,64,2,1,'cats/effect/IOFiber.succeeded')
f(5,64,2,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(6,64,2,1,'cats/effect/IOFiber.done')
f(7,64,2,1,'cats/effect/CallbackStack.apply')
f(8,64,2,1,'scala/runtime/function/JProcedure1.apply')
f(9,64,2,1,'scala/runtime/function/JProcedure1.apply')
f(10,64,2,1,'cats/effect/IO$$Lambda$90.0x0000000800d5aee8.applyVoid')
f(11,64,2,6,'cats/effect/IO.$anonfun$6',0,1,0)
f(12,64,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(13,64,1,1,'cats/effect/kernel/Outcome.fold$')
f(14,64,1,1,'cats/effect/kernel/Outcome.fold')
f(15,64,1,1,'scala/runtime/function/JProcedure1.apply')
f(16,64,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,64,1,1,'cats/effect/IO$$Lambda$112.0x0000000800d7b830.applyVoid')
f(18,64,1,2,'cats/effect/IO.$anonfun$6$$anonfun$3',1,0,0)
f(19,64,1,2,'cats/effect/unsafe/StripedHashtable.remove',1,0,0)
f(20,64,1,2,'cats/effect/unsafe/ThreadSafeHashtable.remove',1,0,0)
f(12,65,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(13,65,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(14,65,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(3,66,179,1,'cats/effect/IOFiber.autoCedeR')
f(4,66,179,1,'cats/effect/IOFiber.runLoop')
f(5,78,1,2,'cats/effect/ArrayStack.push',1,0,0)
f(5,79,1,6,'cats/effect/IO$FlatMap.tag',0,1,0)
f(5,80,7,6,'cats/effect/IO$Start.tag',0,7,0)
f(5,87,34,2,'cats/effect/IOFiber.<init>',34,0,0)
f(6,120,1,2,'cats/effect/CallbackStack$.apply',1,0,0)
f(7,120,1,2,'cats/effect/CallbackStack.<init>',1,0,0)
f(8,120,1,2,'java/util/concurrent/atomic/AtomicReference.<init>',1,0,0)
f(5,121,67,1,'cats/effect/IOFiber.scheduleFiber')
f(6,121,67,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,124,3,2,'cats/effect/unsafe/WorkerThread.isOwnedBy',3,0,0)
f(7,127,61,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,132,11,2,'cats/effect/unsafe/LocalQueue.enqueue',11,0,0)
f(9,141,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',2,0,0)
f(8,143,45,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',4,0,0)
f(9,143,4,2,'java/util/concurrent/ThreadLocalRandom.nextInt',4,0,0)
f(10,143,4,2,'java/util/Random.nextInt',4,0,0)
f(11,143,4,2,'java/util/concurrent/ThreadLocalRandom.next',4,0,0)
f(12,143,4,2,'java/util/concurrent/ThreadLocalRandom.nextInt',4,0,0)
f(13,143,4,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',4,0,0)
f(9,147,41,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,147,41,1,'jdk/internal/misc/Unsafe.unpark')
f(11,148,5,3,'Unsafe_Unpark')
f(12,149,1,4,'SafeThreadsListPtr::release_stable_list()')
f(12,150,1,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(12,151,2,4,'oopDesc::address_field(int) const')
f(11,153,35,3,'pthread_cond_signal')
f(12,155,33,5,'entry_SYSCALL_64_after_hwframe')
f(13,155,33,5,'do_syscall_64')
f(14,155,33,5,'__x64_sys_futex')
f(15,155,33,5,'do_futex')
f(16,155,32,5,'futex_wake')
f(17,155,32,5,'wake_up_q')
f(18,155,32,5,'_raw_spin_unlock_irqrestore')
f(16,187,1,5,'hash_futex')
f(5,188,21,1,'cats/effect/IOFiber.succeeded')
f(6,188,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(6,189,20,2,'cats/effect/IOFiber.runTerminusSuccessK',20,0,0)
f(7,189,20,2,'cats/effect/IOFiber.done',20,0,0)
f(8,203,2,2,'cats/effect/ArrayStack.invalidate',2,0,0)
f(8,205,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,205,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(10,205,2,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',2,0,0)
f(8,207,2,2,'cats/effect/unsafe/IORuntime.config',2,0,0)
f(5,209,30,2,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d60000.apply',30,0,0)
f(6,209,30,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',30,0,0)
f(7,209,30,2,'cats/effect/kernel/SyncRef.spin$4',30,0,0)
f(8,209,30,2,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d5cac8.apply',30,0,0)
f(9,209,30,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',30,0,0)
f(10,209,30,2,'kyo/bench/ForkManyBench.$anonfun$1',30,0,0)
f(11,209,30,2,'scala/runtime/BoxesRunTime.boxToInteger',30,0,0)
f(5,239,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(5,240,5,3,'vtable stub')
f(3,245,763,1,'cats/effect/IOFiber.execR',10,0,0)
f(4,249,6,2,'cats/effect/ArrayStack.init',6,0,0)
f(4,255,753,1,'cats/effect/IOFiber.runLoop')
f(5,398,2,6,'cats/effect/IO$Delay.tag',0,2,0)
f(5,400,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,404,4,6,'cats/effect/IO$Pure.tag',0,4,0)
f(5,408,126,2,'cats/effect/IOFiber.<init>',126,0,0)
f(5,534,5,1,'cats/effect/IOFiber.scheduleFiber')
f(6,534,5,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(7,534,5,1,'cats/effect/unsafe/WorkerThread.schedule')
f(8,534,1,2,'cats/effect/unsafe/LocalQueue.enqueue',1,0,0)
f(8,535,4,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(9,535,4,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,535,4,1,'jdk/internal/misc/Unsafe.unpark')
f(11,535,4,3,'pthread_cond_signal')
f(12,535,4,5,'entry_SYSCALL_64_after_hwframe')
f(13,535,4,5,'do_syscall_64')
f(14,535,4,5,'__x64_sys_futex')
f(15,535,4,5,'do_futex')
f(16,535,4,5,'futex_wake')
f(17,536,3,5,'wake_up_q')
f(18,536,3,5,'_raw_spin_unlock_irqrestore')
f(5,539,69,1,'cats/effect/IOFiber.succeeded')
f(6,546,21,2,'cats/effect/ArrayStack.pop',21,0,0)
f(6,567,1,2,'cats/effect/ByteStack$.pop',1,0,0)
f(6,568,40,2,'cats/effect/IOFiber.runTerminusSuccessK',38,0,0)
f(7,569,10,2,'cats/effect/IO$.pure',10,0,0)
f(8,569,10,2,'cats/effect/IO$Pure$.apply',10,0,0)
f(9,569,10,2,'cats/effect/IO$Pure.<init>',10,0,0)
f(10,577,2,2,'cats/effect/IO.<init>',2,0,0)
f(11,577,2,2,'cats/effect/IOPlatform.<init>',2,0,0)
f(12,577,2,2,'java/lang/Object.<init>',2,0,0)
f(7,579,27,2,'cats/effect/IOFiber.done',26,0,0)
f(8,588,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(9,588,1,4,'G1CardTable::is_in_young(oopDesc*) const')
f(8,589,8,2,'cats/effect/CallbackStack.apply',8,0,0)
f(8,597,2,2,'cats/effect/CallbackStack.clear',2,0,0)
f(9,597,2,2,'java/util/concurrent/atomic/AtomicReference.lazySet',2,0,0)
f(10,597,2,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',2,0,0)
f(8,599,6,2,'cats/effect/IO$.pure',6,0,0)
f(9,599,6,2,'cats/effect/IO$Pure$.apply',6,0,0)
f(10,599,6,2,'cats/effect/IO$Pure.<init>',6,0,0)
f(8,605,1,2,'cats/effect/unsafe/IORuntime.config',1,0,0)
f(7,606,2,2,'cats/effect/kernel/Outcome$Succeeded$.apply',1,0,0)
f(8,607,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(9,607,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(10,607,1,4,'MemAllocator::allocate() const')
f(11,607,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(5,608,390,2,'cats/effect/kernel/SyncRef$$Lambda$100.0x0000000800d60000.apply',390,0,0)
f(6,608,390,2,'cats/effect/kernel/SyncRef.modify$$anonfun$1',390,0,0)
f(7,608,390,2,'cats/effect/kernel/SyncRef.spin$4',390,0,0)
f(8,608,390,2,'kyo/bench/ForkManyBench$$Lambda$99.0x0000000800d5cac8.apply',390,0,0)
f(9,608,390,2,'kyo/bench/ForkManyBench.$anonfun$adapted$1',390,0,0)
f(10,608,390,2,'kyo/bench/ForkManyBench.$anonfun$1',390,0,0)
f(11,608,390,2,'scala/runtime/BoxesRunTime.boxToInteger',390,0,0)
f(12,996,2,5,'asm_sysvec_hyperv_stimer0')
f(13,996,2,5,'sysvec_hyperv_stimer0')
f(14,996,2,5,'irq_exit_rcu')
f(15,996,2,5,'__irq_exit_rcu')
f(16,996,2,5,'__softirqentry_text_start')
f(5,998,10,3,'vtable stub')
f(2,1008,6,2,'cats/effect/unsafe/LocalQueue.dequeue',2,0,0)
f(3,1008,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortAddition',1,0,0)
f(3,1009,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',5,0,0)
f(4,1013,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',1,0,0)
f(2,1014,1,1,'cats/effect/unsafe/LocalQueue.enqueueBatch')
f(2,1015,153,2,'cats/effect/unsafe/ScalQueue.poll',146,0,0)
f(3,1016,151,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',147,0,0)
f(4,1018,11,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',11,0,0)
f(5,1018,11,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',11,0,0)
f(6,1018,11,2,'java/lang/invoke/VarForm.getMemberName',11,0,0)
f(4,1029,138,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',135,0,0)
f(5,1068,1,4,'OptoRuntime::new_array_C(Klass*, int, JavaThread*)')
f(6,1068,1,4,'ObjArrayKlass::array_klass(int, JavaThread*)')
f(5,1069,63,3,'clock_gettime')
f(6,1069,63,3,'[vdso]')
f(5,1132,19,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',18,0,0)
f(6,1132,19,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',18,0,0)
f(5,1151,12,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',12,0,0)
f(6,1151,12,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.setRelease',12,0,0)
f(5,1163,4,4,'os::javaTimeNanos()')
f(3,1167,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(4,1167,1,2,'java/util/Random.nextInt',1,0,0)
f(5,1167,1,2,'java/util/concurrent/ThreadLocalRandom.next',1,0,0)
f(6,1167,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(7,1167,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(2,1168,2,2,'cats/effect/unsafe/TimerSkipList.pollFirstIfTriggered',2,0,0)
f(2,1170,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending')
f(3,1170,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(4,1170,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,1170,1,1,'jdk/internal/misc/Unsafe.unpark')
f(6,1170,1,3,'pthread_cond_signal')
f(7,1170,1,5,'entry_SYSCALL_64_after_hwframe')
f(8,1170,1,5,'do_syscall_64')
f(9,1170,1,5,'__x64_sys_futex')
f(10,1170,1,5,'do_futex')
f(11,1170,1,5,'futex_wake')
f(12,1170,1,5,'wake_up_q')
f(13,1170,1,5,'_raw_spin_unlock_irqrestore')
f(2,1171,1,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(3,1171,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(4,1171,1,1,'jdk/internal/misc/Unsafe.unpark')
f(5,1171,1,3,'pthread_cond_signal')
f(6,1171,1,5,'entry_SYSCALL_64_after_hwframe')
f(7,1171,1,5,'do_syscall_64')
f(8,1171,1,5,'__x64_sys_futex')
f(9,1171,1,5,'do_futex')
f(10,1171,1,5,'futex_wake')
f(11,1171,1,5,'wake_up_q')
f(12,1171,1,5,'_raw_spin_unlock_irqrestore')
f(2,1172,34,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,1173,30,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,1192,5,2,'cats/effect/unsafe/LocalQueue.msb',5,0,0)
f(4,1197,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',1,0,0)
f(4,1198,4,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',4,0,0)
f(4,1202,1,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',1,0,0)
f(3,1203,1,2,'cats/effect/unsafe/ScalQueue.poll',1,0,0)
f(3,1204,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(4,1204,2,2,'java/util/Random.nextInt',2,0,0)
f(5,1204,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(6,1205,1,2,'java/util/concurrent/ThreadLocalRandom.nextInt',1,0,0)
f(7,1205,1,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',1,0,0)
f(2,1206,1,2,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerFromSearching',1,0,0)
f(2,1207,1,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToParked')
f(2,1208,7,1,'cats/effect/unsafe/WorkStealingThreadPool.transitionWorkerToSearching')
f(2,1215,31,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,1215,31,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,1215,31,1,'java/util/concurrent/locks/LockSupport.park')
f(5,1215,31,1,'jdk/internal/misc/Unsafe.park')
f(6,1217,1,4,'JavaThread::threadObj() const')
f(6,1218,1,3,'Unsafe_Park')
f(7,1218,1,4,'Parker::park(bool, long)')
f(6,1219,27,3,'[unknown]')
f(7,1219,27,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,1220,26,5,'entry_SYSCALL_64_after_hwframe')
f(9,1220,1,5,'__x64_sys_futex')
f(9,1221,25,5,'do_syscall_64')
f(10,1221,22,5,'__x64_sys_futex')
f(11,1221,22,5,'do_futex')
f(12,1221,22,5,'futex_wait')
f(13,1222,21,5,'futex_wait_queue_me')
f(14,1222,21,5,'schedule')
f(15,1223,20,5,'__schedule')
f(16,1223,20,5,'finish_task_switch.isra.0')
f(10,1243,3,5,'syscall_exit_to_user_mode')
f(11,1243,3,5,'exit_to_user_mode_prepare')
f(12,1243,3,5,'exit_to_user_mode_loop')
f(13,1244,2,5,'__rseq_handle_notify_resume')
f(14,1245,1,5,'__put_user_nocheck_8')
f(2,1246,6,3,'clock_gettime')
f(3,1246,6,3,'[vdso]')
f(2,1252,2,2,'java/util/concurrent/atomic/AtomicBoolean.get',2,0,0)
f(2,1254,4,4,'os::javaTimeNanos()')
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,9956,3,'all')
f(1,0,8829,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,8829,1,'cats/effect/IOFiber.run')
f(3,0,8438,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,7575,1,'cats/effect/IOFiber.runLoop')
f(5,0,368,2,'cats.effect.ContState')
f(5,368,484,2,'cats.effect.IOFiber$$anon$1')
f(5,852,669,2,'cats.effect.IOFiber')
f(5,1521,163,1,'cats/arrow/FunctionK$.id')
f(6,1521,163,2,'cats.arrow.FunctionK$$anon$4')
f(5,1684,460,1,'cats/effect/IO$$anon$4$$Lambda$101.0x0000000800d77900.apply')
f(6,1684,460,1,'cats/effect/IO$.cats$effect$IO$$anon$4$$_$apply$$anonfun$2$$anonfun$1$$anonfun$1')
f(7,1684,244,1,'cats/effect/IO$$anon$2.onCancel')
f(8,1684,244,1,'cats/effect/IO$$anon$2.onCancel')
f(9,1684,244,1,'cats/effect/IO.onCancel')
f(10,1684,244,1,'cats/effect/IO$OnCancel$.apply')
f(11,1684,244,2,'cats.effect.IO$OnCancel')
f(7,1928,216,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,1928,216,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,1928,216,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,1928,216,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,2144,584,1,'cats/effect/IO$$anon$4$$Lambda$98.0x0000000800d60d50.apply')
f(6,2144,584,1,'cats/effect/IO$$anon$4.apply$$anonfun$2')
f(7,2144,293,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,2144,293,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,2144,293,1,'cats/effect/IO$.uncancelable')
f(10,2144,293,1,'cats/effect/IO$Uncancelable$.apply')
f(11,2144,293,2,'cats.effect.IO$Uncancelable')
f(7,2437,291,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2437,291,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59400.newInvokeSpecial')
f(9,2437,291,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2437,291,2,'cats.effect.IO$$anon$4$$Lambda$99+0x0000000800d61610')
f(5,2728,1010,1,'cats/effect/IO$$anon$4$$Lambda$99.0x0000000800d61610.apply')
f(6,2728,1010,1,'cats/effect/IO$$anon$4.apply$$anonfun$2$$anonfun$1')
f(7,2728,216,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,2728,216,1,'cats/FlatMap$Ops.flatMap$')
f(9,2728,216,1,'cats/FlatMap$Ops.flatMap')
f(10,2728,216,1,'cats/effect/IO$$anon$2.flatMap')
f(11,2728,216,1,'cats/effect/IO$$anon$2.flatMap')
f(12,2728,216,1,'cats/effect/IO.flatMap')
f(13,2728,216,1,'cats/effect/IO$FlatMap$.apply')
f(14,2728,216,2,'cats.effect.IO$FlatMap')
f(7,2944,491,1,'cats/effect/IOFiber$$Lambda$90.0x0000000800d5e410.apply')
f(8,2944,491,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,2944,244,1,'cats/effect/IO$.apply')
f(10,2944,244,1,'cats/effect/IO$.delay')
f(11,2944,244,1,'cats/effect/IO$Delay$.apply')
f(12,2944,244,2,'cats.effect.IO$Delay')
f(9,3188,247,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,3188,247,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,3188,247,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,3188,247,2,'cats.effect.IOFiber$$Lambda$100+0x0000000800d773e0')
f(7,3435,303,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3435,303,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(9,3435,303,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3435,303,2,'cats.effect.IO$$anon$4$$Lambda$101+0x0000000800d77900')
f(5,3738,226,1,'cats/effect/IO$.apply')
f(6,3738,226,1,'cats/effect/IO$.delay')
f(7,3738,226,1,'cats/effect/IO$Delay$.apply')
f(8,3738,226,2,'cats.effect.IO$Delay')
f(5,3964,210,1,'cats/effect/IO$EvalOn$.apply')
f(6,3964,210,2,'cats.effect.IO$EvalOn')
f(5,4174,149,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,4174,149,2,'cats.effect.IO$IOCont$Get')
f(5,4323,1030,1,'cats/effect/IOFiber$$Lambda$100.0x0000000800d773e0.apply')
f(6,4323,1030,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,4323,216,1,'cats/effect/IO$.apply')
f(8,4323,216,1,'cats/effect/IO$.delay')
f(9,4323,216,1,'cats/effect/IO$Delay$.apply')
f(10,4323,216,2,'cats.effect.IO$Delay')
f(7,4539,219,1,'cats/effect/IOFiber.registerListener')
f(8,4539,199,1,'cats/effect/CallbackStack.push')
f(9,4539,199,2,'cats.effect.CallbackStack')
f(8,4738,20,1,'scala/runtime/function/JProcedure1.apply')
f(9,4738,20,1,'scala/runtime/function/JProcedure1.apply')
f(10,4738,20,1,'cats/effect/IOFiber$$Lambda$102.0x0000000800d78000.applyVoid')
f(11,4738,20,1,'cats/effect/IOFiber.$anonfun$1')
f(12,4738,20,1,'scala/util/Right$.apply')
f(13,4738,20,2,'scala.util.Right')
f(7,4758,423,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,4758,222,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,4758,222,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,4758,222,2,'cats.effect.IOFiber$$Lambda$102+0x0000000800d78000')
f(8,4980,201,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7c400.newInvokeSpecial')
f(9,4980,201,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,4980,201,2,'cats.effect.IOFiber$$Lambda$104+0x0000000800d78d28')
f(7,5181,172,1,'scala/Some$.apply')
f(8,5181,172,2,'scala.Some')
f(5,5353,253,1,'cats/effect/IOFiber$$Lambda$89.0x0000000800d5de20.apply')
f(6,5353,253,1,'cats/effect/IOFiber.$init$$$anonfun$1')
f(7,5353,253,1,'cats/effect/IO.void')
f(8,5353,253,1,'cats/effect/IO.map')
f(9,5353,253,1,'cats/effect/IO$Map$.apply')
f(10,5353,253,2,'cats.effect.IO$Map')
f(5,5606,1568,1,'cats/effect/IOFiber.<init>')
f(6,5606,474,1,'cats/effect/ArrayStack$.apply')
f(7,5606,474,2,'cats.effect.ArrayStack')
f(6,6080,192,1,'cats/effect/CallbackStack$.apply')
f(7,6080,192,2,'cats.effect.CallbackStack')
f(6,6272,389,1,'cats/effect/IO$.async')
f(7,6272,133,2,'cats.effect.IO$$anon$4')
f(7,6405,256,1,'cats/effect/IO$IOCont$.apply')
f(8,6405,256,2,'cats.effect.IO$IOCont')
f(6,6661,214,1,'cats/effect/IO$.uncancelable')
f(7,6661,214,1,'cats/effect/IO$Uncancelable$.apply')
f(8,6661,214,2,'cats.effect.IO$Uncancelable')
f(6,6875,299,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,6875,299,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,6875,299,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,6875,152,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5de20')
f(9,7027,147,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(5,7174,12,1,'cats/effect/IOFiber.succeeded')
f(6,7174,12,1,'kyo/bench/InterruptBench$$Lambda$95.0x0000000800d5a808.apply')
f(7,7174,12,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(8,7174,12,1,'kyo/bench/InterruptBench.iterate$1')
f(9,7174,4,1,'cats/effect/IO.flatMap')
f(10,7174,4,1,'cats/effect/IO$FlatMap$.apply')
f(11,7174,4,2,'cats.effect.IO$FlatMap')
f(9,7178,3,1,'cats/effect/IO.start')
f(10,7178,3,1,'cats/effect/IO$Start$.apply')
f(11,7178,3,2,'cats.effect.IO$Start')
f(9,7181,3,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,7181,3,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,7181,3,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,7181,3,2,'kyo.bench.InterruptBench$$Lambda$95+0x0000000800d5a808')
f(9,7184,2,1,'kyo/bench/InterruptBench.loop$1')
f(10,7184,2,1,'cats/effect/IO$.apply')
f(11,7184,2,1,'cats/effect/IO$.delay')
f(12,7184,2,1,'cats/effect/IO$Delay$.apply')
f(13,7184,2,2,'cats.effect.IO$Delay')
f(5,7186,389,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,7186,389,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,7186,389,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,7186,161,2,'cats.effect.IOFiber$$Lambda$103+0x0000000800d78a68')
f(8,7347,228,2,'cats.effect.IOFiber$$Lambda$97+0x0000000800d60000')
f(4,7575,863,1,'cats/effect/IOFiber.succeeded')
f(5,7575,863,1,'kyo/bench/InterruptBench$$Lambda$95.0x0000000800d5a808.apply')
f(6,7575,863,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(7,7575,863,1,'kyo/bench/InterruptBench.iterate$1')
f(8,7575,403,1,'cats/effect/IO.flatMap')
f(9,7575,403,1,'cats/effect/IO$FlatMap$.apply')
f(10,7575,403,2,'cats.effect.IO$FlatMap')
f(8,7978,106,1,'cats/effect/IO.start')
f(9,7978,106,1,'cats/effect/IO$Start$.apply')
f(10,7978,106,2,'cats.effect.IO$Start')
f(8,8084,131,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8084,131,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8084,131,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8084,131,2,'kyo.bench.InterruptBench$$Lambda$95+0x0000000800d5a808')
f(8,8215,223,1,'kyo/bench/InterruptBench.loop$1')
f(9,8215,223,1,'cats/effect/IO$.apply')
f(10,8215,223,1,'cats/effect/IO$.delay')
f(11,8215,223,1,'cats/effect/IO$Delay$.apply')
f(12,8215,223,2,'cats.effect.IO$Delay')
f(3,8438,7,1,'cats/effect/IOFiber.cedeR')
f(4,8438,5,1,'cats/effect/IOFiber.runLoop')
f(5,8438,1,2,'cats.effect.ContState')
f(5,8439,1,1,'cats/effect/IO$$anon$4$$Lambda$101.0x0000000800d77900.apply')
f(6,8439,1,1,'cats/effect/IO$.cats$effect$IO$$anon$4$$_$apply$$anonfun$2$$anonfun$1$$anonfun$1')
f(7,8439,1,1,'cats/effect/IO$$anon$2.onCancel')
f(8,8439,1,1,'cats/effect/IO$$anon$2.onCancel')
f(9,8439,1,1,'cats/effect/IO.onCancel')
f(10,8439,1,1,'cats/effect/IO$OnCancel$.apply')
f(11,8439,1,2,'cats.effect.IO$OnCancel')
f(5,8440,2,1,'cats/effect/IO$$anon$4$$Lambda$99.0x0000000800d61610.apply')
f(6,8440,2,1,'cats/effect/IO$$anon$4.apply$$anonfun$2$$anonfun$1')
f(7,8440,2,1,'cats/effect/IOFiber$$Lambda$90.0x0000000800d5e410.apply')
f(8,8440,2,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,8440,2,1,'cats/effect/IO$.apply')
f(10,8440,2,1,'cats/effect/IO$.delay')
f(11,8440,2,1,'cats/effect/IO$Delay$.apply')
f(12,8440,2,2,'cats.effect.IO$Delay')
f(5,8442,1,1,'cats/effect/IO$EvalOn$.apply')
f(6,8442,1,2,'cats.effect.IO$EvalOn')
f(4,8443,2,1,'cats/effect/IOFiber.succeeded')
f(5,8443,2,1,'kyo/bench/Bench$$Lambda$40.0x0000000800d13078.apply')
f(6,8443,2,1,'kyo/bench/Bench.forkCats$$anonfun$1')
f(7,8443,2,1,'kyo/bench/InterruptBench.catsBench')
f(8,8443,2,1,'kyo/bench/InterruptBench.iterate$1')
f(9,8443,1,1,'cats/effect/IO.start')
f(10,8443,1,1,'cats/effect/IO$Start$.apply')
f(11,8443,1,2,'cats.effect.IO$Start')
f(9,8444,1,1,'kyo/bench/InterruptBench.loop$1')
f(10,8444,1,1,'cats/effect/IO$.apply')
f(11,8444,1,1,'cats/effect/IO$.delay')
f(12,8444,1,1,'cats/effect/IO$Delay$.apply')
f(13,8444,1,2,'cats.effect.IO$Delay')
f(3,8445,384,1,'cats/effect/IOFiber.execR')
f(4,8445,3,1,'cats/effect/ArrayStack.init')
f(5,8445,3,2,'java.lang.Object[]')
f(4,8448,5,1,'cats/effect/ByteStack$.create')
f(5,8448,5,2,'int[]')
f(4,8453,376,1,'cats/effect/IOFiber.done')
f(5,8453,125,1,'cats/effect/CallbackStack.apply')
f(6,8453,125,1,'scala/runtime/function/JProcedure1.apply')
f(7,8453,125,1,'scala/runtime/function/JProcedure1.apply')
f(8,8453,125,1,'cats/effect/IOFiber$$Lambda$102.0x0000000800d78000.applyVoid')
f(9,8453,125,1,'cats/effect/IOFiber.$anonfun$1')
f(10,8453,125,1,'scala/util/Right$.apply')
f(11,8453,125,2,'scala.util.Right')
f(5,8578,251,1,'cats/effect/IO$.pure')
f(6,8578,251,1,'cats/effect/IO$Pure$.apply')
f(7,8578,251,2,'cats.effect.IO$Pure')
f(1,8829,1123,1,'java/lang/Thread.run')
f(2,8829,1123,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,8829,1123,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,8829,1123,1,'java/util/concurrent/FutureTask.run')
f(5,8829,1123,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,8829,1123,1,'java/util/concurrent/FutureTask.run')
f(7,8829,1123,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,8829,1123,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,8829,1,2,'java.lang.Object[]')
f(9,8830,1122,1,'java/lang/reflect/Method.invoke')
f(10,8830,1122,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,8830,1122,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,8830,1122,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,8830,1122,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_Throughput')
f(14,8830,1122,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,8830,1122,1,'kyo/bench/Bench.forkCats')
f(16,8830,48,1,'cats/effect/IO.flatMap')
f(17,8830,48,1,'cats/effect/IO$FlatMap$.apply')
f(18,8830,48,2,'cats.effect.IO$FlatMap')
f(16,8878,1010,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,8878,990,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,8878,641,1,'cats/effect/IO.unsafeRunAsync')
f(19,8878,511,1,'cats/effect/IO.unsafeRunFiber')
f(20,8878,130,2,'cats.effect.IOFiber')
f(20,9008,315,1,'cats/effect/IOFiber.<init>')
f(21,9008,58,1,'cats/effect/ArrayStack$.apply')
f(22,9008,58,2,'cats.effect.ArrayStack')
f(21,9066,82,1,'cats/effect/CallbackStack$.apply')
f(22,9066,82,2,'cats.effect.CallbackStack')
f(21,9148,114,1,'cats/effect/IO$.async')
f(22,9148,42,2,'cats.effect.IO$$anon$4')
f(22,9190,72,1,'cats/effect/IO$IOCont$.apply')
f(23,9190,72,2,'cats.effect.IO$IOCont')
f(21,9262,32,1,'cats/effect/IO$.uncancelable')
f(22,9262,32,1,'cats/effect/IO$Uncancelable$.apply')
f(23,9262,32,2,'cats.effect.IO$Uncancelable')
f(21,9294,29,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,9294,29,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,9294,29,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,9294,22,2,'cats.effect.IOFiber$$Lambda$89+0x0000000800d5de20')
f(24,9316,7,2,'cats.effect.IOFiber$$Lambda$90+0x0000000800d5e410')
f(20,9323,12,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,9323,12,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,9323,12,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,9323,12,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,9323,12,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,9335,54,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,9335,54,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d58c00.newInvokeSpecial')
f(22,9335,54,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,9335,54,2,'cats.effect.IO$$Lambda$88+0x0000000800d5cfe8')
f(19,9389,130,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,9389,130,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,9389,130,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,9389,64,2,'cats.effect.IO$$Lambda$85+0x0000000800d57750')
f(22,9453,45,2,'cats.effect.IO$$Lambda$86+0x0000000800d57a10')
f(22,9498,21,2,'cats.effect.IO$$Lambda$87+0x0000000800d5c000')
f(18,9519,105,2,'java.util.concurrent.ArrayBlockingQueue')
f(18,9624,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,9624,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,9624,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,9624,4,2,'cats.effect.IOPlatform$$Lambda$84+0x0000000800d57348')
f(18,9628,182,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(19,9628,182,1,'java/util/concurrent/ArrayBlockingQueue.<init>')
f(20,9628,21,2,'java.lang.Object[]')
f(20,9649,38,2,'java.util.concurrent.locks.ReentrantLock')
f(20,9687,70,1,'java/util/concurrent/locks/ReentrantLock.<init>')
f(21,9687,70,2,'java.util.concurrent.locks.ReentrantLock$NonfairSync')
f(20,9757,53,1,'java/util/concurrent/locks/ReentrantLock.newCondition')
f(21,9757,53,1,'java/util/concurrent/locks/ReentrantLock$Sync.newCondition')
f(22,9757,53,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject')
f(18,9810,46,1,'scala/concurrent/package$.blocking')
f(19,9810,46,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,9810,46,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5edf0.apply')
f(21,9810,46,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,9810,46,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,9810,46,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,9810,46,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,9856,12,1,'scala/util/Either.fold')
f(19,9856,12,1,'cats/effect/IOPlatform$$Lambda$109.0x0000000800d79e80.apply')
f(20,9856,12,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,9856,12,1,'scala/Some$.apply')
f(22,9856,12,2,'scala.Some')
f(17,9868,20,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,9868,20,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,9868,20,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,9868,20,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,9868,20,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,9868,20,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,9868,20,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,9868,20,2,'scala.concurrent.duration.FiniteDuration')
f(16,9888,64,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,9888,64,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,9888,64,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,9888,64,2,'kyo.bench.Bench$$Lambda$40+0x0000000800d13078')
f(1,9952,4,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,9952,4,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,9952,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,9952,4,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,9952,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,9952,4,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,9952,4,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,9952,1,2,'org.openjdk.jmh.runner.InfraControl')
f(8,9953,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,9953,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,9953,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,9953,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,9953,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,9953,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,451,3,'all')
f(1,0,9,3,'[unknown_Java]')
f(2,0,2,6,'cats/effect/IO$FlatMap.tag',0,2,0)
f(2,2,1,6,'cats/effect/IO$IOCont$Get.tag',0,1,0)
f(2,3,1,6,'cats/effect/IO$IOCont.tag',0,1,0)
f(2,4,1,6,'cats/effect/IO$Uncancelable$UnmaskRunLoop.tag',0,1,0)
f(2,5,1,1,'cats/effect/IOFiber.run')
f(2,6,2,1,'cats/effect/IOFiber.runLoop')
f(2,8,1,3,'clock_gettime')
f(3,8,1,3,'[vdso]')
f(1,9,438,1,'cats/effect/unsafe/WorkerThread.run')
f(2,12,258,1,'cats/effect/IOFiber.run')
f(3,14,216,1,'cats/effect/IOFiber.asyncContinueSuccessfulR',3,0,0)
f(4,14,3,2,'cats/effect/ArrayStack.pop',3,0,0)
f(4,17,173,1,'cats/effect/IOFiber.runLoop')
f(5,24,11,2,'cats/effect/ArrayStack.push',10,0,0)
f(6,34,1,2,'cats/effect/ArrayStack.checkAndGrow',1,0,0)
f(5,35,6,2,'cats/effect/ByteStack$.push',4,0,0)
f(6,40,1,2,'cats/effect/ByteStack$.growIfNeeded',1,0,0)
f(5,41,8,1,'cats/effect/IO$$anon$4$$Lambda$101.0x0000000800d77700.apply')
f(6,42,7,2,'cats/effect/IO$.cats$effect$IO$$anon$4$$_$apply$$anonfun$2$$anonfun$1$$anonfun$1',7,0,0)
f(7,47,2,2,'cats/effect/IO$$anon$2.onCancel',2,0,0)
f(8,47,2,2,'cats/effect/IO$$anon$2.onCancel',2,0,0)
f(9,47,2,2,'cats/effect/IO.onCancel',2,0,0)
f(10,47,2,2,'cats/effect/IO$OnCancel$.apply',2,0,0)
f(5,49,3,2,'cats/effect/IO$$anon$4$$Lambda$98.0x0000000800d60b30.apply',3,0,0)
f(6,49,3,2,'cats/effect/IO$$anon$4.apply$$anonfun$2',3,0,0)
f(7,49,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(8,49,1,2,'cats/effect/IO$$anon$2.uncancelable',1,0,0)
f(7,50,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(8,50,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d59400.newInvokeSpecial',2,0,0)
f(5,52,1,2,'cats/effect/IO$$anon$4.apply',1,0,0)
f(6,52,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(7,52,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(8,52,1,2,'cats/effect/IO$$anon$4$$Lambda$98.0x0000000800d60b30.<init>',1,0,0)
f(9,52,1,2,'java/lang/Object.<init>',1,0,0)
f(5,53,4,6,'cats/effect/IO$FlatMap.tag',0,4,0)
f(5,57,1,2,'cats/effect/IO$IOCont$Get$.apply',1,0,0)
f(5,58,2,6,'cats/effect/IO$IOCont$Get.tag',0,2,0)
f(5,60,2,6,'cats/effect/IO$IOCont.tag',0,2,0)
f(5,62,1,6,'cats/effect/IO$Pure.tag',0,1,0)
f(5,63,1,6,'cats/effect/IO$Uncancelable$UnmaskRunLoop.tag',0,1,0)
f(5,64,2,6,'cats/effect/IO$Uncancelable.tag',0,2,0)
f(5,66,7,2,'cats/effect/IOFiber$$Lambda$89.0x0000000800d5dc20.apply',7,0,0)
f(6,69,4,2,'cats/effect/IOFiber.$init$$$anonfun$1',4,0,0)
f(7,69,2,2,'cats/effect/IO.void',2,0,0)
f(8,69,2,2,'cats/effect/IO.map',2,0,0)
f(9,69,2,2,'cats/effect/IO$Map$.apply',2,0,0)
f(10,69,2,2,'cats/effect/IO$Map.<init>',2,0,0)
f(11,70,1,2,'cats/effect/IO.<init>',1,0,0)
f(7,71,2,2,'cats/effect/IOFiber.resume',2,0,0)
f(8,71,2,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',2,0,0)
f(9,71,2,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',2,0,0)
f(10,71,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(11,71,1,2,'java/lang/invoke/VarForm.getMemberNameOrNull',1,0,0)
f(10,72,1,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.getAndSet',1,0,0)
f(11,72,1,2,'java/util/Objects.requireNonNull',1,0,0)
f(5,73,20,1,'cats/effect/IOFiber.<init>')
f(6,91,1,2,'cats/effect/CallbackStack$.apply',1,0,0)
f(6,92,1,2,'cats/effect/IO$.async',1,0,0)
f(7,92,1,2,'cats/effect/IO$IOCont$.apply',1,0,0)
f(5,93,71,2,'cats/effect/IOFiber.scheduleFiber',53,0,0)
f(6,97,67,2,'cats/effect/unsafe/WorkStealingThreadPool.execute',49,0,0)
f(7,97,67,2,'cats/effect/unsafe/WorkerThread.schedule',49,0,0)
f(8,97,24,2,'cats/effect/unsafe/LocalQueue.enqueue',24,0,0)
f(9,112,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',2,0,0)
f(9,114,7,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.lazySet',7,0,0)
f(10,115,6,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.accessCheck',6,0,0)
f(8,121,43,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',25,0,0)
f(9,132,8,2,'cats/effect/unsafe/WorkStealingThreadPool.notifyShouldWakeup',8,0,0)
f(10,138,2,2,'java/util/concurrent/atomic/AtomicInteger.get',2,0,0)
f(9,140,1,2,'cats/effect/unsafe/WorkStealingThreadPool.parkedSignals',1,0,0)
f(9,141,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(10,141,2,2,'java/util/Random.nextInt',2,0,0)
f(11,141,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(12,141,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(9,143,3,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',3,0,0)
f(10,144,2,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',2,0,0)
f(9,146,18,1,'java/util/concurrent/locks/LockSupport.unpark')
f(10,146,18,1,'jdk/internal/misc/Unsafe.unpark')
f(11,146,1,3,'Unsafe_Unpark')
f(11,147,17,3,'pthread_cond_signal')
f(12,149,15,5,'entry_SYSCALL_64_after_hwframe')
f(13,149,1,5,'__x64_sys_futex')
f(13,150,14,5,'do_syscall_64')
f(14,150,13,5,'__x64_sys_futex')
f(15,150,13,5,'do_futex')
f(16,150,13,5,'futex_wake')
f(17,151,1,5,'_raw_spin_lock')
f(18,151,1,5,'__pv_queued_spin_lock_slowpath')
f(17,152,2,5,'get_futex_key')
f(17,154,9,5,'wake_up_q')
f(18,154,9,5,'_raw_spin_unlock_irqrestore')
f(14,163,1,5,'syscall_enter_from_user_mode')
f(5,164,1,2,'cats/effect/IOFiber.shouldFinalize',1,0,0)
f(5,165,8,1,'cats/effect/IOFiber.succeeded')
f(6,168,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,168,1,1,'cats/effect/IOFiber.done')
f(8,168,1,1,'cats/effect/CallbackStack.apply')
f(9,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(11,168,1,1,'cats/effect/IO$$Lambda$88.0x0000000800d5cde8.applyVoid')
f(12,168,1,1,'cats/effect/IO.$anonfun$6')
f(13,168,1,1,'cats/effect/kernel/Outcome$Succeeded.fold')
f(14,168,1,1,'cats/effect/kernel/Outcome.fold$')
f(15,168,1,1,'cats/effect/kernel/Outcome.fold')
f(16,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,168,1,1,'cats/effect/IO$$Lambda$107.0x0000000800d794b0.applyVoid')
f(19,168,1,1,'cats/effect/IO.$anonfun$6$$anonfun$3')
f(20,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(21,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(22,168,1,1,'cats/effect/IO$$Lambda$87.0x0000000800d5c000.applyVoid')
f(23,168,1,1,'cats/effect/IO.unsafeRunAsync$$anonfun$3')
f(24,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(25,168,1,1,'scala/runtime/function/JProcedure1.apply')
f(26,168,1,1,'cats/effect/IOPlatform$$Lambda$84.0x0000000800d57140.applyVoid')
f(27,168,1,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$1')
f(28,168,1,1,'java/util/concurrent/ArrayBlockingQueue.offer')
f(29,168,1,1,'java/util/concurrent/locks/ReentrantLock.unlock')
f(30,168,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.release')
f(31,168,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(32,168,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(33,168,1,1,'jdk/internal/misc/Unsafe.unpark')
f(34,168,1,3,'pthread_cond_signal')
f(35,168,1,5,'entry_SYSCALL_64_after_hwframe')
f(36,168,1,5,'do_syscall_64')
f(37,168,1,5,'__x64_sys_futex')
f(38,168,1,5,'do_futex')
f(39,168,1,5,'futex_wake')
f(40,168,1,5,'wake_up_q')
f(41,168,1,5,'_raw_spin_unlock_irqrestore')
f(6,169,3,3,'itable stub')
f(6,172,1,1,'kyo/bench/InterruptBench$$Lambda$94.0x0000000800d5a220.apply')
f(5,173,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(6,173,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(7,173,1,2,'cats/effect/IOFiber$$Lambda$103.0x0000000800d78868.<init>',1,0,0)
f(8,173,1,2,'java/lang/Object.<init>',1,0,0)
f(7,174,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(5,175,1,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',1,0,0)
f(6,175,1,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',1,0,0)
f(7,175,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(5,176,10,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',10,0,0)
f(6,176,10,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',10,0,0)
f(7,183,2,2,'java/lang/invoke/VarHandle.checkExactAccessMode',2,0,0)
f(7,185,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(5,186,4,3,'vtable stub')
f(4,190,40,1,'cats/effect/IOFiber.succeeded')
f(5,210,2,2,'cats/effect/ArrayStack.pop',2,0,0)
f(5,212,4,2,'cats/effect/ByteStack$.pop',4,0,0)
f(6,214,2,2,'cats/effect/ByteStack$.peek',2,0,0)
f(5,216,8,3,'itable stub')
f(5,224,6,1,'kyo/bench/InterruptBench$$Lambda$95.0x0000000800d5a5e8.apply')
f(6,225,5,2,'kyo/bench/InterruptBench.iterate$1$$anonfun$2',5,0,0)
f(7,225,5,2,'kyo/bench/InterruptBench.iterate$1',5,0,0)
f(8,225,1,2,'cats/effect/IO.flatMap',1,0,0)
f(9,225,1,2,'cats/effect/IO$FlatMap$.apply',1,0,0)
f(8,226,2,2,'cats/effect/IO.start',2,0,0)
f(9,226,2,2,'cats/effect/IO$Start$.apply',2,0,0)
f(8,228,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(9,228,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(10,228,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(3,230,40,1,'cats/effect/IOFiber.execR',7,0,0)
f(4,230,1,1,'cats/effect/IOFiber$.OutcomeCanceled')
f(4,231,39,1,'cats/effect/IOFiber.done',7,0,0)
f(5,234,36,1,'cats/effect/CallbackStack.apply',4,0,0)
f(6,236,34,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(7,236,34,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(8,236,34,1,'cats/effect/IOFiber$$Lambda$102.0x0000000800d77ad0.applyVoid',2,0,0)
f(9,236,34,1,'cats/effect/IOFiber.$anonfun$1',2,0,0)
f(10,236,34,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(11,236,34,1,'scala/runtime/function/JProcedure1.apply',2,0,0)
f(12,236,34,1,'cats/effect/IOFiber$$Lambda$97.0x0000000800d60000.applyVoid',2,0,0)
f(13,236,34,1,'cats/effect/IOFiber.$anonfun$2',2,0,0)
f(14,236,34,1,'cats/effect/IOFiber.stateLoop$1',2,0,0)
f(15,237,32,1,'cats/effect/IOFiber.loop$1')
f(16,237,32,1,'cats/effect/IOFiber.scheduleFiber')
f(17,237,32,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(18,237,32,1,'cats/effect/unsafe/WorkerThread.schedule')
f(19,237,1,1,'cats/effect/unsafe/LocalQueue.enqueue')
f(19,238,31,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(20,238,31,1,'java/util/concurrent/locks/LockSupport.unpark')
f(21,238,31,1,'jdk/internal/misc/Unsafe.unpark')
f(22,238,1,3,'Unsafe_Unpark')
f(22,239,30,3,'pthread_cond_signal')
f(23,240,29,5,'entry_SYSCALL_64_after_hwframe')
f(24,240,29,5,'do_syscall_64')
f(25,240,29,5,'__x64_sys_futex')
f(26,241,28,5,'do_futex')
f(27,241,28,5,'futex_wake')
f(28,242,27,5,'wake_up_q')
f(29,242,26,5,'_raw_spin_unlock_irqrestore')
f(29,268,1,5,'try_to_wake_up')
f(15,269,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(16,269,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(17,269,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(2,270,14,2,'cats/effect/unsafe/LocalQueue.dequeue',14,0,0)
f(3,272,7,3,'clock_gettime')
f(4,272,7,3,'[vdso]')
f(3,279,5,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.get',5,0,0)
f(4,279,5,3,'clock_gettime')
f(5,280,4,3,'[vdso]')
f(2,284,34,2,'cats/effect/unsafe/ScalQueue.poll',34,0,0)
f(3,287,10,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',10,0,0)
f(4,290,1,2,'java/util/concurrent/ConcurrentLinkedQueue$Node.casItem',1,0,0)
f(5,290,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(6,290,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(4,291,6,2,'java/util/concurrent/ConcurrentLinkedQueue.updateHead',6,0,0)
f(5,291,4,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',4,0,0)
f(6,292,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(6,293,2,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',2,0,0)
f(5,295,2,2,'java/lang/invoke/VarHandleGuards.guard_LL_V',2,0,0)
f(6,296,1,2,'java/lang/invoke/VarHandle.checkExactAccessMode',1,0,0)
f(3,297,21,2,'java/util/concurrent/ThreadLocalRandom.nextInt',21,0,0)
f(4,298,20,2,'java/util/Random.nextInt',20,0,0)
f(5,298,2,3,'__vdso_clock_gettime')
f(5,300,18,3,'clock_gettime')
f(6,301,17,3,'[vdso]')
f(2,318,37,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyIfWorkPending',1,0,0)
f(3,318,37,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked',1,0,0)
f(4,318,1,2,'java/util/concurrent/atomic/AtomicBoolean.getAndSet',1,0,0)
f(5,318,1,2,'java/lang/invoke/VarHandleGuards.guard_LI_I',1,0,0)
f(4,319,36,1,'java/util/concurrent/locks/LockSupport.unpark')
f(5,319,36,1,'jdk/internal/misc/Unsafe.unpark')
f(6,320,35,3,'pthread_cond_signal')
f(7,321,34,5,'entry_SYSCALL_64_after_hwframe')
f(8,321,34,5,'do_syscall_64')
f(9,321,32,5,'__x64_sys_futex')
f(10,321,32,5,'do_futex')
f(11,321,32,5,'futex_wake')
f(12,321,1,5,'mark_wake_futex')
f(12,322,1,5,'wake_q_add_safe')
f(12,323,30,5,'wake_up_q')
f(13,324,29,5,'_raw_spin_unlock_irqrestore')
f(9,353,2,5,'syscall_enter_from_user_mode')
f(2,355,14,1,'cats/effect/unsafe/WorkStealingThreadPool.stealFromOtherWorkerThread')
f(3,355,10,1,'cats/effect/unsafe/LocalQueue.stealInto')
f(4,356,2,2,'cats/effect/unsafe/LocalQueue.bufferForwarder',2,0,0)
f(4,358,1,2,'cats/effect/unsafe/LocalQueue.lsb',1,0,0)
f(4,359,3,2,'cats/effect/unsafe/LocalQueue.msb',3,0,0)
f(4,362,1,2,'cats/effect/unsafe/LocalQueue.unsignedShortSubtraction',1,0,0)
f(4,363,2,2,'java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet',2,0,0)
f(3,365,2,2,'cats/effect/unsafe/ScalQueue.poll',2,0,0)
f(4,365,2,2,'java/util/concurrent/ConcurrentLinkedQueue.poll',2,0,0)
f(3,367,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(4,367,2,2,'java/util/Random.nextInt',2,0,0)
f(5,367,2,2,'java/util/concurrent/ThreadLocalRandom.next',2,0,0)
f(6,367,2,2,'java/util/concurrent/ThreadLocalRandom.nextInt',2,0,0)
f(7,367,2,2,'java/util/concurrent/ThreadLocalRandom.nextSeed',2,0,0)
f(2,369,78,1,'cats/effect/unsafe/WorkerThread.park$1')
f(3,369,78,1,'cats/effect/unsafe/WorkerThread.parkLoop$1')
f(4,369,78,1,'java/util/concurrent/locks/LockSupport.park')
f(5,369,78,1,'jdk/internal/misc/Unsafe.park')
f(6,371,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(6,372,1,4,'JavaThread::threadObj() const')
f(6,373,12,3,'Unsafe_Park')
f(7,375,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,378,3,5,'entry_SYSCALL_64_after_hwframe')
f(9,378,3,5,'do_syscall_64')
f(10,378,2,5,'__x64_sys_futex')
f(11,378,2,5,'do_futex')
f(12,378,2,5,'futex_wake')
f(13,379,1,5,'get_futex_key')
f(10,380,1,5,'syscall_enter_from_user_mode')
f(7,381,1,4,'Parker::park(bool, long)')
f(7,382,1,3,'pthread_cond_wait')
f(7,383,2,3,'pthread_mutex_unlock')
f(6,385,61,3,'[unknown]')
f(7,385,58,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(8,386,57,5,'entry_SYSCALL_64_after_hwframe')
f(9,386,57,5,'do_syscall_64')
f(10,386,54,5,'__x64_sys_futex')
f(11,388,52,5,'do_futex')
f(12,388,52,5,'futex_wait')
f(13,389,1,5,'__get_user_nocheck_4')
f(13,390,1,5,'__raw_callee_save___pv_queued_spin_unlock')
f(13,391,48,5,'futex_wait_queue_me')
f(14,392,47,5,'schedule')
f(15,392,47,5,'__schedule')
f(16,392,47,5,'finish_task_switch.isra.0')
f(13,439,1,5,'futex_wait_setup')
f(10,440,3,5,'syscall_exit_to_user_mode')
f(11,440,3,5,'exit_to_user_mode_prepare')
f(12,440,3,5,'exit_to_user_mode_loop')
f(13,441,2,5,'__rseq_handle_notify_resume')
f(14,442,1,5,'__put_user_nocheck_8')
f(7,443,3,3,'pthread_cond_wait')
f(6,446,1,4,'java_lang_Thread::set_thread_status(oopDesc*, JavaThreadStatus)')
f(1,447,4,1,'java/lang/Thread.run')
f(2,447,4,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,447,4,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,447,4,1,'java/util/concurrent/FutureTask.run')
f(5,447,4,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,447,4,1,'java/util/concurrent/FutureTask.run')
f(7,447,4,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,447,4,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,447,4,1,'java/lang/reflect/Method.invoke')
f(10,447,4,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,447,4,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,447,4,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,447,4,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_Throughput')
f(14,447,4,1,'kyo/bench/jmh_generated/InterruptBench_forkCats_jmhTest.forkCats_thrpt_jmhStub')
f(15,447,4,1,'kyo/bench/Bench.forkCats')
f(16,447,4,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,447,4,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,447,3,1,'cats/effect/IO.unsafeRunAsync')
f(19,447,3,1,'cats/effect/IO.unsafeRunFiber')
f(20,447,3,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,447,3,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,447,3,1,'cats/effect/unsafe/WorkStealingThreadPool.notifyParked')
f(23,447,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(24,447,3,1,'jdk/internal/misc/Unsafe.unpark')
f(25,447,3,3,'pthread_cond_signal')
f(26,447,3,5,'entry_SYSCALL_64_after_hwframe')
f(27,447,3,5,'do_syscall_64')
f(28,447,3,5,'__x64_sys_futex')
f(29,447,3,5,'do_futex')
f(30,447,3,5,'futex_wake')
f(31,447,3,5,'wake_up_q')
f(32,447,3,5,'_raw_spin_unlock_irqrestore')
f(18,450,1,1,'scala/concurrent/package$.blocking')
f(19,450,1,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,450,1,1,'cats/effect/IOPlatform$$Lambda$91.0x0000000800d5ebf0.apply')
f(21,450,1,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,450,1,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,450,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,450,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(25,450,1,1,'jdk/internal/misc/Unsafe.park')
f(26,450,1,3,'[unknown]')
f(27,450,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,10223,3,'all')
f(1,0,9082,1,'cats/effect/unsafe/WorkerThread.run')
f(2,0,9082,1,'cats/effect/IOFiber.run')
f(3,0,8666,1,'cats/effect/IOFiber.asyncContinueSuccessfulR')
f(4,0,7766,1,'cats/effect/IOFiber.runLoop')
f(5,0,329,2,'cats.effect.ContState')
f(5,329,504,2,'cats.effect.IOFiber$$anon$1')
f(5,833,731,2,'cats.effect.IOFiber')
f(5,1564,178,1,'cats/arrow/FunctionK$.id')
f(6,1564,178,2,'cats.arrow.FunctionK$$anon$4')
f(5,1742,431,1,'cats/effect/IO$$anon$4$$Lambda$100.0x0000000800d77700.apply')
f(6,1742,431,1,'cats/effect/IO$.cats$effect$IO$$anon$4$$_$apply$$anonfun$2$$anonfun$1$$anonfun$1')
f(7,1742,215,1,'cats/effect/IO$$anon$2.onCancel')
f(8,1742,215,1,'cats/effect/IO$$anon$2.onCancel')
f(9,1742,215,1,'cats/effect/IO.onCancel')
f(10,1742,215,1,'cats/effect/IO$OnCancel$.apply')
f(11,1742,215,2,'cats.effect.IO$OnCancel')
f(7,1957,216,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,1957,216,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,1957,216,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,1957,216,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,2173,591,1,'cats/effect/IO$$anon$4$$Lambda$97.0x0000000800d60728.apply')
f(6,2173,591,1,'cats/effect/IO$$anon$4.apply$$anonfun$2')
f(7,2173,289,1,'cats/effect/IO$$anon$2.uncancelable')
f(8,2173,289,1,'cats/effect/IO$$anon$2.uncancelable')
f(9,2173,289,1,'cats/effect/IO$.uncancelable')
f(10,2173,289,1,'cats/effect/IO$Uncancelable$.apply')
f(11,2173,289,2,'cats.effect.IO$Uncancelable')
f(7,2462,302,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2462,302,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,2462,302,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2462,302,2,'cats.effect.IO$$anon$4$$Lambda$98+0x0000000800d60fe8')
f(5,2764,1027,1,'cats/effect/IO$$anon$4$$Lambda$98.0x0000000800d60fe8.apply')
f(6,2764,1027,1,'cats/effect/IO$$anon$4.apply$$anonfun$2$$anonfun$1')
f(7,2764,229,1,'cats/FlatMap$ToFlatMapOps$$anon$2.flatMap')
f(8,2764,229,1,'cats/FlatMap$Ops.flatMap$')
f(9,2764,229,1,'cats/FlatMap$Ops.flatMap')
f(10,2764,229,1,'cats/effect/IO$$anon$2.flatMap')
f(11,2764,229,1,'cats/effect/IO$$anon$2.flatMap')
f(12,2764,229,1,'cats/effect/IO.flatMap')
f(13,2764,229,1,'cats/effect/IO$FlatMap$.apply')
f(14,2764,229,2,'cats.effect.IO$FlatMap')
f(7,2993,516,1,'cats/effect/IOFiber$$Lambda$93.0x0000000800d5e220.apply')
f(8,2993,516,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,2993,271,1,'cats/effect/IO$.apply')
f(10,2993,271,1,'cats/effect/IO$.delay')
f(11,2993,271,1,'cats/effect/IO$Delay$.apply')
f(12,2993,271,2,'cats.effect.IO$Delay')
f(9,3264,245,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,3264,245,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,3264,245,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,3264,245,2,'cats.effect.IOFiber$$Lambda$99+0x0000000800d771e0')
f(7,3509,282,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3509,282,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(9,3509,282,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3509,282,2,'cats.effect.IO$$anon$4$$Lambda$100+0x0000000800d77700')
f(5,3791,250,1,'cats/effect/IO$.apply')
f(6,3791,250,1,'cats/effect/IO$.delay')
f(7,3791,250,1,'cats/effect/IO$Delay$.apply')
f(8,3791,250,2,'cats.effect.IO$Delay')
f(5,4041,222,1,'cats/effect/IO$EvalOn$.apply')
f(6,4041,222,2,'cats.effect.IO$EvalOn')
f(5,4263,156,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,4263,156,2,'cats.effect.IO$IOCont$Get')
f(5,4419,236,1,'cats/effect/IOFiber$$Lambda$92.0x0000000800d5bb20.apply')
f(6,4419,236,1,'cats/effect/IOFiber.$init$$$anonfun$1')
f(7,4419,236,1,'cats/effect/IO.void')
f(8,4419,236,1,'cats/effect/IO.map')
f(9,4419,236,1,'cats/effect/IO$Map$.apply')
f(10,4419,236,2,'cats.effect.IO$Map')
f(5,4655,1086,1,'cats/effect/IOFiber$$Lambda$99.0x0000000800d771e0.apply')
f(6,4655,1086,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,4655,248,1,'cats/effect/IO$.apply')
f(8,4655,248,1,'cats/effect/IO$.delay')
f(9,4655,248,1,'cats/effect/IO$Delay$.apply')
f(10,4655,248,2,'cats.effect.IO$Delay')
f(7,4903,240,1,'cats/effect/IOFiber.registerListener')
f(8,4903,216,1,'cats/effect/CallbackStack.push')
f(9,4903,216,2,'cats.effect.CallbackStack')
f(8,5119,24,1,'scala/runtime/function/JProcedure1.apply')
f(9,5119,24,1,'scala/runtime/function/JProcedure1.apply')
f(10,5119,24,1,'cats/effect/IOFiber$$Lambda$101.0x0000000800d77ad0.applyVoid')
f(11,5119,24,1,'cats/effect/IOFiber.$anonfun$1')
f(12,5119,24,1,'scala/util/Right$.apply')
f(13,5119,24,2,'scala.util.Right')
f(7,5143,439,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5143,220,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5143,220,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5143,220,2,'cats.effect.IOFiber$$Lambda$101+0x0000000800d77ad0')
f(8,5363,219,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7c400.newInvokeSpecial')
f(9,5363,219,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5363,219,2,'cats.effect.IOFiber$$Lambda$103+0x0000000800d78b28')
f(7,5582,159,1,'scala/Some$.apply')
f(8,5582,159,2,'scala.Some')
f(5,5741,1587,1,'cats/effect/IOFiber.<init>')
f(6,5741,492,1,'cats/effect/ArrayStack$.apply')
f(7,5741,492,2,'cats.effect.ArrayStack')
f(6,6233,195,1,'cats/effect/CallbackStack$.apply')
f(7,6233,195,2,'cats.effect.CallbackStack')
f(6,6428,338,1,'cats/effect/IO$.async')
f(7,6428,115,2,'cats.effect.IO$$anon$4')
f(7,6543,223,1,'cats/effect/IO$IOCont$.apply')
f(8,6543,223,2,'cats.effect.IO$IOCont')
f(6,6766,240,1,'cats/effect/IO$.uncancelable')
f(7,6766,240,1,'cats/effect/IO$Uncancelable$.apply')
f(8,6766,240,2,'cats.effect.IO$Uncancelable')
f(6,7006,322,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(7,7006,322,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(8,7006,322,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(9,7006,149,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5bb20')
f(9,7155,173,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5e220')
f(5,7328,23,1,'cats/effect/IOFiber.succeeded')
f(6,7328,1,1,'cats/effect/IOFiber.runTerminusSuccessK')
f(7,7328,1,1,'cats/effect/IO$.pure')
f(8,7328,1,1,'cats/effect/IO$Pure$.apply')
f(9,7328,1,2,'cats.effect.IO$Pure')
f(6,7329,22,1,'kyo/bench/InterruptBench$$Lambda$43.0x0000000800d167e8.apply')
f(7,7329,22,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(8,7329,22,1,'kyo/bench/InterruptBench.iterate$1')
f(9,7329,3,1,'cats/effect/IO.flatMap')
f(10,7329,3,1,'cats/effect/IO$FlatMap$.apply')
f(11,7329,3,2,'cats.effect.IO$FlatMap')
f(9,7332,2,1,'cats/effect/IO.start')
f(10,7332,2,1,'cats/effect/IO$Start$.apply')
f(11,7332,2,2,'cats.effect.IO$Start')
f(9,7334,17,1,'kyo/bench/InterruptBench.loop$1')
f(10,7334,17,1,'cats/effect/IO$.apply')
f(11,7334,17,1,'cats/effect/IO$.delay')
f(12,7334,17,1,'cats/effect/IO$Delay$.apply')
f(13,7334,17,2,'cats.effect.IO$Delay')
f(5,7351,415,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(6,7351,415,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(7,7351,415,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(8,7351,187,2,'cats.effect.IOFiber$$Lambda$102+0x0000000800d78868')
f(8,7538,228,2,'cats.effect.IOFiber$$Lambda$96+0x0000000800d5c800')
f(4,7766,900,1,'cats/effect/IOFiber.succeeded')
f(5,7766,900,1,'kyo/bench/InterruptBench$$Lambda$43.0x0000000800d167e8.apply')
f(6,7766,900,1,'kyo/bench/InterruptBench.iterate$1$$anonfun$2')
f(7,7766,900,1,'kyo/bench/InterruptBench.iterate$1')
f(8,7766,429,1,'cats/effect/IO.flatMap')
f(9,7766,429,1,'cats/effect/IO$FlatMap$.apply')
f(10,7766,429,2,'cats.effect.IO$FlatMap')
f(8,8195,134,1,'cats/effect/IO.start')
f(9,8195,134,1,'cats/effect/IO$Start$.apply')
f(10,8195,134,2,'cats.effect.IO$Start')
f(8,8329,115,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,8329,115,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,8329,115,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,8329,115,2,'kyo.bench.InterruptBench$$Lambda$43+0x0000000800d167e8')
f(8,8444,222,1,'kyo/bench/InterruptBench.loop$1')
f(9,8444,222,1,'cats/effect/IO$.apply')
f(10,8444,222,1,'cats/effect/IO$.delay')
f(11,8444,222,1,'cats/effect/IO$Delay$.apply')
f(12,8444,222,2,'cats.effect.IO$Delay')
f(3,8666,416,1,'cats/effect/IOFiber.execR')
f(4,8666,8,1,'cats/effect/ArrayStack.init')
f(5,8666,8,2,'java.lang.Object[]')
f(4,8674,5,1,'cats/effect/ByteStack$.create')
f(5,8674,5,2,'int[]')
f(4,8679,392,1,'cats/effect/IOFiber.done')
f(5,8679,142,1,'cats/effect/CallbackStack.apply')
f(6,8679,142,1,'scala/runtime/function/JProcedure1.apply')
f(7,8679,142,1,'scala/runtime/function/JProcedure1.apply')
f(8,8679,142,1,'cats/effect/IOFiber$$Lambda$101.0x0000000800d77ad0.applyVoid')
f(9,8679,142,1,'cats/effect/IOFiber.$anonfun$1')
f(10,8679,142,1,'scala/util/Right$.apply')
f(11,8679,142,2,'scala.util.Right')
f(5,8821,250,1,'cats/effect/IO$.pure')
f(6,8821,250,1,'cats/effect/IO$Pure$.apply')
f(7,8821,250,2,'cats.effect.IO$Pure')
f(4,9071,11,1,'cats/effect/IOFiber.runLoop')
f(5,9071,1,2,'cats.effect.IOFiber$$anon$1')
f(5,9072,1,2,'cats.effect.IOFiber')
f(5,9073,2,1,'cats/effect/IO$$anon$4$$Lambda$100.0x0000000800d77700.apply')
f(6,9073,2,1,'cats/effect/IO$.cats$effect$IO$$anon$4$$_$apply$$anonfun$2$$anonfun$1$$anonfun$1')
f(7,9073,1,1,'cats/effect/IO$$anon$2.onCancel')
f(8,9073,1,1,'cats/effect/IO$$anon$2.onCancel')
f(9,9073,1,1,'cats/effect/IO.onCancel')
f(10,9073,1,1,'cats/effect/IO$OnCancel$.apply')
f(11,9073,1,2,'cats.effect.IO$OnCancel')
f(7,9074,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(8,9074,1,1,'cats/effect/IOFiber$$anon$1.apply')
f(9,9074,1,1,'cats/effect/IO$Uncancelable$UnmaskRunLoop$.apply')
f(10,9074,1,2,'cats.effect.IO$Uncancelable$UnmaskRunLoop')
f(5,9075,1,1,'cats/effect/IO$$anon$4$$Lambda$97.0x0000000800d60728.apply')
f(6,9075,1,1,'cats/effect/IO$$anon$4.apply$$anonfun$2')
f(7,9075,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,9075,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d64000.newInvokeSpecial')
f(9,9075,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,9075,1,2,'cats.effect.IO$$anon$4$$Lambda$98+0x0000000800d60fe8')
f(5,9076,1,1,'cats/effect/IO$$anon$4$$Lambda$98.0x0000000800d60fe8.apply')
f(6,9076,1,1,'cats/effect/IO$$anon$4.apply$$anonfun$2$$anonfun$1')
f(7,9076,1,1,'cats/effect/IOFiber$$Lambda$93.0x0000000800d5e220.apply')
f(8,9076,1,1,'cats/effect/IOFiber.$init$$$anonfun$2')
f(9,9076,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(10,9076,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(11,9076,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(12,9076,1,2,'cats.effect.IOFiber$$Lambda$99+0x0000000800d771e0')
f(5,9077,1,1,'cats/effect/IO$IOCont$Get$.apply')
f(6,9077,1,2,'cats.effect.IO$IOCont$Get')
f(5,9078,1,1,'cats/effect/IOFiber$$Lambda$99.0x0000000800d771e0.apply')
f(6,9078,1,1,'cats/effect/IOFiber.$init$$$anonfun$2$$anonfun$1')
f(7,9078,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,9078,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d7c400.newInvokeSpecial')
f(9,9078,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,9078,1,2,'cats.effect.IOFiber$$Lambda$103+0x0000000800d78b28')
f(5,9079,2,1,'cats/effect/IOFiber.<init>')
f(6,9079,1,1,'cats/effect/CallbackStack$.apply')
f(7,9079,1,2,'cats.effect.CallbackStack')
f(6,9080,1,1,'cats/effect/IO$.async')
f(7,9080,1,2,'cats.effect.IO$$anon$4')
f(5,9081,1,1,'kyo/bench/InterruptBench$$Lambda$40.0x0000000800d13278.apply')
f(6,9081,1,1,'kyo/bench/InterruptBench.loop$1$$anonfun$1')
f(7,9081,1,1,'kyo/bench/InterruptBench.loop$1')
f(8,9081,1,1,'cats/effect/IO$.apply')
f(9,9081,1,1,'cats/effect/IO$.delay')
f(10,9081,1,1,'cats/effect/IO$Delay$.apply')
f(11,9081,1,2,'cats.effect.IO$Delay')
f(1,9082,1138,1,'java/lang/Thread.run')
f(2,9082,1138,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,9082,1138,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,9082,1138,1,'java/util/concurrent/FutureTask.run')
f(5,9082,1138,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,9082,1138,1,'java/util/concurrent/FutureTask.run')
f(7,9082,1138,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,9082,1138,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,9082,1138,1,'java/lang/reflect/Method.invoke')
f(10,9082,1138,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,9082,1138,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,9082,1138,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,9082,1138,1,'kyo/bench/jmh_generated/InterruptBench_syncCats_jmhTest.syncCats_Throughput')
f(14,9082,1138,1,'kyo/bench/jmh_generated/InterruptBench_syncCats_jmhTest.syncCats_thrpt_jmhStub')
f(15,9082,1138,1,'kyo/bench/Bench.syncCats')
f(16,9082,1110,1,'cats/effect/IOPlatform.unsafeRunSync')
f(17,9082,1109,1,'cats/effect/IOPlatform.unsafeRunTimed')
f(18,9082,1051,1,'cats/effect/IO.unsafeRunAsync')
f(19,9082,1051,1,'cats/effect/IO.unsafeRunFiber')
f(20,9082,789,2,'cats.effect.IOFiber')
f(20,9871,206,1,'cats/effect/IOFiber.<init>')
f(21,9871,54,1,'cats/effect/ArrayStack$.apply')
f(22,9871,54,2,'cats.effect.ArrayStack')
f(21,9925,31,1,'cats/effect/CallbackStack$.apply')
f(22,9925,31,2,'cats.effect.CallbackStack')
f(21,9956,49,1,'cats/effect/IO$.async')
f(22,9956,26,2,'cats.effect.IO$$anon$4')
f(22,9982,23,1,'cats/effect/IO$IOCont$.apply')
f(23,9982,23,2,'cats.effect.IO$IOCont')
f(21,10005,30,1,'cats/effect/IO$.uncancelable')
f(22,10005,30,1,'cats/effect/IO$Uncancelable$.apply')
f(23,10005,30,2,'cats.effect.IO$Uncancelable')
f(21,10035,42,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,10035,42,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,10035,42,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,10035,26,2,'cats.effect.IOFiber$$Lambda$92+0x0000000800d5bb20')
f(24,10061,16,2,'cats.effect.IOFiber$$Lambda$93+0x0000000800d5e220')
f(20,10077,36,1,'cats/effect/unsafe/WorkStealingThreadPool.execute')
f(21,10077,36,1,'cats/effect/unsafe/WorkStealingThreadPool.scheduleExternal')
f(22,10077,36,1,'cats/effect/unsafe/ScalQueue.offer')
f(23,10077,36,1,'java/util/concurrent/ConcurrentLinkedQueue.offer')
f(24,10077,36,2,'java.util.concurrent.ConcurrentLinkedQueue$Node')
f(20,10113,20,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(21,10113,20,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d5c400.newInvokeSpecial')
f(22,10113,20,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(23,10113,20,2,'cats.effect.IO$$Lambda$91+0x0000000800d5ace8')
f(18,10133,29,1,'scala/concurrent/package$.blocking')
f(19,10133,29,1,'scala/concurrent/BlockContext$DefaultBlockContext$.blockOn')
f(20,10133,29,1,'cats/effect/IOPlatform$$Lambda$94.0x0000000800d5e9f8.apply')
f(21,10133,29,1,'cats/effect/IOPlatform.$anonfun$1')
f(22,10133,29,1,'java/util/concurrent/ArrayBlockingQueue.poll')
f(23,10133,29,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.awaitNanos')
f(24,10133,29,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode')
f(18,10162,29,1,'scala/util/Either.fold')
f(19,10162,29,1,'cats/effect/IOPlatform$$Lambda$108.0x0000000800d79c80.apply')
f(20,10162,29,1,'cats/effect/IOPlatform.unsafeRunTimed$$anonfun$3')
f(21,10162,29,1,'scala/Some$.apply')
f(22,10162,29,2,'scala.Some')
f(17,10191,1,1,'scala/concurrent/duration/package$DurationLong.nanos')
f(18,10191,1,1,'scala/concurrent/duration/DurationConversions.nanos$')
f(19,10191,1,1,'scala/concurrent/duration/DurationConversions.nanos')
f(20,10191,1,1,'scala/concurrent/duration/package$DurationLong.nanoseconds')
f(21,10191,1,1,'scala/concurrent/duration/DurationConversions.nanoseconds$')
f(22,10191,1,1,'scala/concurrent/duration/DurationConversions.nanoseconds')
f(23,10191,1,1,'scala/concurrent/duration/package$DurationLong.durationIn')
f(24,10191,1,2,'scala.concurrent.duration.FiniteDuration')
f(16,10192,28,1,'kyo/bench/InterruptBench.catsBench')
f(17,10192,28,1,'kyo/bench/InterruptBench.iterate$1')
f(18,10192,12,1,'cats/effect/IO.flatMap')
f(19,10192,12,1,'cats/effect/IO$FlatMap$.apply')
f(20,10192,12,2,'cats.effect.IO$FlatMap')
f(18,10204,6,1,'cats/effect/IO.start')
f(19,10204,6,1,'cats/effect/IO$Start$.apply')
f(20,10204,6,2,'cats.effect.IO$Start')
f(18,10210,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,10210,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,10210,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,10210,4,2,'kyo.bench.InterruptBench$$Lambda$43+0x0000000800d167e8')
f(18,10214,6,1,'kyo/bench/InterruptBench.loop$1')
f(19,10214,6,1,'cats/effect/IO$.apply')
f(20,10214,6,1,'cats/effect/IO$.delay')
f(21,10214,6,1,'cats/effect/IO$Delay$.apply')
f(22,10214,6,2,'cats.effect.IO$Delay')
f(1,10220,3,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,10220,3,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,10220,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,10220,3,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,10220,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,10220,3,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,10220,3,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,10220,3,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,10220,3,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,10220,3,1,'java/util/concurrent/CountDownLatch.await')
f(11,10220,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,10220,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,10220,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: 688px}
</style>
</head>
<body style='font: 12px Verdana,
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