Skip to content

Instantly share code, notes, and snippets.

@fwbrasil
Created June 11, 2023 08:00
Show Gist options
  • Save fwbrasil/b7def453643bf07ab12cb43d9fb076b7 to your computer and use it in GitHub Desktop.
Save fwbrasil/b7def453643bf07ab12cb43d9fb076b7 to your computer and use it in GitHub Desktop.
[
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.BroadFlatMapBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 48317.27809800879,
"scoreError" : 8979.990374883777,
"scoreConfidence" : [
39337.28772312502,
57297.26847289257
],
"scorePercentiles" : {
"0.0" : 44193.90908264322,
"50.0" : 49439.94039370565,
"90.0" : 49730.89195238862,
"95.0" : 49730.89195238862,
"99.0" : 49730.89195238862,
"99.9" : 49730.89195238862,
"99.99" : 49730.89195238862,
"99.999" : 49730.89195238862,
"99.9999" : 49730.89195238862,
"100.0" : 49730.89195238862
},
"scoreUnit" : "ops/s",
"rawData" : [
[
44193.90908264322,
49439.94039370565,
48768.76004057744,
49452.88902072904,
49730.89195238862
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.BroadFlatMapBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 210636.21003668947,
"scoreError" : 590.5277616265798,
"scoreConfidence" : [
210045.6822750629,
211226.73779831605
],
"scorePercentiles" : {
"0.0" : 210473.47368821714,
"50.0" : 210659.1257940042,
"90.0" : 210792.69117500714,
"95.0" : 210792.69117500714,
"99.0" : 210792.69117500714,
"99.9" : 210792.69117500714,
"99.99" : 210792.69117500714,
"99.999" : 210792.69117500714,
"99.9999" : 210792.69117500714,
"100.0" : 210792.69117500714
},
"scoreUnit" : "ops/s",
"rawData" : [
[
210473.47368821714,
210482.2062475532,
210792.69117500714,
210773.5532786656,
210659.1257940042
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ChainedForkBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1327.6751668533739,
"scoreError" : 86.92695415674845,
"scoreConfidence" : [
1240.7482126966254,
1414.6021210101223
],
"scorePercentiles" : {
"0.0" : 1303.963063796371,
"50.0" : 1322.5748913655427,
"90.0" : 1363.8565400221246,
"95.0" : 1363.8565400221246,
"99.0" : 1363.8565400221246,
"99.9" : 1363.8565400221246,
"99.99" : 1363.8565400221246,
"99.999" : 1363.8565400221246,
"99.9999" : 1363.8565400221246,
"100.0" : 1363.8565400221246
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1316.4428037353339,
1303.963063796371,
1363.8565400221246,
1331.5385353474974,
1322.5748913655427
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ChainedForkBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1299.6332649540814,
"scoreError" : 114.03414961594662,
"scoreConfidence" : [
1185.5991153381347,
1413.667414570028
],
"scorePercentiles" : {
"0.0" : 1253.9762412568755,
"50.0" : 1307.2519303118868,
"90.0" : 1333.3940817281693,
"95.0" : 1333.3940817281693,
"99.0" : 1333.3940817281693,
"99.9" : 1333.3940817281693,
"99.99" : 1333.3940817281693,
"99.999" : 1333.3940817281693,
"99.9999" : 1333.3940817281693,
"100.0" : 1333.3940817281693
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1333.3940817281693,
1307.2519303118868,
1253.9762412568755,
1291.3682071442322,
1312.1758643292424
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CollectAllBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 22129.49924579281,
"scoreError" : 2281.8198229055392,
"scoreConfidence" : [
19847.67942288727,
24411.319068698347
],
"scorePercentiles" : {
"0.0" : 21669.99740515954,
"50.0" : 21945.920592314327,
"90.0" : 23129.923326988814,
"95.0" : 23129.923326988814,
"99.0" : 23129.923326988814,
"99.9" : 23129.923326988814,
"99.99" : 23129.923326988814,
"99.999" : 23129.923326988814,
"99.9999" : 23129.923326988814,
"100.0" : 23129.923326988814
},
"scoreUnit" : "ops/s",
"rawData" : [
[
23129.923326988814,
21945.920592314327,
21732.79986695239,
21669.99740515954,
22168.855037548954
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CollectAllBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 39368.401626222585,
"scoreError" : 227.15051861245476,
"scoreConfidence" : [
39141.25110761013,
39595.55214483504
],
"scorePercentiles" : {
"0.0" : 39324.37899363322,
"50.0" : 39351.28717688409,
"90.0" : 39468.99759431485,
"95.0" : 39468.99759431485,
"99.0" : 39468.99759431485,
"99.9" : 39468.99759431485,
"99.99" : 39468.99759431485,
"99.999" : 39468.99759431485,
"99.9999" : 39468.99759431485,
"100.0" : 39468.99759431485
},
"scoreUnit" : "ops/s",
"rawData" : [
[
39324.37899363322,
39368.552573380424,
39328.79179290032,
39468.99759431485,
39351.28717688409
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CountdownLatchBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 11229.539483191533,
"scoreError" : 385.1031942828658,
"scoreConfidence" : [
10844.436288908668,
11614.642677474398
],
"scorePercentiles" : {
"0.0" : 11141.563050330273,
"50.0" : 11174.17677662042,
"90.0" : 11361.261726955776,
"95.0" : 11361.261726955776,
"99.0" : 11361.261726955776,
"99.9" : 11361.261726955776,
"99.99" : 11361.261726955776,
"99.999" : 11361.261726955776,
"99.9999" : 11361.261726955776,
"100.0" : 11361.261726955776
},
"scoreUnit" : "ops/s",
"rawData" : [
[
11312.110402454153,
11141.563050330273,
11361.261726955776,
11174.17677662042,
11158.585459597043
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.CountdownLatchBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 11079.635657202041,
"scoreError" : 544.845210828776,
"scoreConfidence" : [
10534.790446373265,
11624.480868030818
],
"scorePercentiles" : {
"0.0" : 10841.62017615856,
"50.0" : 11144.450731892604,
"90.0" : 11193.75355917947,
"95.0" : 11193.75355917947,
"99.0" : 11193.75355917947,
"99.9" : 11193.75355917947,
"99.99" : 11193.75355917947,
"99.999" : 11193.75355917947,
"99.9999" : 11193.75355917947,
"100.0" : 11193.75355917947
},
"scoreUnit" : "ops/s",
"rawData" : [
[
11144.450731892604,
11193.75355917947,
10841.62017615856,
11156.411561278317,
11061.94225750126
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 20680.180890279396,
"scoreError" : 789.3297010192277,
"scoreConfidence" : [
19890.851189260167,
21469.510591298626
],
"scorePercentiles" : {
"0.0" : 20451.069357699424,
"50.0" : 20683.38379990996,
"90.0" : 20929.236901215063,
"95.0" : 20929.236901215063,
"99.0" : 20929.236901215063,
"99.9" : 20929.236901215063,
"99.99" : 20929.236901215063,
"99.999" : 20929.236901215063,
"99.9999" : 20929.236901215063,
"100.0" : 20929.236901215063
},
"scoreUnit" : "ops/s",
"rawData" : [
[
20451.069357699424,
20831.8226578958,
20929.236901215063,
20683.38379990996,
20505.39173467674
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 40697.929367094475,
"scoreError" : 72.69898413538581,
"scoreConfidence" : [
40625.23038295909,
40770.62835122986
],
"scorePercentiles" : {
"0.0" : 40683.255280254896,
"50.0" : 40690.382204452086,
"90.0" : 40728.16764623651,
"95.0" : 40728.16764623651,
"99.0" : 40728.16764623651,
"99.9" : 40728.16764623651,
"99.99" : 40728.16764623651,
"99.999" : 40728.16764623651,
"99.9999" : 40728.16764623651,
"100.0" : 40728.16764623651
},
"scoreUnit" : "ops/s",
"rawData" : [
[
40728.16764623651,
40683.255280254896,
40690.382204452086,
40704.094179753076,
40683.74752477581
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindMapBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1231.6189966693855,
"scoreError" : 60.597359908813694,
"scoreConfidence" : [
1171.021636760572,
1292.216356578199
],
"scorePercentiles" : {
"0.0" : 1212.6657735481551,
"50.0" : 1226.8581886888276,
"90.0" : 1254.9656209412171,
"95.0" : 1254.9656209412171,
"99.0" : 1254.9656209412171,
"99.9" : 1254.9656209412171,
"99.99" : 1254.9656209412171,
"99.999" : 1254.9656209412171,
"99.9999" : 1254.9656209412171,
"100.0" : 1254.9656209412171
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1226.8581886888276,
1254.9656209412171,
1212.6657735481551,
1226.1643028147594,
1237.441097353969
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.DeepBindMapBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1724.628532742512,
"scoreError" : 2.196288332299285,
"scoreConfidence" : [
1722.432244410213,
1726.8248210748113
],
"scorePercentiles" : {
"0.0" : 1723.8573428841266,
"50.0" : 1724.546228773554,
"90.0" : 1725.4012253857481,
"95.0" : 1725.4012253857481,
"99.0" : 1725.4012253857481,
"99.9" : 1725.4012253857481,
"99.99" : 1725.4012253857481,
"99.999" : 1725.4012253857481,
"99.9999" : 1725.4012253857481,
"100.0" : 1725.4012253857481
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1724.546228773554,
1724.4459337970252,
1725.4012253857481,
1723.8573428841266,
1724.8919328721067
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.EnqueueDequeueBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1912.8410824409098,
"scoreError" : 63.940500057144945,
"scoreConfidence" : [
1848.900582383765,
1976.7815824980546
],
"scorePercentiles" : {
"0.0" : 1894.3416916357146,
"50.0" : 1910.5223235665726,
"90.0" : 1932.5681370764225,
"95.0" : 1932.5681370764225,
"99.0" : 1932.5681370764225,
"99.9" : 1932.5681370764225,
"99.99" : 1932.5681370764225,
"99.999" : 1932.5681370764225,
"99.9999" : 1932.5681370764225,
"100.0" : 1932.5681370764225
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1899.8668794958642,
1932.5681370764225,
1926.9063804299742,
1910.5223235665726,
1894.3416916357146
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.EnqueueDequeueBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1749.075790624326,
"scoreError" : 133.7379185361287,
"scoreConfidence" : [
1615.3378720881972,
1882.8137091604547
],
"scorePercentiles" : {
"0.0" : 1692.023582259362,
"50.0" : 1752.226752847329,
"90.0" : 1780.7767493612628,
"95.0" : 1780.7767493612628,
"99.0" : 1780.7767493612628,
"99.9" : 1780.7767493612628,
"99.99" : 1780.7767493612628,
"99.999" : 1780.7767493612628,
"99.9999" : 1780.7767493612628,
"100.0" : 1780.7767493612628
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1747.7502325097726,
1752.226752847329,
1692.023582259362,
1780.7767493612628,
1772.6016361439029
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ForkManyBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 560.586510635733,
"scoreError" : 41.76530025575196,
"scoreConfidence" : [
518.821210379981,
602.351810891485
],
"scorePercentiles" : {
"0.0" : 541.7988891285455,
"50.0" : 566.2737165844152,
"90.0" : 567.7744697606706,
"95.0" : 567.7744697606706,
"99.0" : 567.7744697606706,
"99.9" : 567.7744697606706,
"99.99" : 567.7744697606706,
"99.999" : 567.7744697606706,
"99.9999" : 567.7744697606706,
"100.0" : 567.7744697606706
},
"scoreUnit" : "ops/s",
"rawData" : [
[
567.7744697606706,
566.3805116868738,
566.2737165844152,
541.7988891285455,
560.7049660181607
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ForkManyBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 594.790718818667,
"scoreError" : 16.41155787483352,
"scoreConfidence" : [
578.3791609438334,
611.2022766935005
],
"scorePercentiles" : {
"0.0" : 588.4216062747394,
"50.0" : 594.8005045055893,
"90.0" : 599.8752680652678,
"95.0" : 599.8752680652678,
"99.0" : 599.8752680652678,
"99.9" : 599.8752680652678,
"99.99" : 599.8752680652678,
"99.999" : 599.8752680652678,
"99.9999" : 599.8752680652678,
"100.0" : 599.8752680652678
},
"scoreUnit" : "ops/s",
"rawData" : [
[
594.8005045055893,
597.0756391404916,
599.8752680652678,
588.4216062747394,
593.780576107247
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.InterruptBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 4180.8208376223165,
"scoreError" : 32.90542226109835,
"scoreConfidence" : [
4147.915415361218,
4213.726259883415
],
"scorePercentiles" : {
"0.0" : 4170.718459168333,
"50.0" : 4181.659920172022,
"90.0" : 4193.5758155237145,
"95.0" : 4193.5758155237145,
"99.0" : 4193.5758155237145,
"99.9" : 4193.5758155237145,
"99.99" : 4193.5758155237145,
"99.999" : 4193.5758155237145,
"99.9999" : 4193.5758155237145,
"100.0" : 4193.5758155237145
},
"scoreUnit" : "ops/s",
"rawData" : [
[
4175.869512781369,
4193.5758155237145,
4181.659920172022,
4170.718459168333,
4182.280480466141
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.InterruptBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 3326.030528510199,
"scoreError" : 2284.7348946038665,
"scoreConfidence" : [
1041.2956339063326,
5610.765423114066
],
"scorePercentiles" : {
"0.0" : 2748.372488844974,
"50.0" : 2998.5168915661948,
"90.0" : 4118.791031862373,
"95.0" : 4118.791031862373,
"99.0" : 4118.791031862373,
"99.9" : 4118.791031862373,
"99.99" : 4118.791031862373,
"99.999" : 4118.791031862373,
"99.9999" : 4118.791031862373,
"100.0" : 4118.791031862373
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2748.372488844974,
2998.5168915661948,
2974.522694380268,
3789.949535897186,
4118.791031862373
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 9620.17553513846,
"scoreError" : 229.29167792280066,
"scoreConfidence" : [
9390.88385721566,
9849.46721306126
],
"scorePercentiles" : {
"0.0" : 9552.70281937875,
"50.0" : 9606.641332716314,
"90.0" : 9704.938680729152,
"95.0" : 9704.938680729152,
"99.0" : 9704.938680729152,
"99.9" : 9704.938680729152,
"99.99" : 9704.938680729152,
"99.999" : 9704.938680729152,
"99.9999" : 9704.938680729152,
"100.0" : 9704.938680729152
},
"scoreUnit" : "ops/s",
"rawData" : [
[
9651.8791851815,
9584.715657686585,
9552.70281937875,
9606.641332716314,
9704.938680729152
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 14446.036983118005,
"scoreError" : 45.60906912772189,
"scoreConfidence" : [
14400.427913990283,
14491.646052245727
],
"scorePercentiles" : {
"0.0" : 14431.447769599052,
"50.0" : 14443.42499730463,
"90.0" : 14463.28291320864,
"95.0" : 14463.28291320864,
"99.0" : 14463.28291320864,
"99.9" : 14463.28291320864,
"99.99" : 14463.28291320864,
"99.999" : 14463.28291320864,
"99.9999" : 14463.28291320864,
"100.0" : 14463.28291320864
},
"scoreUnit" : "ops/s",
"rawData" : [
[
14463.28291320864,
14431.447769599052,
14450.709342271415,
14441.319893206299,
14443.42499730463
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindMapBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1409.4517553770906,
"scoreError" : 79.83118518372017,
"scoreConfidence" : [
1329.6205701933704,
1489.2829405608109
],
"scorePercentiles" : {
"0.0" : 1380.5621298703932,
"50.0" : 1406.9664972827895,
"90.0" : 1431.921360845381,
"95.0" : 1431.921360845381,
"99.0" : 1431.921360845381,
"99.9" : 1431.921360845381,
"99.99" : 1431.921360845381,
"99.999" : 1431.921360845381,
"99.9999" : 1431.921360845381,
"100.0" : 1431.921360845381
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1400.9829886220186,
1406.9664972827895,
1426.8258002648715,
1431.921360845381,
1380.5621298703932
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.NarrowBindMapBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1734.64696933178,
"scoreError" : 5.8655731021158175,
"scoreConfidence" : [
1728.781396229664,
1740.5125424338958
],
"scorePercentiles" : {
"0.0" : 1732.5278757586884,
"50.0" : 1734.942155454497,
"90.0" : 1736.639933759334,
"95.0" : 1736.639933759334,
"99.0" : 1736.639933759334,
"99.9" : 1736.639933759334,
"99.99" : 1736.639933759334,
"99.999" : 1736.639933759334,
"99.9999" : 1736.639933759334,
"100.0" : 1736.639933759334
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1736.639933759334,
1733.9634730490443,
1734.942155454497,
1735.1614086373354,
1732.5278757586884
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.PingPongBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 2104.7007138344575,
"scoreError" : 95.10247691080939,
"scoreConfidence" : [
2009.598236923648,
2199.803190745267
],
"scorePercentiles" : {
"0.0" : 2082.486079920225,
"50.0" : 2091.9614478311855,
"90.0" : 2143.4807396473398,
"95.0" : 2143.4807396473398,
"99.0" : 2143.4807396473398,
"99.9" : 2143.4807396473398,
"99.99" : 2143.4807396473398,
"99.999" : 2143.4807396473398,
"99.9999" : 2143.4807396473398,
"100.0" : 2143.4807396473398
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2082.486079920225,
2143.4807396473398,
2091.1056424811336,
2091.9614478311855,
2114.4696592924047
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.PingPongBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 2176.2682911427737,
"scoreError" : 54.11096546359563,
"scoreConfidence" : [
2122.157325679178,
2230.3792566063694
],
"scorePercentiles" : {
"0.0" : 2152.60076574638,
"50.0" : 2178.840780445376,
"90.0" : 2190.2248969307752,
"95.0" : 2190.2248969307752,
"99.0" : 2190.2248969307752,
"99.9" : 2190.2248969307752,
"99.99" : 2190.2248969307752,
"99.999" : 2190.2248969307752,
"99.9999" : 2190.2248969307752,
"100.0" : 2190.2248969307752
},
"scoreUnit" : "ops/s",
"rawData" : [
[
2181.031249169025,
2178.6437634223116,
2178.840780445376,
2152.60076574638,
2190.2248969307752
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ProducerConsumerBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1770.110737813077,
"scoreError" : 79.37999855494206,
"scoreConfidence" : [
1690.7307392581351,
1849.490736368019
],
"scorePercentiles" : {
"0.0" : 1745.7648664216713,
"50.0" : 1776.44406183085,
"90.0" : 1792.9231721357385,
"95.0" : 1792.9231721357385,
"99.0" : 1792.9231721357385,
"99.9" : 1792.9231721357385,
"99.99" : 1792.9231721357385,
"99.999" : 1792.9231721357385,
"99.9999" : 1792.9231721357385,
"100.0" : 1792.9231721357385
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1751.3536874406016,
1792.9231721357385,
1745.7648664216713,
1776.44406183085,
1784.0679012365238
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.ProducerConsumerBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1730.5933967308563,
"scoreError" : 59.22541460118039,
"scoreConfidence" : [
1671.367982129676,
1789.8188113320366
],
"scorePercentiles" : {
"0.0" : 1716.9093196194372,
"50.0" : 1725.7617603147503,
"90.0" : 1756.9149433862842,
"95.0" : 1756.9149433862842,
"99.0" : 1756.9149433862842,
"99.9" : 1756.9149433862842,
"99.99" : 1756.9149433862842,
"99.999" : 1756.9149433862842,
"99.9999" : 1756.9149433862842,
"100.0" : 1756.9149433862842
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1756.9149433862842,
1724.2035317657574,
1725.7617603147503,
1729.1774285680528,
1716.9093196194372
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SemaphoreBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1247.7638031185106,
"scoreError" : 149.0038993918265,
"scoreConfidence" : [
1098.7599037266841,
1396.7677025103371
],
"scorePercentiles" : {
"0.0" : 1188.560901626186,
"50.0" : 1262.4302160087368,
"90.0" : 1282.4770853581701,
"95.0" : 1282.4770853581701,
"99.0" : 1282.4770853581701,
"99.9" : 1282.4770853581701,
"99.99" : 1282.4770853581701,
"99.999" : 1282.4770853581701,
"99.9999" : 1282.4770853581701,
"100.0" : 1282.4770853581701
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1230.135163314513,
1275.2156492849474,
1282.4770853581701,
1262.4302160087368,
1188.560901626186
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SemaphoreBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1237.5889967811029,
"scoreError" : 57.62211567650283,
"scoreConfidence" : [
1179.9668811046001,
1295.2111124576056
],
"scorePercentiles" : {
"0.0" : 1220.7535471491763,
"50.0" : 1231.150742368708,
"90.0" : 1255.631101860429,
"95.0" : 1255.631101860429,
"99.0" : 1255.631101860429,
"99.9" : 1255.631101860429,
"99.99" : 1255.631101860429,
"99.999" : 1255.631101860429,
"99.9999" : 1255.631101860429,
"100.0" : 1255.631101860429
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1229.4429910173756,
1231.150742368708,
1255.631101860429,
1250.9666015098248,
1220.7535471491763
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SuspensionBench.forkKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 55756.44616331726,
"scoreError" : 12836.220373152511,
"scoreConfidence" : [
42920.22579016475,
68592.66653646977
],
"scorePercentiles" : {
"0.0" : 51086.20034930478,
"50.0" : 55292.74729959203,
"90.0" : 60167.26431486013,
"95.0" : 60167.26431486013,
"99.0" : 60167.26431486013,
"99.9" : 60167.26431486013,
"99.99" : 60167.26431486013,
"99.999" : 60167.26431486013,
"99.9999" : 60167.26431486013,
"100.0" : 60167.26431486013
},
"scoreUnit" : "ops/s",
"rawData" : [
[
54954.697740308446,
51086.20034930478,
55292.74729959203,
57281.32111252092,
60167.26431486013
]
]
},
"secondaryMetrics" : {
}
},
{
"jmhVersion" : "1.36",
"benchmark" : "kyo.bench.SuspensionBench.syncKyo",
"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" : 5,
"measurementTime" : "1 s",
"measurementBatchSize" : 1,
"primaryMetric" : {
"score" : 1121461.1521008385,
"scoreError" : 7535.318681700932,
"scoreConfidence" : [
1113925.8334191376,
1128996.4707825393
],
"scorePercentiles" : {
"0.0" : 1119175.1623870004,
"50.0" : 1121016.5090854638,
"90.0" : 1124264.3065217377,
"95.0" : 1124264.3065217377,
"99.0" : 1124264.3065217377,
"99.9" : 1124264.3065217377,
"99.99" : 1124264.3065217377,
"99.999" : 1124264.3065217377,
"99.9999" : 1124264.3065217377,
"100.0" : 1124264.3065217377
},
"scoreUnit" : "ops/s",
"rawData" : [
[
1119175.1623870004,
1124264.3065217377,
1120416.4162820268,
1121016.5090854638,
1122433.366227963
]
]
},
"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: 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,68,3,'all')
f(1,0,68,1,'java/lang/Thread.run')
f(2,0,68,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,68,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,57,1,'java/util/concurrent/FutureTask.run')
f(5,0,57,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,57,1,'java/util/concurrent/FutureTask.run')
f(7,0,57,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,57,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,57,1,'java/lang/reflect/Method.invoke')
f(10,0,57,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,57,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,57,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,57,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,57,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,57,1,'kyo/bench/Bench.forkKyo')
f(16,0,14,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,0,14,2,'kyo.bench.Bench$$anon$1')
f(16,14,36,1,'kyo/bench/Bench.runLoop$2')
f(17,14,16,1,'kyo/bench/Bench$$anon$1.apply')
f(18,14,2,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,14,2,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c82730.apply')
f(20,14,2,1,'kyo/bench/Bench.$anonfun$2')
f(21,14,2,1,'kyo/concurrent/fibers$Fiber.block')
f(22,14,2,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,16,14,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,16,14,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,16,14,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c3fa58.apply')
f(21,16,14,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,16,14,2,'kyo.concurrent.scheduler.IOTask')
f(17,30,20,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,30,20,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,30,20,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,30,20,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,30,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,30,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,30,1,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,31,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,31,4,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,35,8,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,43,7,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,43,7,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,43,7,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,50,7,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,50,7,1,'kyo/locals$Locals$.save')
f(18,50,7,2,'kyo.locals$Locals$$anon$3')
f(4,57,11,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23070.run')
f(5,57,11,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,57,11,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,57,2,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,57,2,1,'java/util/AbstractQueue.add')
f(9,57,2,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.offer')
f(10,57,2,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.producerChunkForIndex')
f(11,57,2,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.appendNextChunks')
f(12,57,2,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.newOrPooledChunk')
f(13,57,2,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(14,57,2,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(15,57,1,2,'org.jctools.queues.MpmcUnboundedXaddChunk')
f(15,58,1,1,'org/jctools/queues/MpmcUnboundedXaddChunk.<init>')
f(16,58,1,1,'org/jctools/queues/MpUnboundedXaddChunk.<init>')
f(17,58,1,1,'org/jctools/util/UnsafeRefArrayAccess.allocateRefArray')
f(18,58,1,2,'java.lang.Object[]')
f(7,59,9,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,59,9,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,59,9,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,59,9,1,'scala/runtime/ObjectRef.create')
f(11,59,9,2,'scala.runtime.ObjectRef')
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: 720px}
</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(45);
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,328,3,'all')
f(1,0,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,2,3,'thread_native_entry(Thread*)')
f(3,0,2,4,'Thread::call_run()')
f(4,0,2,4,'JavaThread::thread_main_inner()')
f(5,0,2,4,'CompileBroker::compiler_thread_loop()')
f(6,0,2,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,2,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,2,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseChaitin::Register_Allocate()')
f(11,0,1,4,'PhaseAggressiveCoalesce::insert_copies(Matcher&)')
f(9,1,1,4,'Compile::Optimize()')
f(10,1,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,1,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,1,1,4,'PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)')
f(13,1,1,4,'PhaseIdealLoop::split_if_with_blocks_pre(Node*)')
f(14,1,1,4,'PhaseIdealLoop::has_local_phi_input(Node*)')
f(15,1,1,4,'PhaseIdealLoop::get_ctrl(Node*) [clone .isra.0]')
f(1,2,326,1,'java/lang/Thread.run')
f(2,2,326,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,2,326,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,2,103,1,'java/util/concurrent/FutureTask.run')
f(5,2,103,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,2,103,1,'java/util/concurrent/FutureTask.run')
f(7,2,103,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,2,103,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,2,103,1,'java/lang/reflect/Method.invoke')
f(10,2,103,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,2,103,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,2,103,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,2,103,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,2,103,1,'kyo/bench/jmh_generated/BroadFlatMapBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,2,103,1,'kyo/bench/Bench.forkKyo',1,0,0)
f(16,2,103,1,'kyo/bench/Bench.runLoop$2',1,0,0)
f(17,2,58,1,'kyo/bench/Bench$$anon$1.apply')
f(18,2,58,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,2,58,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,3,56,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c3fa58.apply',2,0,0)
f(21,3,56,1,'kyo/concurrent/fibers$Fibers.$anonfun$4',2,0,0)
f(22,5,54,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,5,54,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,5,54,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,5,54,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,5,54,1,'jdk/internal/misc/Unsafe.unpark')
f(27,6,1,3,'Unsafe_Unpark')
f(28,6,1,3,'pthread_mutex_lock')
f(27,7,52,3,'pthread_cond_signal')
f(28,7,52,5,'entry_SYSCALL_64_after_hwframe')
f(29,7,52,5,'do_syscall_64')
f(30,8,50,5,'__x64_sys_futex')
f(31,9,49,5,'do_futex')
f(32,9,49,5,'futex_wake')
f(33,12,2,5,'mark_wake_futex')
f(33,14,44,5,'wake_up_q')
f(34,14,44,5,'_raw_spin_unlock_irqrestore')
f(30,58,1,5,'syscall_exit_to_user_mode_prepare')
f(20,59,1,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',1,0,0)
f(21,59,1,2,'kyo/core$internal$KyoCont.<init>',1,0,0)
f(17,60,45,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(18,60,45,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(19,60,45,1,'kyo/concurrent/scheduler/IOPromise.block',1,0,0)
f(20,61,44,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,61,44,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,61,44,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,64,40,1,'java/util/concurrent/locks/LockSupport.park')
f(24,64,40,1,'jdk/internal/misc/Unsafe.park')
f(25,65,2,3,'Unsafe_Park')
f(26,65,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,65,1,5,'entry_SYSCALL_64_after_hwframe')
f(28,65,1,5,'do_syscall_64')
f(29,65,1,5,'syscall_enter_from_user_mode')
f(26,66,1,4,'Parker::park(bool, long)')
f(27,66,1,4,'JavaThread::is_interrupted(bool)')
f(25,67,36,3,'[unknown]')
f(26,67,36,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,69,34,5,'entry_SYSCALL_64_after_hwframe')
f(28,69,34,5,'do_syscall_64')
f(29,69,28,5,'__x64_sys_futex')
f(30,69,28,5,'do_futex')
f(31,70,27,5,'futex_wait')
f(32,73,24,5,'futex_wait_queue_me')
f(33,73,24,5,'schedule')
f(34,73,24,5,'__schedule')
f(35,74,23,5,'finish_task_switch.isra.0')
f(29,97,6,5,'syscall_exit_to_user_mode')
f(30,97,6,5,'exit_to_user_mode_prepare')
f(31,97,6,5,'exit_to_user_mode_loop')
f(32,97,6,5,'__rseq_handle_notify_resume')
f(33,99,1,5,'__put_user_nocheck_8')
f(33,100,3,5,'rseq_ip_fixup')
f(34,101,1,5,'__get_user_8')
f(34,102,1,5,'rseq_get_rseq_cs.isra.0')
f(25,103,1,4,'java_lang_Thread::set_thread_status(oopDesc*, JavaThreadStatus)')
f(23,104,1,2,'kyo/concurrent/scheduler/IOPromise$$anon$1.tryAcquireShared',1,0,0)
f(4,105,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e228.run')
f(5,105,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,105,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,105,1,1,'java/lang/Thread.sleep')
f(8,105,1,3,'[unknown]')
f(9,105,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,105,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,105,1,5,'do_syscall_64')
f(12,105,1,5,'__x64_sys_futex')
f(13,105,1,5,'do_futex')
f(14,105,1,5,'futex_wait')
f(15,105,1,5,'futex_wait_queue_me')
f(16,105,1,5,'schedule')
f(17,105,1,5,'__schedule')
f(18,105,1,5,'finish_task_switch.isra.0')
f(4,106,222,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23070.run')
f(5,106,222,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,106,222,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,106,153,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,107,152,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,107,110,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,107,110,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,107,110,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e300.apply')
f(12,107,110,1,'kyo/bench/Bench.$anonfun$1')
f(13,107,110,1,'kyo/bench/Bench.kyoBenchFiber')
f(14,107,110,1,'kyo/bench/BroadFlatMapBench.kyoBench')
f(15,107,110,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(16,107,48,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(17,107,48,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(18,107,48,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(19,107,48,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(20,108,15,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(21,108,15,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(22,108,15,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(23,108,15,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,108,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,108,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(26,108,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,108,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,108,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,108,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,108,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,108,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(32,108,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(33,108,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(31,109,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,109,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,109,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,109,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(24,110,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,110,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,110,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,110,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,110,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,110,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,110,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,110,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,110,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,110,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,110,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,110,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,110,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,110,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,110,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(39,110,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,110,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,110,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,111,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,111,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(39,111,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(40,111,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(41,111,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,111,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,112,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,112,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,112,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,112,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,112,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,112,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,112,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,112,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,112,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(38,112,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,112,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,113,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,113,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,113,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,113,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,113,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,113,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,113,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,113,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,113,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,113,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(35,113,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(36,114,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,114,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,115,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,115,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(32,115,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(33,115,3,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(34,116,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,116,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,116,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,116,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,116,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,116,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,116,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,117,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,117,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,119,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,119,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,119,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,119,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,119,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,119,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,119,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,119,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,119,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,119,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,119,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(37,119,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,119,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,119,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,119,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(41,119,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,119,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,119,1,2,'scala/math/BigInt$.apply',1,0,0)
f(44,119,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,120,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,120,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,120,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,120,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,120,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,120,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,120,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,120,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,120,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(36,120,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,120,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,120,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,120,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,121,1,2,'scala/math/BigInt$.apply',1,0,0)
f(28,122,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,122,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,122,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,122,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,122,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,122,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,122,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,122,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,122,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,122,1,2,'scala/math/BigInt$.apply',1,0,0)
f(20,123,32,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(21,123,14,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(22,123,14,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(23,123,14,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(24,123,14,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,123,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,123,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,123,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,123,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,123,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,123,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(31,124,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,124,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,124,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,124,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,124,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,124,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,124,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,124,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,124,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,124,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(29,125,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,125,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,125,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,125,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,125,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,125,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(35,125,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(36,125,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(30,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,126,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,126,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,126,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,126,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,126,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,126,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(25,127,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,127,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,127,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,127,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,127,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,127,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,127,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,127,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,127,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,127,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,127,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(36,127,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,127,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,128,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,128,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,128,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,128,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,128,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,128,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,128,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,128,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,128,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,129,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,129,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,129,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,129,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,129,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,129,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,130,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,130,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,131,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,131,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,131,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,131,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,131,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,131,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,131,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,131,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,131,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,131,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,131,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,131,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,131,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(39,131,1,2,'scala/math/BigInt.<init>',1,0,0)
f(31,132,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,132,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,132,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,132,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,132,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,132,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,132,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,133,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,133,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,134,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,134,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,134,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,134,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,134,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,134,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,134,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,134,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,135,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,135,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,135,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,135,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(25,136,1,2,'scala/math/BigInt$.apply',1,0,0)
f(21,137,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,137,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,137,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(24,137,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,137,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,137,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,137,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,137,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,137,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,137,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,137,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,137,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,137,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,137,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,137,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,137,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,138,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,138,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,138,1,2,'scala/math/BigInt.<init>',1,0,0)
f(30,139,1,2,'scala/math/BigInt$.apply',1,0,0)
f(26,140,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,140,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,140,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,140,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,140,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,140,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,140,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,140,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,140,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,140,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,140,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,141,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,141,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,141,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,141,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,141,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(38,141,1,2,'scala/math/BigInt.<init>',1,0,0)
f(22,142,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,142,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(24,142,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(25,142,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,142,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,142,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,142,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,142,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,142,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,142,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,142,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,142,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,142,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,142,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,143,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,143,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,143,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,143,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,143,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,144,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,144,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,144,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,144,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,144,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,144,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,144,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(35,144,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(33,145,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,145,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(23,146,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,147,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,147,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(26,147,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,147,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,147,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,147,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,147,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,147,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,147,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,147,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,147,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,147,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,147,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(39,147,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,147,1,2,'scala/math/BigInt$.apply',1,0,0)
f(43,147,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,148,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,148,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,148,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,148,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,148,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,148,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,149,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,149,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,149,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(24,150,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,150,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,150,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,150,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,150,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,150,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,150,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,150,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,150,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,150,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,150,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(35,150,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d44400.newInvokeSpecial',1,0,0)
f(36,150,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.<init>',1,0,0)
f(25,151,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,151,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,151,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,151,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,151,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,151,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,151,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,151,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,151,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,152,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,152,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,152,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,152,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,152,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,152,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,152,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,152,1,2,'scala/math/BigInt$.apply',1,0,0)
f(28,153,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,153,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,154,1,2,'scala/math/BigInt$.apply',1,0,0)
f(23,154,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(16,155,62,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(17,155,20,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(18,155,20,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(19,155,20,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(20,155,20,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(21,155,12,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(22,155,12,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(23,155,12,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(24,155,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,155,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,155,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,155,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,155,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,155,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,155,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,155,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,155,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,155,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,155,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(35,155,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,155,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,156,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,156,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,156,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,156,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,157,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,157,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,157,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,158,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,158,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(27,158,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(28,158,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(29,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,159,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,159,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,159,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,159,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,159,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,160,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,160,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,160,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,160,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,160,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,160,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,160,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,160,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,161,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,161,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(29,161,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(30,161,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(31,162,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,162,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,162,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,162,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,162,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,163,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,163,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,163,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,163,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,163,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,163,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,163,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(35,163,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(34,164,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,164,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,165,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,165,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(31,165,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',2,0,0)
f(32,166,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(21,167,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,167,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,167,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(24,167,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,167,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,167,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,167,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,167,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,167,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,167,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,167,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,167,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,167,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(36,167,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,168,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,168,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,168,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,168,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,168,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,168,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,168,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,168,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,168,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,168,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,168,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,168,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(38,168,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d44400.newInvokeSpecial',1,0,0)
f(39,168,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.<init>',1,0,0)
f(27,169,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,169,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(29,169,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(30,170,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,170,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,170,1,2,'scala/math/BigInt$.apply',1,0,0)
f(28,171,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,171,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,172,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,172,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,172,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,172,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(26,172,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,172,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,172,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,172,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,172,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,172,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,172,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(24,173,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,173,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,173,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,173,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,173,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,173,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,173,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,173,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,173,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,173,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,173,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,173,1,2,'scala/math/BigInt.<init>',1,0,0)
f(26,174,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,174,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,174,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,174,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,174,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,174,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,174,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,174,1,2,'scala/math/BigInt$.apply',1,0,0)
f(17,175,42,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(18,175,17,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(19,175,17,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(20,175,17,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(21,175,17,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,175,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,175,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(24,175,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,175,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,175,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,175,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,175,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,175,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,175,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,175,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,175,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,175,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,175,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,175,1,2,'scala/math/BigInt$.apply',1,0,0)
f(27,176,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,176,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(29,176,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(30,176,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(31,177,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,177,1,2,'scala/math/BigInt$.apply',1,0,0)
f(28,178,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,178,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,178,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,179,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,179,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(24,179,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(25,179,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,179,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,179,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,179,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,179,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,179,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,179,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,179,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,179,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,179,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,180,1,2,'scala/math/BigInt$.apply',1,0,0)
f(23,181,11,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,181,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,181,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(26,181,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,181,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,181,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,181,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,181,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,181,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,181,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,181,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,181,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,181,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,181,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,181,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,181,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,182,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,182,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,182,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,182,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,182,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,182,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(38,182,1,2,'scala/math/BigInt.<init>',1,0,0)
f(28,183,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,184,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,184,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,184,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,184,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,184,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,184,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,184,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,184,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,184,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,184,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,184,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,184,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,185,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,185,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,185,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,185,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,185,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,185,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,185,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,185,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,185,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(38,185,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(39,185,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$1',1,0,0)
f(25,186,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,186,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,186,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,186,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,186,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,186,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,186,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,186,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,186,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,186,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,186,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(36,186,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,186,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,186,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,187,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,187,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,187,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,187,2,2,'scala/math/BigInt$.apply',2,0,0)
f(34,188,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,188,1,2,'scala/math/BigInt.<init>',1,0,0)
f(26,189,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,189,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,189,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,189,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,189,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,189,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,189,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,189,2,2,'scala/math/BigInt$.apply',2,0,0)
f(34,190,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,190,1,2,'scala/math/BigInt.<init>',1,0,0)
f(27,191,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,191,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,191,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,191,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(18,192,25,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(19,192,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(20,192,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(21,192,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(22,192,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,192,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(24,192,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(25,192,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,192,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,192,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,192,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,192,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,192,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,192,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,192,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,192,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,192,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,192,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,192,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,192,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,193,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,193,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,194,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,194,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,194,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,194,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,194,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,195,1,2,'scala/math/BigInt$.apply',1,0,0)
f(23,196,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,196,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,196,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(26,196,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,196,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,196,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,196,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(30,196,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,196,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,196,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(34,196,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,197,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,197,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,197,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,197,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,197,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(24,198,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,198,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,198,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,198,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(28,198,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(29,198,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(19,199,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(20,199,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(21,199,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(22,199,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(23,199,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,199,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,199,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,199,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,199,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,199,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,199,1,2,'scala/math/BigInt$.apply',1,0,0)
f(25,200,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,200,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,200,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,200,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,200,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,200,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,200,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(32,200,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,200,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,200,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,200,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,200,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(37,200,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d44400.newInvokeSpecial',1,0,0)
f(38,200,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.<init>',1,0,0)
f(30,201,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,201,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,201,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,202,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,202,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,203,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,203,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,203,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,203,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(20,204,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(21,204,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(22,204,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(23,204,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(24,204,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,204,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,204,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,204,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,204,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,204,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(25,205,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,205,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,205,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,205,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,205,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,205,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,205,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,205,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(33,205,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,205,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,205,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,205,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(37,205,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,205,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,205,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,205,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,206,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,206,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,206,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,206,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(31,206,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(21,207,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,207,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,207,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(24,207,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,207,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,207,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,207,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(28,207,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,207,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,207,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,207,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,207,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,207,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,207,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,207,1,2,'scala/math/BigInt.<init>',1,0,0)
f(26,208,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,208,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(28,208,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',1,0,0)
f(29,208,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(27,209,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,209,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,209,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,209,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,209,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(22,210,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,210,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(24,210,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(25,210,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,210,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,210,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,210,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(29,210,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,210,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,211,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,212,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(25,212,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply',2,0,0)
f(26,213,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(27,214,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,214,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,214,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,215,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,215,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,215,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(27,215,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,215,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,215,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,215,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$56.0x0000000800d45000.apply')
f(31,215,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,215,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,215,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,215,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,215,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(25,216,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,216,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,216,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,216,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(9,217,42,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,217,42,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,217,42,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,217,42,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,217,42,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,217,42,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,217,42,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,217,42,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,217,42,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,217,42,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,217,42,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,217,42,1,'jdk/internal/misc/Unsafe.unpark')
f(21,219,1,4,'ThreadsListHandle::~ThreadsListHandle()')
f(21,220,1,3,'Unsafe_Unpark')
f(22,220,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ul>::oop_access_barrier(void*)')
f(21,221,38,3,'pthread_cond_signal')
f(22,222,37,5,'entry_SYSCALL_64_after_hwframe')
f(23,222,37,5,'do_syscall_64')
f(24,222,37,5,'__x64_sys_futex')
f(25,222,37,5,'do_futex')
f(26,222,37,5,'futex_wake')
f(27,222,37,5,'wake_up_q')
f(28,222,37,5,'_raw_spin_unlock_irqrestore')
f(7,259,6,2,'kyo/concurrent/scheduler/Queue.poll',6,0,0)
f(8,260,5,2,'kyo/concurrent/scheduler/Queue.modify',5,0,0)
f(9,261,1,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',1,0,0)
f(10,261,1,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',1,0,0)
f(9,262,3,2,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d46f18.apply',3,0,0)
f(10,262,3,2,'kyo/concurrent/scheduler/Queue.poll$$anonfun$1',3,0,0)
f(11,262,1,2,'kyo/concurrent/scheduler/Queue.isEmpty',1,0,0)
f(11,263,2,2,'scala/collection/mutable/PriorityQueue.dequeue',2,0,0)
f(12,264,1,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_size0',1,0,0)
f(13,264,1,2,'scala/collection/mutable/ArrayBuffer.size0',1,0,0)
f(7,265,63,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,265,63,1,'kyo/concurrent/scheduler/Worker.park')
f(9,265,63,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,265,63,1,'jdk/internal/misc/Unsafe.park')
f(11,269,5,3,'Unsafe_Park')
f(12,271,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,272,2,5,'entry_SYSCALL_64_after_hwframe')
f(14,272,1,5,'__x64_sys_futex')
f(14,273,1,5,'do_syscall_64')
f(15,273,1,5,'syscall_enter_from_user_mode')
f(11,274,54,3,'[unknown]')
f(12,274,51,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,276,49,5,'entry_SYSCALL_64_after_hwframe')
f(14,276,1,5,'__x64_sys_futex')
f(14,277,48,5,'do_syscall_64')
f(15,277,39,5,'__x64_sys_futex')
f(16,277,38,5,'do_futex')
f(17,277,38,5,'futex_wait')
f(18,278,33,5,'futex_wait_queue_me')
f(19,279,5,5,'hrtimer_sleeper_start_expires')
f(20,279,4,5,'_raw_spin_unlock_irqrestore')
f(20,283,1,5,'hrtimer_start_range_ns')
f(21,283,1,5,'_raw_spin_lock_irqsave')
f(19,284,27,5,'schedule')
f(20,286,25,5,'__schedule')
f(21,289,22,5,'finish_task_switch.isra.0')
f(18,311,3,5,'futex_wait_setup')
f(18,314,1,5,'hrtimer_cancel')
f(19,314,1,5,'_raw_spin_unlock_irqrestore')
f(16,315,1,5,'get_timespec64')
f(15,316,1,5,'do_futex')
f(15,317,3,5,'syscall_enter_from_user_mode')
f(15,320,5,5,'syscall_exit_to_user_mode')
f(16,320,5,5,'exit_to_user_mode_prepare')
f(17,320,5,5,'exit_to_user_mode_loop')
f(18,321,2,5,'__rseq_handle_notify_resume')
f(19,321,1,5,'__put_user_nocheck_8')
f(19,322,1,5,'rseq_ip_fixup')
f(18,323,2,5,'mem_cgroup_handle_over_high')
f(12,325,3,3,'pthread_cond_timedwait')
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: 16px}
</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(1);
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,0,2,'all')
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: 784px}
</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(49);
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,499,3,'all')
f(1,0,14,3,'[unknown_Java]')
f(2,0,14,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(1,14,485,1,'java/lang/Thread.run')
f(2,14,485,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,14,485,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,14,485,1,'java/util/concurrent/FutureTask.run')
f(5,14,485,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,14,485,1,'java/util/concurrent/FutureTask.run')
f(7,14,485,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,14,485,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,14,485,1,'java/lang/reflect/Method.invoke')
f(10,14,485,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,14,485,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,14,485,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,14,485,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,14,485,1,'kyo/bench/jmh_generated/BroadFlatMapBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,14,485,1,'kyo/bench/Bench.syncKyo')
f(16,14,485,1,'kyo/bench/BroadFlatMapBench.kyoBench')
f(17,14,485,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(18,14,159,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(19,14,159,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(20,14,159,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(21,15,158,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,15,63,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,15,63,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(24,15,63,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,15,63,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,15,25,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,15,25,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,15,25,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,15,25,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,15,11,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,15,11,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,15,11,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,15,11,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,15,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,15,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,15,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,15,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,15,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(39,15,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(40,15,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(41,15,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,15,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,15,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,16,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,16,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(40,16,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(41,17,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,17,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,17,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(44,17,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(45,17,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(46,17,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(47,17,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,18,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,18,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,18,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,19,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,20,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,20,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,20,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,20,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,20,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(40,20,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(39,21,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,21,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,21,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(39,22,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,22,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,23,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,23,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,23,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,23,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,23,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,23,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(41,23,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(42,23,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(43,23,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,23,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,24,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,24,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,24,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,24,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,24,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,24,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,24,1,2,'scala/math/BigInt$.apply',1,0,0)
f(43,24,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(44,24,1,2,'scala/math/BigInt.<init>',1,0,0)
f(37,25,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,25,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,26,14,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,26,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,26,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,26,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,26,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,27,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,27,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,27,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,27,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,27,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(40,27,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(31,28,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,28,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,28,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,28,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,28,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,28,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,28,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,28,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,29,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,29,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,29,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,29,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,29,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,29,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,29,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,30,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,30,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,30,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,30,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,30,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,30,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,30,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,30,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,30,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,30,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,30,1,2,'scala/math/BigInt$.apply',1,0,0)
f(43,30,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(44,30,1,2,'scala/math/BigInt.<init>',1,0,0)
f(37,31,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,31,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,32,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,32,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,32,1,2,'scala/math/BigInt.<init>',1,0,0)
f(33,33,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,33,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,33,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,33,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,33,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,33,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,33,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,33,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,33,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,33,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,33,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,34,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,34,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(36,34,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(37,35,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,36,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,37,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,37,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,37,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,38,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,38,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,39,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,39,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,40,38,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,40,16,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,40,16,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,40,16,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,40,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,41,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,41,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,41,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,41,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,41,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,41,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,41,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,41,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,41,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,41,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,41,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,42,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,42,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,42,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,42,3,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(39,43,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,43,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,43,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,43,1,2,'scala/math/BigInt$.apply',1,0,0)
f(43,43,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(44,43,1,2,'scala/math/BigInt.<init>',1,0,0)
f(41,44,1,2,'scala/math/BigInt$.apply',1,0,0)
f(42,44,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,45,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,45,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(38,45,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(39,45,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(37,46,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,46,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,47,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,47,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,47,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,47,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,47,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,47,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,47,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,47,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,47,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,47,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,47,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,47,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,48,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,48,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,49,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,49,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,49,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,50,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,50,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,51,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,51,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,51,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,51,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,51,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,51,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,52,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,52,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(39,52,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,53,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,53,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(40,53,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(41,53,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(33,54,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,55,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,55,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,55,1,2,'scala/math/BigInt.<init>',1,0,0)
f(27,56,22,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,56,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,56,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,56,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,56,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,56,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,56,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,56,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,56,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,56,1,2,'scala/math/BigInt$.apply',1,0,0)
f(42,56,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,57,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,57,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,57,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,57,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,57,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,58,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,58,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,58,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,59,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,59,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,59,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,59,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,59,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,59,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,60,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,60,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,60,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,60,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,60,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,60,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,60,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,60,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,60,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,60,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,61,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,61,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,61,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(28,62,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,62,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,62,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,62,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,62,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,62,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,62,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,62,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,63,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,64,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,64,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,66,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,67,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,67,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,67,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,67,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,67,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,67,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,68,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,68,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(31,68,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,69,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,69,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,69,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,69,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,69,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,69,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,70,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,70,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,70,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,70,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,70,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,70,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,70,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,70,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,70,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,71,2,2,'scala/math/BigInt$.apply',2,0,0)
f(37,71,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(31,73,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,73,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,74,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,74,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,76,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,76,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,76,1,2,'scala/math/BigInt.<init>',1,0,0)
f(34,77,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,77,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(22,78,95,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,78,36,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(24,78,36,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(25,79,35,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,79,35,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,79,10,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,79,10,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,79,10,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,79,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,79,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,79,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,79,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,79,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,79,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,79,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,79,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,79,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,79,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,79,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(41,79,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(42,79,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(43,79,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,79,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(45,79,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(46,79,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(47,79,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(48,79,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$1',1,0,0)
f(40,80,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,80,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,80,1,2,'scala/math/BigInt$.apply',1,0,0)
f(43,80,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(44,80,1,2,'scala/math/BigInt.<init>',1,0,0)
f(36,81,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,81,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,81,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(39,81,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(40,81,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(41,81,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,82,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,82,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,82,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,82,1,2,'scala/math/BigInt.<init>',1,0,0)
f(31,83,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,83,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,83,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,83,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,83,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,83,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,83,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,83,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,84,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,84,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,84,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,84,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,84,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,84,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,84,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,84,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,84,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,84,1,2,'scala/math/BigInt$.apply',1,0,0)
f(42,84,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(39,85,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,85,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,86,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,87,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,87,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,87,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,87,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,87,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,87,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,87,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,87,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,87,1,2,'scala/math/BigInt.<init>',1,0,0)
f(34,88,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,88,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,88,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,89,23,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,89,12,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,89,12,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,89,12,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,89,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,90,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,90,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,90,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,90,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,91,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,92,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,92,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,92,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,93,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,93,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,93,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,93,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,93,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,93,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,93,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,93,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,93,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(33,94,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,94,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,94,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,94,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,94,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,94,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,94,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,95,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,95,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,95,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,95,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,95,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,95,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,95,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,95,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,95,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,96,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,97,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,97,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,97,2,2,'scala/math/BigInt$.apply',2,0,0)
f(39,98,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,98,1,2,'scala/math/BigInt.<init>',1,0,0)
f(32,99,2,2,'scala/math/BigInt$.apply',2,0,0)
f(28,101,11,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,101,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,101,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,101,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,101,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,101,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,101,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,102,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,102,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,102,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,102,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,103,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,103,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,104,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,104,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(37,105,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,105,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,105,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,105,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,105,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,105,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,105,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,106,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,106,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,106,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,106,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(39,106,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(40,106,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(38,107,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,107,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,107,1,2,'scala/math/BigInt.<init>',1,0,0)
f(29,108,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,108,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,108,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,108,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,108,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,109,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,109,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,109,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,109,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,109,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,109,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,109,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,109,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,110,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,110,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,110,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,110,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,110,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,110,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,110,1,2,'scala/math/BigInt.<init>',1,0,0)
f(34,111,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,111,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,112,2,2,'scala/math/BigInt$.apply',2,0,0)
f(23,114,59,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,114,23,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,114,23,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(26,114,23,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,114,23,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,114,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,114,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,114,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,114,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,115,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,115,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,115,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,115,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,115,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,115,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,115,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,116,2,2,'scala/math/BigInt$.apply',2,0,0)
f(33,118,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,118,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,118,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,118,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,118,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,118,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,118,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,119,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,119,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,119,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,119,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,119,2,2,'scala/math/BigInt$.apply',2,0,0)
f(39,119,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(36,121,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,121,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,122,15,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,122,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,122,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,122,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,122,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,122,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,122,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,122,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,122,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,123,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,123,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(35,123,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(36,123,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(34,124,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,124,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,124,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,124,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,124,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,125,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,125,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,126,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,126,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,126,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,127,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,127,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,127,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,128,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,128,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,128,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,128,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,128,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,128,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,128,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,128,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,128,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,129,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,129,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,130,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,130,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,130,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,130,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,130,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,130,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,130,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(37,130,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,131,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,131,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,132,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,132,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,132,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,132,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(32,133,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,134,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,134,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,134,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(33,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,135,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,135,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,135,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,135,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,136,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,136,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(33,136,1,2,'scala/math/BigInt.<init>',1,0,0)
f(24,137,36,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,137,13,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,137,13,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(27,137,13,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,137,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,137,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,137,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,137,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,137,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,137,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,137,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,137,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,138,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,140,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,140,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,141,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,141,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,141,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,141,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,141,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,141,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,141,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,141,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,141,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(39,141,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(40,141,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(41,141,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,142,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,142,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,142,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(37,143,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,143,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,143,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,144,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,145,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,145,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(32,145,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(33,145,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(31,146,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,146,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,146,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,146,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,146,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,146,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,146,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,146,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,147,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,147,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,147,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,147,1,2,'scala/math/BigInt.<init>',1,0,0)
f(32,148,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,148,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,149,1,2,'scala/math/BigInt$.apply',1,0,0)
f(25,150,23,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,150,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,150,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,150,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,150,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,150,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,150,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,150,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,150,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,150,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,150,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,150,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,150,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,150,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,150,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,150,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,151,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,151,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,151,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,151,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,151,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,151,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,151,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,151,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,151,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,151,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,152,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,152,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,153,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,153,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,153,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,154,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,155,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,155,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,155,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,155,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,155,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,155,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(31,156,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,156,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,156,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,157,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,157,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,157,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,157,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,158,14,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,158,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,158,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,158,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,158,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,158,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,158,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,158,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,158,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,158,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,159,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,159,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,159,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,159,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,159,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,160,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,160,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,160,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,160,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(36,160,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',2,0,0)
f(37,160,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',2,0,0)
f(35,162,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,162,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,162,1,2,'scala/math/BigInt.<init>',1,0,0)
f(27,163,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,163,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(29,163,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(30,163,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(28,164,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,164,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,164,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,164,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,165,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,165,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(30,165,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(31,167,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,167,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,167,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,167,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,167,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,167,1,2,'scala/math/BigInt$.apply',1,0,0)
f(29,168,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,168,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,168,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,170,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,170,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,170,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,170,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,171,1,2,'scala/math/BigInt$.apply',1,0,0)
f(29,171,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,172,1,2,'scala/math/BigInt$.apply',1,0,0)
f(27,172,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(18,173,326,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(19,174,128,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(20,174,128,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(21,174,128,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(22,174,128,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,174,48,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(24,174,48,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(25,174,48,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(26,175,47,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,177,16,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,177,16,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,177,16,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,177,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,177,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(32,177,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(33,177,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(34,178,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,178,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,178,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,178,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,178,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,179,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,179,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,179,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,179,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,179,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,179,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(42,179,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,180,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,180,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,180,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,180,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,180,1,2,'scala/math/BigInt.<init>',1,0,0)
f(31,181,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,181,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,181,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,181,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,181,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,181,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(37,181,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(32,183,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,183,6,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',3,0,0)
f(34,183,6,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',3,0,0)
f(35,184,5,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',2,0,0)
f(36,186,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,187,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,187,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,187,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,187,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,187,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(42,187,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(43,187,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(44,187,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(45,187,1,2,'scala/math/BigInt$.apply',1,0,0)
f(46,187,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,188,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,188,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,188,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,188,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,188,1,2,'scala/math/BigInt$.apply',1,0,0)
f(42,188,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(33,189,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,189,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,189,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,189,2,2,'scala/math/BigInt$.apply',2,0,0)
f(37,189,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(35,191,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,191,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,192,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,192,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,193,27,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,193,10,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(29,193,10,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(30,193,10,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',2,0,0)
f(31,195,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,195,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,195,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,195,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,195,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,195,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,195,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,195,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,195,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,195,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(41,195,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(42,195,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(43,195,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,195,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,196,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,196,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,196,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,196,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,196,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,196,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,196,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,196,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,196,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,196,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,196,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,197,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,198,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,198,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,198,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,198,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,198,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,198,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,198,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,199,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,199,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,199,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,199,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,199,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,201,2,2,'scala/math/BigInt$.apply',2,0,0)
f(28,203,17,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,203,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,203,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,203,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,203,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,203,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,203,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,203,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,204,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,204,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,204,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,204,1,2,'scala/math/BigInt.<init>',1,0,0)
f(33,205,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,205,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,205,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,205,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,205,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,205,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,207,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,207,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,208,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,208,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,208,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,208,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,209,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,209,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,209,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,209,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,209,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,209,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,209,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(36,209,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(30,211,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,212,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,212,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,212,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,212,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,212,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,212,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,212,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,212,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,212,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,212,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,212,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,212,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,212,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,213,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,214,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,214,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,214,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,215,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,215,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,216,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,216,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,216,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,217,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,217,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,217,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,217,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,217,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,218,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,218,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,218,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,218,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,219,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,219,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,220,2,2,'scala/math/BigInt$.apply',2,0,0)
f(23,222,80,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,222,31,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,222,31,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(26,222,31,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,222,31,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,222,12,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,222,12,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,222,12,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,222,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,223,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,223,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,223,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,223,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,223,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,224,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,224,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,224,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,224,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,225,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,225,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,226,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,226,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,226,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,226,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,226,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,226,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,226,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,226,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,226,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,226,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,227,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,228,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,228,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,228,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,228,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,228,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,228,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,228,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,229,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,229,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,229,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,229,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,229,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,229,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,230,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,231,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,232,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,232,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,233,1,2,'scala/math/BigInt$.apply',1,0,0)
f(28,234,19,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,234,10,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,234,10,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,234,10,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,234,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,234,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,234,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,235,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,235,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,237,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,237,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,238,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,238,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(41,238,1,2,'scala/math/BigInt.<init>',1,0,0)
f(33,239,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,239,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,239,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,239,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,239,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,239,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,239,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(40,239,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(41,239,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(34,240,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,240,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,240,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,240,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,240,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,240,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,240,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,240,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,241,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,242,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,242,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,243,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,243,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,244,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,245,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,245,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,245,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,245,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,246,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,246,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,246,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,246,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,246,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,246,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,246,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,246,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,246,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,246,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,246,1,2,'scala/math/BigInt$.apply',1,0,0)
f(45,246,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,247,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,247,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,247,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,247,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,247,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,247,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,247,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,247,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,248,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,248,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,248,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,248,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,248,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,248,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,248,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,248,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,249,2,2,'scala/math/BigInt$.apply',2,0,0)
f(32,249,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(29,251,2,2,'scala/math/BigInt$.apply',2,0,0)
f(30,251,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(24,253,49,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,253,19,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(26,253,19,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(27,254,18,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,254,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,254,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,254,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,254,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,254,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,254,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,255,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,256,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,256,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(31,256,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,256,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(33,257,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,257,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,257,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,257,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,257,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,258,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,258,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,258,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,258,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,258,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,258,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,258,1,2,'scala/math/BigInt$.apply',1,0,0)
f(45,258,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,259,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,259,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,259,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,259,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,259,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,260,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,260,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,260,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,260,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,261,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,261,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,262,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,263,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,263,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,263,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,263,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,263,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,263,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,263,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,263,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,263,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(31,264,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,264,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,264,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,264,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,265,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,265,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,265,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,265,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,266,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,267,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,267,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,268,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,268,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,268,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,268,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,268,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,268,1,2,'scala/math/BigInt.<init>',1,0,0)
f(37,269,1,2,'scala/math/BigInt$.apply',1,0,0)
f(38,269,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(33,270,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,270,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,272,30,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,272,13,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,272,13,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,272,13,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,272,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,272,6,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(31,272,6,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(32,274,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,274,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,275,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,275,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,275,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,275,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,275,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,275,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,276,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,276,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,276,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,277,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,278,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,278,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,278,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,278,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,278,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,278,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,278,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,278,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,278,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,279,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,279,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,279,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,280,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,280,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(33,280,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(34,280,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',2,0,0)
f(32,282,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,282,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(34,282,2,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',2,0,0)
f(35,282,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',2,0,0)
f(31,284,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,284,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,285,15,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,285,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,285,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,285,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,285,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,285,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,285,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,285,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,285,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,285,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,285,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,285,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,285,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,285,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,286,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,287,4,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',3,0,0)
f(33,287,4,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',3,0,0)
f(34,289,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,290,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,290,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,290,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,290,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,290,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,291,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,291,1,2,'scala/math/BigInt$.apply',1,0,0)
f(27,292,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,293,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,293,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,293,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,293,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,293,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,293,2,2,'scala/math/BigInt$.apply',2,0,0)
f(34,293,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(28,295,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,295,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,295,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(31,296,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,296,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,296,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,296,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,297,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,298,2,2,'scala/math/BigInt$.apply',2,0,0)
f(29,298,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(26,300,2,2,'scala/math/BigInt$.apply',2,0,0)
f(27,300,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(19,302,197,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(20,302,81,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(21,302,81,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(22,302,81,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(23,302,81,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,302,23,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,302,23,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(26,302,23,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,302,23,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,303,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,303,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,303,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,303,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,303,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,303,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,303,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,303,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,303,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,303,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,303,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,303,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,306,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,306,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(38,306,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(39,306,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(40,306,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,306,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,307,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,307,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,307,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(33,308,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,309,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,309,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,309,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,309,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,309,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,310,15,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,310,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,310,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,310,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,310,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,310,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,310,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(33,311,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,311,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,311,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,311,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,311,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,312,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,312,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,312,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,312,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,312,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,312,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,312,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,312,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,312,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,312,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,312,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,312,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,312,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,312,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,312,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,312,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(45,312,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(46,312,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(47,312,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$1',1,0,0)
f(35,313,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,313,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,313,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,313,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(36,314,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,314,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(35,315,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,315,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,316,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,316,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,316,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,316,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,316,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,316,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,316,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,317,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,317,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,318,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,318,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,319,2,2,'scala/math/BigInt$.apply',2,0,0)
f(37,319,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(31,321,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,321,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',3,0,0)
f(33,321,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',3,0,0)
f(32,324,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,324,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,324,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,324,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,324,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,324,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,324,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,324,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,324,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,324,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(24,325,58,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,325,27,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,325,27,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(27,325,27,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,325,27,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,326,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,326,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,326,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,326,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,326,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,326,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,326,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,326,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,327,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,327,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(39,327,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(40,327,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(41,327,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,328,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,329,3,2,'scala/math/BigInt$.apply',3,0,0)
f(40,330,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(41,331,1,2,'scala/math/BigInt.<init>',1,0,0)
f(37,332,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,333,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,333,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,333,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,333,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,333,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,333,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,333,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(40,333,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(29,334,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,335,9,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,335,9,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,335,9,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,335,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,336,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,336,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,336,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,336,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,336,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,337,3,2,'scala/math/BigInt$.apply',3,0,0)
f(40,338,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(41,339,1,2,'scala/math/BigInt.<init>',1,0,0)
f(34,340,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,340,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(36,340,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(37,340,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',2,0,0)
f(35,342,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,342,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,342,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,342,2,2,'scala/math/BigInt$.apply',2,0,0)
f(39,342,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(40,343,1,2,'scala/math/BigInt.<init>',1,0,0)
f(30,344,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,345,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,345,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,345,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,345,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,345,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,345,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,346,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,346,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,346,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,346,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,346,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,346,1,2,'scala/math/BigInt.<init>',1,0,0)
f(31,347,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,347,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,347,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,348,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,348,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,348,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,349,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,349,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,349,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,349,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,349,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,349,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,349,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,349,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,350,2,2,'scala/math/BigInt$.apply',2,0,0)
f(32,350,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(25,352,31,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,353,14,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,353,14,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,353,14,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,353,14,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,353,6,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(31,353,6,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,353,6,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(33,354,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,355,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,355,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,356,2,2,'scala/math/BigInt$.apply',2,0,0)
f(37,356,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(35,358,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,358,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,359,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,360,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,360,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,360,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,360,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,360,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,360,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,360,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,360,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,360,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,360,1,2,'scala/math/BigInt.<init>',1,0,0)
f(31,361,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,361,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,361,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,362,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,362,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,362,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,362,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,362,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,362,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,362,1,2,'scala/math/BigInt.<init>',1,0,0)
f(32,363,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,363,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,363,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,363,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,364,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,364,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,365,2,2,'scala/math/BigInt$.apply',2,0,0)
f(32,365,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(26,367,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,367,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,367,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,367,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,367,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,369,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,369,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,369,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,369,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,369,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,369,2,2,'scala/math/BigInt$.apply',2,0,0)
f(37,369,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(31,371,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,371,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,371,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,371,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,371,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,371,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,372,11,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,372,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(29,372,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(30,372,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(28,373,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,373,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,373,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,373,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,373,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,373,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,373,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,373,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,374,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,374,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,374,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(35,374,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,375,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,375,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(36,375,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(37,375,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(28,376,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,376,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,376,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(31,377,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,377,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,377,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,377,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,377,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,377,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,378,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,378,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(29,379,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,380,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,380,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,380,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,380,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,380,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,381,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,381,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,381,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,381,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,381,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(30,382,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,382,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(20,383,116,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(21,384,48,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(22,384,48,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(23,384,48,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(24,384,48,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,384,17,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(26,384,17,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(27,384,17,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(28,385,16,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,386,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,386,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,386,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,386,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,386,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(34,386,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(35,387,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,387,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,387,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,387,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,387,2,2,'scala/math/BigInt$.apply',2,0,0)
f(40,387,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(33,389,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,389,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,389,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,389,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,389,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,389,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,390,1,2,'scala/math/BigInt$.apply',1,0,0)
f(40,390,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,391,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,391,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,392,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,392,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,393,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,393,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,393,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,393,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,393,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,393,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,393,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(36,393,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(35,395,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,396,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,396,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,396,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,396,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,396,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,396,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,396,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,396,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(36,397,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,397,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,397,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,397,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,397,1,2,'scala/math/BigInt.<init>',1,0,0)
f(36,398,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,398,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,399,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,399,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,399,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,399,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,400,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,400,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(25,401,31,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,401,13,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,401,13,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,401,13,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,401,13,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,401,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(31,401,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,402,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,402,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,402,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(35,402,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(36,402,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(37,402,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,402,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(39,402,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,403,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,403,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(36,403,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(37,403,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(34,404,1,2,'scala/math/BigInt$.apply',1,0,0)
f(30,405,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,405,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,405,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,405,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,405,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,405,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,405,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,405,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,405,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,405,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,405,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,406,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,406,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,407,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,407,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,408,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,408,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,409,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,409,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,409,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,410,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,410,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,411,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,411,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,411,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,411,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,411,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(41,411,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(42,411,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(43,411,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(44,411,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$1',1,0,0)
f(32,412,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,412,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,412,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,413,1,2,'scala/math/BigInt$.apply',1,0,0)
f(32,413,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,414,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,415,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,415,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,415,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,415,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,417,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,417,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,417,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,417,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,418,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,418,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,418,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,418,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,418,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,418,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,418,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,419,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,419,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,419,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,419,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,420,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,421,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,421,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,421,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,421,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,421,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(27,422,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,423,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,423,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,423,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,423,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,423,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,423,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,424,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,425,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,425,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,425,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,425,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,425,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,425,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,426,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,426,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(33,427,1,2,'scala/math/BigInt$.apply',1,0,0)
f(34,427,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,428,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,428,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,428,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,428,3,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(32,428,3,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(33,429,2,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(34,430,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,430,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,430,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,430,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,430,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,431,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,431,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,431,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(21,432,66,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(22,432,27,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(23,432,27,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(24,432,27,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(25,432,27,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,432,7,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,432,7,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,432,7,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,432,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,432,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,432,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,432,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,432,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,434,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,434,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,434,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,434,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,434,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(39,434,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(40,434,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(41,434,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(42,434,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(43,434,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(44,434,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(45,434,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(46,434,1,2,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(47,434,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$1',1,0,0)
f(35,435,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,435,2,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(37,435,2,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(38,436,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,436,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(40,436,1,2,'scala/math/BigInt$.apply',1,0,0)
f(41,436,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,437,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,437,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,437,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,437,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(32,438,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,439,19,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,439,4,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(28,439,4,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(29,441,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,441,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,441,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,442,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,442,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,442,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,442,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,442,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,442,1,2,'scala/math/BigInt.<init>',1,0,0)
f(27,443,15,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,444,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,444,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,444,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,444,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,444,5,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',2,0,0)
f(33,444,5,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',2,0,0)
f(34,445,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1',1,0,0)
f(35,446,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,447,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(37,447,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(38,447,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(39,447,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,448,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,449,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,449,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,449,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,449,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,449,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,449,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,449,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,449,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,449,1,2,'scala/math/BigInt.<init>',1,0,0)
f(33,450,2,2,'scala/math/BigInt$.apply',2,0,0)
f(34,450,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(28,452,6,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,452,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,452,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,452,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,452,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,454,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,454,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(35,454,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,455,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,456,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,456,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,457,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,457,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,457,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,457,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,457,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,457,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,457,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(36,457,1,2,'scala/math/BigInt.<init>',1,0,0)
f(26,458,1,2,'scala/math/BigInt$.apply',1,0,0)
f(22,459,39,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(23,459,18,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(24,459,18,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(25,459,18,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(26,459,18,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,459,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(28,459,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(29,459,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(30,459,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,459,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,459,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,459,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,459,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,459,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,459,1,2,'scala/math/BigInt$.apply',1,0,0)
f(37,459,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(31,460,7,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,460,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(33,460,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(34,461,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,461,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,461,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,461,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,462,1,2,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(38,463,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,463,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(32,464,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,465,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(34,465,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(35,465,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(36,465,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,465,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,466,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,466,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,466,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(36,466,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(37,466,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(38,466,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,467,10,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,467,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,467,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,467,4,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,467,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,467,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,467,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,467,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,467,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,469,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,469,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,469,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,470,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,470,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,470,1,2,'scala/math/BigInt.<init>',1,0,0)
f(28,471,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,471,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,471,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,471,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,471,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,471,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,471,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,471,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,471,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,472,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,472,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,472,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,472,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,472,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(30,473,2,2,'scala/math/BigInt$.apply',2,0,0)
f(31,473,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(32,473,2,2,'scala/math/BigInt.<init>',2,0,0)
f(28,475,2,2,'scala/math/BigInt$.apply',2,0,0)
f(29,475,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(23,477,20,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,477,8,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(25,477,8,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(26,477,8,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(27,477,8,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,477,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,477,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,477,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,477,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,477,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,477,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,477,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,477,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(36,477,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(37,477,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(38,477,1,2,'scala/math/BigInt$.apply',1,0,0)
f(39,477,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(40,477,1,2,'scala/math/BigInt.<init>',1,0,0)
f(32,478,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,478,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,478,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,478,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(36,478,1,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800ca4000.newInvokeSpecial',1,0,0)
f(37,478,1,2,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.<init>',1,0,0)
f(32,479,1,2,'scala/math/BigInt$.apply',1,0,0)
f(33,479,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,480,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,480,4,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2',1,0,0)
f(30,480,4,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply',1,0,0)
f(31,481,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,481,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,483,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,483,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,483,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,483,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(37,483,1,2,'scala/math/BigInt.<init>',1,0,0)
f(29,484,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,484,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,484,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,484,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(33,484,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(34,484,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(35,484,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(24,485,12,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(25,485,3,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(26,485,3,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(27,485,3,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(28,485,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(29,485,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(30,485,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(31,485,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(32,485,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,485,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,485,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,485,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,485,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(34,486,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,486,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(29,487,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,487,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,487,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,487,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,487,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,487,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,487,1,2,'scala/math/BigInt$.apply',1,0,0)
f(36,487,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(25,488,9,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(26,488,5,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(27,488,5,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(28,488,5,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(29,488,5,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,488,2,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(31,488,2,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(32,488,2,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(33,488,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,488,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(30,490,3,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(31,490,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(32,490,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(33,490,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(34,490,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(35,490,1,2,'scala/math/BigInt$.apply',1,0,0)
f(31,491,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,491,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,492,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,492,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,492,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(26,493,4,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,493,2,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(28,493,1,1,'kyo/bench/BroadFlatMapBench.kyo$bench$BroadFlatMapBench$$_$transformLoop$2')
f(29,493,1,1,'kyo/bench/BroadFlatMapBench$$Lambda$39.0x0000000800ca0760.apply')
f(30,493,1,1,'kyo/bench/BroadFlatMapBench.$anonfun$1')
f(31,493,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(32,493,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(33,493,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(34,493,1,2,'scala/math/BigInt$.apply',1,0,0)
f(35,493,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(28,494,1,1,'kyo/bench/BroadFlatMapBench.kyoFib$1')
f(27,495,2,2,'scala/math/BigInt$.apply',2,0,0)
f(28,495,2,2,'scala/math/BigInt$.getCached',2,0,0)
f(23,497,1,2,'scala/math/BigInt$.apply',1,0,0)
f(24,497,1,2,'scala/math/BigInt$.getCached',1,0,0)
f(21,498,1,2,'scala/math/BigInt$.apply',1,0,0)
f(22,498,1,2,'scala/math/BigInt$.getCached',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: 448px}
</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(28);
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,15239,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,15233,1,'java/lang/Thread.run')
f(2,1,15233,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,15233,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,1142,1,'java/util/concurrent/FutureTask.run')
f(5,1,1142,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,1142,1,'java/util/concurrent/FutureTask.run')
f(7,1,1142,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,1142,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,1142,1,'java/lang/reflect/Method.invoke')
f(10,1,1142,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,1142,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,1142,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,1142,1,'kyo/bench/jmh_generated/ChainedForkBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,1,1141,1,'kyo/bench/jmh_generated/ChainedForkBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,1,1141,1,'kyo/bench/Bench.forkKyo')
f(16,1,148,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,1,148,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,1,148,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,1,148,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e960')
f(16,149,109,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,149,109,2,'kyo.bench.Bench$$anon$1')
f(16,258,674,1,'kyo/bench/Bench.runLoop$2')
f(17,258,346,1,'kyo/bench/Bench$$anon$1.apply')
f(18,258,155,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,258,155,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c82da8.apply')
f(20,258,155,1,'kyo/bench/Bench.$anonfun$2')
f(21,258,155,1,'kyo/concurrent/fibers$Fiber.block')
f(22,258,155,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,413,191,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,413,191,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,413,191,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(21,413,191,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,413,1,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,414,189,2,'kyo.concurrent.scheduler.IOTask')
f(22,603,1,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,603,1,2,'kyo.concurrent.fibers$Fiber')
f(17,604,328,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,604,328,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,604,328,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,604,328,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,604,155,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,604,155,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,604,128,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,732,27,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,732,27,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,759,14,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,773,159,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,773,159,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,773,159,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,932,210,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,932,135,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,932,135,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,932,135,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,932,135,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(17,1067,45,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,1067,45,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,1112,30,1,'kyo/locals$Locals$.save')
f(18,1112,30,2,'kyo.locals$Locals$$anon$3')
f(14,1142,1,1,'org/openjdk/jmh/results/BenchmarkTaskResult.add')
f(15,1142,1,1,'java/util/ArrayList.add')
f(16,1142,1,1,'java/util/ArrayList.add')
f(17,1142,1,1,'java/util/ArrayList.grow')
f(18,1142,1,1,'java/util/ArrayList.grow')
f(19,1142,1,2,'java.lang.Object[]')
f(4,1143,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e3d0.run')
f(5,1143,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,1143,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,1143,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,1143,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,1143,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,1143,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,1143,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,1161,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e5f8.run')
f(5,1161,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,1161,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,1161,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,1161,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,1161,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,1161,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$70+0x0000000800d4bd60')
f(4,1179,14055,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23278.run')
f(5,1179,14055,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,1179,14055,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,1179,13808,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,1179,13808,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,1179,2,1,'kyo/bench/ChainedForkBench$$anon$1.apply')
f(10,1179,2,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(11,1179,2,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(12,1179,2,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$Promise$$anon$26$$_$loop$22')
f(13,1179,2,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(14,1179,2,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(15,1179,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(16,1179,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(17,1179,2,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(18,1179,2,1,'scala/runtime/function/JProcedure1.apply')
f(19,1179,2,1,'scala/runtime/function/JProcedure1.apply')
f(20,1179,2,1,'kyo/concurrent/scheduler/IOTask$$Lambda$64.0x0000000800d4a268.applyVoid')
f(21,1179,2,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(22,1179,1,1,'kyo/concurrent/scheduler/IOPromise.become')
f(23,1179,1,1,'kyo/concurrent/scheduler/IOPromise.loop$3')
f(24,1179,1,1,'kyo/concurrent/scheduler/IOPromise.merge')
f(25,1179,1,1,'kyo/concurrent/scheduler/IOPromise.loop$2')
f(26,1179,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.merge')
f(27,1179,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$5')
f(22,1180,1,1,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1')
f(23,1180,1,2,'kyo.concurrent.scheduler.IOTask$$anon$4')
f(9,1181,5184,1,'kyo/bench/ChainedForkBench$$anon$2.apply')
f(10,1181,5184,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,1181,5184,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,1181,5184,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(13,1181,5184,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,1181,736,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(14,1917,3345,2,'kyo.concurrent.scheduler.IOTask')
f(14,5262,1103,1,'kyo/concurrent/fibers$Fiber$.promise')
f(15,5262,1103,2,'kyo.concurrent.fibers$Fiber')
f(9,6365,1,1,'kyo/bench/ChainedForkBench$$anon$4.apply')
f(10,6365,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$4')
f(11,6365,1,1,'kyo/bench/ChainedForkBench$$Lambda$58.0x0000000800d48b80.apply')
f(12,6365,1,1,'kyo/bench/ChainedForkBench.$anonfun$7')
f(13,6365,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$3')
f(14,6365,1,2,'kyo.bench.ChainedForkBench$$anon$3')
f(9,6366,1,1,'kyo/bench/ChainedForkBench$$anon$5.apply')
f(10,6366,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$5')
f(11,6366,1,1,'kyo/bench/ChainedForkBench$$Lambda$56.0x0000000800d457a0.apply')
f(12,6366,1,1,'kyo/bench/ChainedForkBench.$anonfun$5')
f(13,6366,1,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(14,6366,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,6366,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,6366,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,6366,1,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(9,6367,8619,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,6367,8619,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,6367,104,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e960.apply')
f(12,6367,104,1,'kyo/bench/Bench.$anonfun$1')
f(13,6367,104,1,'kyo/bench/ChainedForkBench.kyoBenchFiber')
f(14,6367,104,1,'kyo/concurrent/fibers$Fibers.promise')
f(15,6367,104,2,'kyo.concurrent.fibers$Fibers$$anon$31')
f(11,6471,8515,1,'kyo/bench/ChainedForkBench$$Lambda$61.0x0000000800d495d8.apply')
f(12,6471,8515,1,'kyo/bench/ChainedForkBench.$anonfun$3')
f(13,6471,8515,1,'kyo/bench/ChainedForkBench.iterate$2')
f(14,6471,1797,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d4c800.linkToTargetMethod')
f(15,6471,1797,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial')
f(16,6471,1797,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,6471,1797,2,'kyo.bench.ChainedForkBench$$Lambda$61+0x0000000800d495d8')
f(14,8268,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$1')
f(15,8268,1,2,'kyo.bench.ChainedForkBench$$anon$1')
f(14,8269,2084,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2')
f(15,8269,2084,2,'kyo.bench.ChainedForkBench$$anon$2')
f(14,10353,4633,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(15,10353,1609,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,10353,1609,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,10353,1609,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,10353,1609,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(15,11962,2016,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(16,11962,2016,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(15,13978,1008,1,'kyo/locals$Locals$.save')
f(16,13978,1008,2,'kyo.locals$Locals$$anon$3')
f(9,14986,1,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,14986,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,14986,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(7,14987,246,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,14987,246,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,14987,246,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,14987,246,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,14987,246,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d47148')
f(7,15233,1,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,15233,1,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,15233,1,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,15233,1,1,'scala/runtime/ObjectRef.create')
f(11,15233,1,2,'scala.runtime.ObjectRef')
f(1,15234,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,15234,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,15234,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,15234,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,15234,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,15234,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,15234,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,15234,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,15234,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,15234,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,15234,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,15234,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,15234,5,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: 560px}
</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(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,492,3,'all')
f(1,0,1,3,'[unknown]')
f(2,0,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(1,1,5,3,'[unknown_Java]')
f(2,1,1,1,'I2C/C2I adapters')
f(2,2,1,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(2,3,3,1,'kyo/ios$KyoIO.effect')
f(1,6,486,1,'java/lang/Thread.run')
f(2,6,486,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,6,486,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,6,3,1,'java/util/concurrent/FutureTask.run')
f(5,6,3,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,6,3,1,'java/util/concurrent/FutureTask.run')
f(7,6,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,6,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,6,3,1,'java/lang/reflect/Method.invoke')
f(10,6,3,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,6,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,6,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,6,3,1,'kyo/bench/jmh_generated/ChainedForkBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,6,3,1,'kyo/bench/jmh_generated/ChainedForkBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,6,3,1,'kyo/bench/Bench.forkKyo')
f(16,6,3,1,'kyo/bench/Bench.runLoop$2')
f(17,6,2,1,'kyo/bench/Bench$$anon$1.apply')
f(18,6,2,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,6,2,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,6,2,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(21,6,2,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,6,2,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,6,2,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,6,2,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,6,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,6,2,1,'jdk/internal/misc/Unsafe.unpark')
f(27,6,2,3,'pthread_cond_signal')
f(28,6,2,5,'entry_SYSCALL_64_after_hwframe')
f(29,6,1,5,'__x64_sys_futex')
f(29,7,1,5,'do_syscall_64')
f(30,7,1,5,'__x64_sys_futex')
f(31,7,1,5,'do_futex')
f(32,7,1,5,'futex_wake')
f(33,7,1,5,'wake_up_q')
f(34,7,1,5,'_raw_spin_unlock_irqrestore')
f(17,8,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,8,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,8,1,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,8,1,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,8,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,8,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,8,1,1,'java/util/concurrent/locks/LockSupport.park')
f(24,8,1,1,'jdk/internal/misc/Unsafe.park')
f(25,8,1,3,'[unknown]')
f(26,8,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(4,9,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e3d0.run')
f(5,9,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,9,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,9,1,1,'java/lang/Thread.sleep')
f(8,9,1,3,'[unknown]')
f(9,9,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,9,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,9,1,5,'do_syscall_64')
f(12,9,1,5,'__x64_sys_futex')
f(13,9,1,5,'do_futex')
f(14,9,1,5,'futex_wait')
f(15,9,1,5,'futex_wait_queue_me')
f(16,9,1,5,'schedule')
f(17,9,1,5,'__schedule')
f(18,9,1,5,'finish_task_switch.isra.0')
f(4,10,482,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23278.run')
f(5,10,482,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,10,482,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,20,358,1,'kyo/concurrent/scheduler/IOTask.run',98,0,0)
f(8,23,355,1,'kyo/concurrent/scheduler/IOTask.eval',98,0,0)
f(9,71,154,1,'kyo/bench/ChainedForkBench$$anon$2.apply')
f(10,82,2,2,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2',2,0,0)
f(10,84,141,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,92,133,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2',12,0,0)
f(12,104,121,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(13,107,118,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,148,2,2,'kyo/concurrent/fibers$Fibers$$anon$32.<init>',2,0,0)
f(15,148,2,2,'kyo/ios$KyoIO.<init>',2,0,0)
f(16,148,2,2,'kyo/core$internal$Kyo.<init>',2,0,0)
f(17,148,2,2,'java/lang/Object.<init>',2,0,0)
f(14,150,48,2,'kyo/concurrent/scheduler/IOTask.<init>',48,0,0)
f(15,186,12,2,'kyo/concurrent/scheduler/IOPromise.<init>',12,0,0)
f(16,187,11,2,'kyo/concurrent/scheduler/IOPromise.<init>',11,0,0)
f(14,198,27,2,'kyo/concurrent/scheduler/Scheduler$.schedule',27,0,0)
f(15,201,24,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',24,0,0)
f(16,201,24,2,'kyo/concurrent/scheduler/Queue.offer',24,0,0)
f(17,214,10,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',10,0,0)
f(18,214,10,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',10,0,0)
f(19,214,8,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',8,0,0)
f(19,222,2,2,'kyo/concurrent/scheduler/Queue$$Lambda$54.0x0000000800d43cd0.<init>',2,0,0)
f(20,222,2,2,'java/lang/Object.<init>',2,0,0)
f(17,224,1,2,'kyo/concurrent/scheduler/Queue.tryModify',1,0,0)
f(18,224,1,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',1,0,0)
f(19,224,1,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',1,0,0)
f(9,225,78,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,230,73,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',60,0,0)
f(11,231,72,2,'kyo/bench/ChainedForkBench$$Lambda$61.0x0000000800d495d8.apply',59,0,0)
f(12,231,72,2,'kyo/bench/ChainedForkBench.$anonfun$3',59,0,0)
f(13,231,72,2,'kyo/bench/ChainedForkBench.iterate$2',59,0,0)
f(14,234,3,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d4c800.linkToTargetMethod',3,0,0)
f(15,234,3,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial',3,0,0)
f(16,234,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',3,0,0)
f(14,237,45,2,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2',45,0,0)
f(15,279,3,2,'kyo/bench/ChainedForkBench$$anon$2.<init>',3,0,0)
f(16,279,3,2,'kyo/core$internal$KyoCont.<init>',3,0,0)
f(14,282,21,2,'kyo/concurrent/fibers$Fibers.forkFiber',8,0,0)
f(15,283,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(16,283,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(17,283,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(15,285,13,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(16,294,4,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',4,0,0)
f(15,298,5,2,'kyo/locals$Locals$.save',5,0,0)
f(9,303,40,2,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',40,0,0)
f(9,343,22,2,'kyo/concurrent/scheduler/IOTask.loop$8',17,0,0)
f(10,343,22,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',17,0,0)
f(11,343,22,2,'kyo/concurrent/scheduler/IOPromise.complete',17,0,0)
f(12,343,17,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',17,0,0)
f(13,358,2,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',2,0,0)
f(14,358,2,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',2,0,0)
f(15,358,2,2,'java/util/Objects.requireNonNull',2,0,0)
f(12,360,5,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,360,5,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,360,5,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,360,5,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,360,5,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,360,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,360,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,360,5,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,360,5,1,'jdk/internal/misc/Unsafe.unpark')
f(21,360,1,3,'Unsafe_Unpark')
f(22,360,1,4,'SafeThreadsListPtr::release_stable_list()')
f(21,361,4,3,'pthread_cond_signal')
f(22,361,4,5,'entry_SYSCALL_64_after_hwframe')
f(23,361,4,5,'do_syscall_64')
f(24,361,4,5,'__x64_sys_futex')
f(25,361,4,5,'do_futex')
f(26,361,4,5,'futex_wake')
f(27,361,4,5,'wake_up_q')
f(28,361,4,5,'_raw_spin_unlock_irqrestore')
f(9,365,11,6,'kyo/core$internal$KyoCont.effect',0,11,0)
f(9,376,1,1,'kyo/ios$KyoIO.effect')
f(9,377,1,3,'vtable stub')
f(7,378,112,2,'kyo/concurrent/scheduler/Queue.poll',40,0,0)
f(8,389,21,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',19,0,0)
f(9,394,16,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',14,0,0)
f(10,394,16,2,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d47148.<init>',14,0,0)
f(8,410,12,2,'kyo/concurrent/scheduler/Queue.isEmpty',12,0,0)
f(9,413,9,2,'kyo/concurrent/scheduler/Queue.items',9,0,0)
f(8,422,68,1,'kyo/concurrent/scheduler/Queue.modify')
f(9,425,37,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',37,0,0)
f(10,437,25,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',25,0,0)
f(11,448,14,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',14,0,0)
f(12,450,12,2,'java/util/Objects.requireNonNull',12,0,0)
f(9,462,28,2,'kyo/concurrent/scheduler/Queue$$Lambda$60.0x0000000800d49318.apply',28,0,0)
f(10,462,28,2,'kyo/concurrent/scheduler/Queue.addAndPoll$$anonfun$1',28,0,0)
f(11,467,23,2,'scala/collection/mutable/PriorityQueue.dequeue',23,0,0)
f(12,480,10,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_array',10,0,0)
f(7,490,1,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,490,1,2,'kyo/concurrent/scheduler/Scheduler$.randomWorker',1,0,0)
f(9,490,1,2,'java/util/Random.nextInt',1,0,0)
f(7,491,1,2,'kyo/concurrent/scheduler/Worker.stop$1',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: 448px}
</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(28);
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,14496,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,14488,1,'java/lang/Thread.run')
f(2,1,14488,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,14488,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,1558,1,'java/util/concurrent/FutureTask.run')
f(5,1,1558,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,1558,1,'java/util/concurrent/FutureTask.run')
f(7,1,1558,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,1558,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,1,2,'java.lang.Object[]')
f(9,2,1557,1,'java/lang/reflect/Method.invoke')
f(10,2,1557,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,2,1557,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,2,1557,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,2,1557,1,'kyo/bench/jmh_generated/ChainedForkBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,2,1557,1,'kyo/bench/jmh_generated/ChainedForkBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,2,1557,1,'kyo/bench/Bench.syncKyo')
f(16,2,746,1,'kyo/bench/Bench.runLoop$1')
f(17,2,396,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,2,396,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,2,396,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,2,396,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,2,289,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,2,289,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,2,170,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,172,119,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,172,119,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,291,84,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,375,23,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,375,23,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,375,23,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(17,398,350,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,398,325,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,398,325,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,398,325,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,398,221,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,398,221,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,398,221,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(24,398,221,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,398,221,2,'kyo.concurrent.scheduler.IOTask')
f(21,619,104,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(22,619,104,1,'kyo/concurrent/fibers$Fibers$$Lambda$39.0x0000000800c82da8.apply')
f(23,619,104,1,'kyo/concurrent/fibers$Fibers.$anonfun$5')
f(24,619,104,1,'kyo/concurrent/fibers$Fiber.join')
f(25,619,104,1,'kyo/concurrent/fibers$Fibers.get')
f(26,619,104,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(27,619,104,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(18,723,25,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,723,25,1,'kyo/concurrent/fibers$Fibers$$Lambda$40.0x0000000800c835a8.apply')
f(20,723,25,1,'kyo/concurrent/fibers$Fibers.$anonfun$31')
f(21,723,25,1,'kyo/concurrent/fibers$Fiber.block')
f(22,723,25,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(16,748,811,1,'kyo/bench/ChainedForkBench.kyoBench')
f(17,748,85,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,748,85,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,748,85,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,748,85,2,'kyo.bench.ChainedForkBench$$Lambda$37+0x0000000800c3e960')
f(17,833,373,1,'kyo/concurrent/fibers$Fibers.block')
f(18,833,110,1,'kyo/concurrent/fibers$Fibers.handler$3')
f(19,833,110,2,'kyo.concurrent.fibers$Fibers$$anon$115')
f(18,943,152,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$_$shallowHandleLoop$1')
f(19,943,152,2,'kyo.concurrent.fibers$Fibers$$anon$116')
f(18,1095,111,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,1095,111,2,'kyo.concurrent.fibers$Fibers$$anon$117')
f(17,1206,353,1,'kyo/concurrent/fibers$Fibers.fork')
f(18,1206,125,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,1206,125,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,1206,125,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,1206,125,2,'kyo.concurrent.fibers$Fibers$$Lambda$39+0x0000000800c82da8')
f(18,1331,109,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(19,1331,89,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,1331,89,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,1331,89,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,1331,89,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(19,1420,20,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,1420,20,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(18,1440,119,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(19,1440,119,2,'kyo.concurrent.fibers$Fibers$$anon$34')
f(4,1559,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1ec28.run')
f(5,1559,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,1559,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,1559,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,1559,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,1559,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,1559,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,1559,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,1577,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$51.0x0000000800d1ee50.run')
f(5,1577,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,1577,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,1577,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,1577,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,1577,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,1577,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$70+0x0000000800d4e590')
f(4,1595,12894,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d23cb0.run')
f(5,1595,12894,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,1595,12894,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,1595,12038,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,1595,12038,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,1595,4673,1,'kyo/bench/ChainedForkBench$$anon$2.apply')
f(10,1595,4673,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,1595,4673,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,1595,4673,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(13,1595,4673,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,1595,621,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(14,2216,2968,2,'kyo.concurrent.scheduler.IOTask')
f(14,5184,1084,1,'kyo/concurrent/fibers$Fiber$.promise')
f(15,5184,1084,2,'kyo.concurrent.fibers$Fiber')
f(9,6268,1,1,'kyo/bench/ChainedForkBench$$anon$4.apply')
f(10,6268,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$4')
f(11,6268,1,1,'kyo/bench/ChainedForkBench$$Lambda$59.0x0000000800d49660.apply')
f(12,6268,1,1,'kyo/bench/ChainedForkBench.$anonfun$7')
f(13,6268,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$3')
f(14,6268,1,2,'kyo.bench.ChainedForkBench$$anon$3')
f(9,6269,1,1,'kyo/bench/ChainedForkBench$$anon$5.apply')
f(10,6269,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(11,6269,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(12,6269,1,2,'kyo.concurrent.scheduler.IOPromise')
f(9,6270,7362,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,6270,7362,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,6270,1,1,'kyo/bench/ChainedForkBench$$Lambda$37.0x0000000800c3e960.apply')
f(12,6270,1,1,'kyo/bench/ChainedForkBench.kyoBench$$anonfun$1')
f(13,6270,1,1,'kyo/bench/ChainedForkBench.kyoBenchFiber')
f(14,6270,1,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$5')
f(15,6270,1,2,'kyo.bench.ChainedForkBench$$anon$5')
f(11,6271,7361,1,'kyo/bench/ChainedForkBench$$Lambda$62.0x0000000800d4a0b8.apply')
f(12,6271,7361,1,'kyo/bench/ChainedForkBench.$anonfun$3')
f(13,6271,7361,1,'kyo/bench/ChainedForkBench.iterate$2')
f(14,6271,1386,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d4c800.linkToTargetMethod')
f(15,6271,1386,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial')
f(16,6271,1386,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,6271,1386,2,'kyo.bench.ChainedForkBench$$Lambda$62+0x0000000800d4a0b8')
f(14,7657,1869,1,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2')
f(15,7657,1869,2,'kyo.bench.ChainedForkBench$$anon$2')
f(14,9526,4106,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(15,9526,1177,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,9526,1177,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,9526,1177,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,9526,1177,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(15,10703,1495,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(16,10703,1495,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(15,12198,1434,1,'kyo/locals$Locals$.save')
f(16,12198,1434,2,'kyo.locals$Locals$$anon$3')
f(9,13632,1,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,13632,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,13632,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(7,13633,856,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,13633,856,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,13633,856,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,13633,856,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,13633,856,2,'kyo.concurrent.scheduler.Queue$$Lambda$56+0x0000000800d47ca0')
f(1,14489,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,14489,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,14489,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,14489,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,14489,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,14489,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,14489,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,14489,1,5,'org.openjdk.jmh.runner.InfraControl')
f(8,14490,1,1,'org/openjdk/jmh/runner/InfraControl.<init>')
f(9,14490,1,1,'org/openjdk/jmh/runner/InfraControlL4.<init>')
f(10,14490,1,1,'org/openjdk/jmh/runner/InfraControlL3.<init>')
f(11,14490,1,1,'org/openjdk/jmh/runner/InfraControlL2.<init>')
f(12,14490,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,14491,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,14491,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,14491,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,14491,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,14491,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,14491,5,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: 576px}
</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(36);
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,493,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,'void WeakProcessor::weak_oops_do<G1STWIsAliveClosure, G1KeepAliveClosure>(WorkGang*, G1STWIsAliveClosure*, G1KeepAliveClosure*, WeakProcessorTimes*)')
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,6,3,'[unknown_Java]')
f(2,1,6,1,'kyo/ios$KyoIO.effect')
f(1,7,486,1,'java/lang/Thread.run')
f(2,7,486,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,7,486,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,7,3,1,'java/util/concurrent/FutureTask.run')
f(5,7,3,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,7,3,1,'java/util/concurrent/FutureTask.run')
f(7,7,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,7,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,7,3,1,'java/lang/reflect/Method.invoke')
f(10,7,3,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,7,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,7,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,7,3,1,'kyo/bench/jmh_generated/ChainedForkBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,7,3,1,'kyo/bench/jmh_generated/ChainedForkBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,7,3,1,'kyo/bench/Bench.syncKyo')
f(16,7,3,1,'kyo/bench/Bench.runLoop$1')
f(17,7,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,7,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,7,1,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,7,1,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,7,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,7,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,7,1,1,'java/util/concurrent/locks/LockSupport.park')
f(24,7,1,1,'jdk/internal/misc/Unsafe.park')
f(25,7,1,3,'[unknown]')
f(26,7,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,7,1,5,'entry_SYSCALL_64_after_hwframe')
f(28,7,1,5,'do_syscall_64')
f(29,7,1,5,'__x64_sys_futex')
f(30,7,1,5,'do_futex')
f(31,7,1,5,'futex_wait')
f(32,7,1,5,'futex_wait_queue_me')
f(33,7,1,5,'schedule')
f(34,7,1,5,'__schedule')
f(35,7,1,5,'finish_task_switch.isra.0')
f(17,8,2,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,8,2,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,8,2,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,8,2,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,8,2,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,8,2,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,8,2,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(24,8,2,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,8,2,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,8,2,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,8,2,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,8,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(29,8,2,1,'jdk/internal/misc/Unsafe.unpark')
f(30,8,1,3,'Unsafe_Unpark')
f(31,8,1,4,'ThreadsListHandle::ThreadsListHandle(Thread*)')
f(30,9,1,3,'pthread_cond_signal')
f(31,9,1,5,'entry_SYSCALL_64_after_hwframe')
f(32,9,1,5,'do_syscall_64')
f(33,9,1,5,'__x64_sys_futex')
f(34,9,1,5,'do_futex')
f(4,10,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1ec28.run')
f(5,10,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,10,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,10,1,1,'java/lang/Thread.sleep')
f(8,10,1,3,'[unknown]')
f(9,10,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,10,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,10,1,5,'do_syscall_64')
f(12,10,1,5,'__x64_sys_futex')
f(13,10,1,5,'do_futex')
f(14,10,1,5,'futex_wait')
f(15,10,1,5,'futex_wait_queue_me')
f(16,10,1,5,'schedule')
f(17,10,1,5,'__schedule')
f(18,10,1,5,'finish_task_switch.isra.0')
f(4,11,482,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d23cb0.run')
f(5,11,482,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,11,482,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,28,336,1,'kyo/concurrent/scheduler/IOTask.run',54,0,0)
f(8,30,334,1,'kyo/concurrent/scheduler/IOTask.eval',54,0,0)
f(9,79,178,1,'kyo/bench/ChainedForkBench$$anon$2.apply')
f(10,92,1,2,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2',1,0,0)
f(10,93,164,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply',10,0,0)
f(11,101,154,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,116,139,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(13,120,135,2,'kyo/concurrent/fibers$Fibers.$anonfun$4',135,0,0)
f(14,166,15,2,'kyo/concurrent/fibers$Fibers$$anon$32.<init>',15,0,0)
f(14,181,50,2,'kyo/concurrent/scheduler/IOTask.<init>',50,0,0)
f(15,222,9,2,'kyo/concurrent/scheduler/IOPromise.<init>',9,0,0)
f(16,225,6,2,'kyo/concurrent/scheduler/IOPromise.<init>',6,0,0)
f(17,230,1,2,'java/util/concurrent/atomic/AtomicReference.<init>',1,0,0)
f(14,231,24,2,'kyo/concurrent/scheduler/Scheduler$.schedule',24,0,0)
f(15,250,5,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',5,0,0)
f(11,255,2,2,'kyo/locals$Locals$$anon$3.apply',2,0,0)
f(9,257,53,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,262,48,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',38,0,0)
f(11,266,44,2,'kyo/bench/ChainedForkBench$$Lambda$62.0x0000000800d4a2e8.apply',34,0,0)
f(12,266,44,2,'kyo/bench/ChainedForkBench.$anonfun$3',34,0,0)
f(13,266,44,2,'kyo/bench/ChainedForkBench.iterate$2',34,0,0)
f(14,269,21,2,'kyo/bench/ChainedForkBench.kyo$bench$ChainedForkBench$$_$transformLoop$2',21,0,0)
f(15,288,2,2,'kyo/bench/ChainedForkBench$$anon$2.<init>',2,0,0)
f(16,288,2,2,'kyo/core$internal$KyoCont.<init>',2,0,0)
f(14,290,20,2,'kyo/concurrent/fibers$Fibers.forkFiber',10,0,0)
f(15,291,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(16,291,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(17,291,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(15,293,10,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(16,302,1,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',1,0,0)
f(15,303,7,2,'kyo/locals$Locals$.save',7,0,0)
f(9,310,14,1,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',1,0,0)
f(9,324,29,2,'kyo/concurrent/scheduler/IOTask.loop$8',18,0,0)
f(10,333,20,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',16,0,0)
f(11,333,20,2,'kyo/concurrent/scheduler/IOPromise.complete',16,0,0)
f(12,346,4,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',3,0,0)
f(13,346,4,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',3,0,0)
f(12,350,3,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,350,3,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,350,3,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,350,3,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,350,3,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,350,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,350,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,350,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,350,3,1,'jdk/internal/misc/Unsafe.unpark')
f(21,350,3,3,'pthread_cond_signal')
f(22,350,3,5,'entry_SYSCALL_64_after_hwframe')
f(23,350,3,5,'do_syscall_64')
f(24,350,3,5,'__x64_sys_futex')
f(25,350,3,5,'do_futex')
f(26,350,3,5,'futex_wake')
f(27,350,3,5,'wake_up_q')
f(28,350,3,5,'_raw_spin_unlock_irqrestore')
f(9,353,8,6,'kyo/core$internal$KyoCont.effect',0,8,0)
f(9,361,1,1,'kyo/ios$KyoIO.effect')
f(9,362,2,3,'vtable stub')
f(7,364,127,1,'kyo/concurrent/scheduler/Queue.poll',36,0,0)
f(8,373,24,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',22,0,0)
f(9,375,22,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',22,0,0)
f(10,378,19,2,'kyo/concurrent/scheduler/Queue$$Lambda$56.0x0000000800d47ca0.<init>',19,0,0)
f(11,395,2,2,'java/lang/Object.<init>',2,0,0)
f(8,397,10,2,'kyo/concurrent/scheduler/Queue.isEmpty',10,0,0)
f(9,397,10,2,'kyo/concurrent/scheduler/Queue.items',10,0,0)
f(8,407,84,1,'kyo/concurrent/scheduler/Queue.modify')
f(9,409,46,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',46,0,0)
f(10,425,30,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',30,0,0)
f(11,440,15,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',15,0,0)
f(12,442,13,2,'java/util/Objects.requireNonNull',13,0,0)
f(9,455,36,2,'kyo/concurrent/scheduler/Queue$$Lambda$61.0x0000000800d4a028.apply',36,0,0)
f(10,455,36,2,'kyo/concurrent/scheduler/Queue.addAndPoll$$anonfun$1',36,0,0)
f(11,456,35,2,'scala/collection/mutable/PriorityQueue.dequeue',35,0,0)
f(12,477,10,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_array',10,0,0)
f(12,487,4,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',4,0,0)
f(7,491,1,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,491,1,1,'kyo/concurrent/scheduler/Worker.park')
f(9,491,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,491,1,1,'jdk/internal/misc/Unsafe.park')
f(11,491,1,3,'[unknown]')
f(12,491,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,491,1,5,'entry_SYSCALL_64_after_hwframe')
f(14,491,1,5,'do_syscall_64')
f(15,491,1,5,'__x64_sys_futex')
f(16,491,1,5,'do_futex')
f(17,491,1,5,'futex_wait')
f(18,491,1,5,'futex_wait_queue_me')
f(19,491,1,5,'schedule')
f(20,491,1,5,'__schedule')
f(21,491,1,5,'finish_task_switch.isra.0')
f(7,492,1,1,'kyo/concurrent/scheduler/Worker.stop$1')
f(8,492,1,1,'kyo/concurrent/scheduler/Scheduler$.stopWorker')
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: 448px}
</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(28);
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,20655,3,'all')
f(1,0,20650,1,'java/lang/Thread.run')
f(2,0,20650,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,20650,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,3541,1,'java/util/concurrent/FutureTask.run')
f(5,0,3541,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,3541,1,'java/util/concurrent/FutureTask.run')
f(7,0,3541,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,3541,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,3541,1,'java/lang/reflect/Method.invoke')
f(10,0,3541,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,3541,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,3541,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,3541,1,'kyo/bench/jmh_generated/CollectAllBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,3541,1,'kyo/bench/jmh_generated/CollectAllBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,3541,1,'kyo/bench/Bench.forkKyo')
f(16,0,169,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,169,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,169,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,169,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3f348')
f(16,169,286,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,169,286,2,'kyo.bench.Bench$$anon$1')
f(16,455,2251,1,'kyo/bench/Bench.runLoop$2')
f(17,455,945,1,'kyo/bench/Bench$$anon$1.apply')
f(18,455,184,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,455,184,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c83848.apply')
f(20,455,184,1,'kyo/bench/Bench.$anonfun$2')
f(21,455,184,1,'kyo/concurrent/fibers$Fiber.block')
f(22,455,184,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,639,761,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,639,761,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,639,761,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84c30.apply')
f(21,639,761,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,639,33,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,672,591,2,'kyo.concurrent.scheduler.IOTask')
f(22,1263,137,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,1263,137,2,'kyo.concurrent.fibers$Fiber')
f(17,1400,1306,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,1400,1306,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,1400,1306,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,1400,1306,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,1400,582,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,1400,582,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,1400,173,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,1573,409,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,1573,409,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,1982,373,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,2355,351,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,2355,351,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,2355,351,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,2706,835,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,2706,302,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,2706,302,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,2706,302,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,2706,302,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84c30')
f(17,3008,372,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,3008,372,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,3380,161,1,'kyo/locals$Locals$.save')
f(18,3380,161,2,'kyo.locals$Locals$$anon$3')
f(4,3541,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1f2b8.run')
f(5,3541,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,3541,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,3541,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,3541,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,3541,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,3541,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,3541,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,3559,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1f4e0.run')
f(5,3559,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,3559,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,3559,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3559,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,3559,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3559,18,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(11,3559,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$61+0x0000000800d551f8')
f(4,3577,17073,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d1fda8.run')
f(5,3577,17073,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,3577,17073,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,3577,17071,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,3577,17071,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,3577,11035,1,'kyo/bench/CollectAllBench$$anon$2.apply')
f(10,3577,4215,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1')
f(11,3577,2844,2,'kyo.bench.CollectAllBench$$anon$2')
f(11,6421,1371,1,'kyo/bench/CollectAllBench$$Lambda$58.0x0000000800d56000.apply')
f(12,6421,1371,1,'kyo/bench/CollectAllBench.$anonfun$2')
f(13,6421,1368,1,'scala/collection/AbstractIterable.sum')
f(14,6421,1368,1,'scala/collection/IterableOnceOps.sum$')
f(15,6421,1368,1,'scala/collection/IterableOnceOps.sum')
f(16,6421,1368,1,'scala/collection/AbstractIterable.reduce')
f(17,6421,1368,1,'scala/collection/IterableOnceOps.reduce$')
f(18,6421,1368,1,'scala/collection/IterableOnceOps.reduce')
f(19,6421,1368,1,'scala/collection/AbstractIterable.reduceLeft')
f(20,6421,1368,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(21,6421,1368,1,'scala/collection/IterableOnceOps.reduceLeft')
f(22,6421,1366,1,'scala/collection/IterableOnceOps$$Lambda$59.0x0000000800d57638.apply')
f(23,6421,1366,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(24,6421,1366,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(25,6421,1366,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(26,6421,1366,1,'java/lang/Integer.valueOf')
f(27,6421,1366,2,'java.lang.Integer')
f(22,7787,2,1,'scala/collection/immutable/List.iterator')
f(23,7787,2,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator$')
f(24,7787,2,1,'scala/collection/StrictOptimizedLinearSeqOps.iterator')
f(25,7787,2,2,'scala.collection.StrictOptimizedLinearSeqOps$$anon$1')
f(13,7789,3,1,'scala/runtime/BoxesRunTime.boxToLong')
f(14,7789,3,1,'java/lang/Long.valueOf')
f(15,7789,3,2,'java.lang.Long')
f(10,7792,6820,1,'kyo/lists$Lists$$anon$11.apply')
f(11,7792,6820,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(12,7792,6820,1,'kyo/lists$Lists$$Lambda$57.0x0000000800d53b78.apply')
f(13,7792,6820,1,'kyo/lists$Lists.$anonfun$5')
f(14,7792,4767,1,'kyo/lists$Lists.loop$2')
f(15,7792,1996,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,7792,1996,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,7792,1996,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,7792,1996,2,'kyo.lists$Lists$$Lambda$57+0x0000000800d53b78')
f(15,9788,2771,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(16,9788,2771,2,'kyo.lists$Lists$$anon$11')
f(14,12559,2053,1,'scala/collection/mutable/ListBuffer.addOne')
f(15,12559,2053,2,'scala.collection.immutable.$colon$colon')
f(9,14612,6036,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,14612,6036,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,14612,6036,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3f348.apply')
f(12,14612,6036,1,'kyo/bench/Bench.$anonfun$1')
f(13,14612,6036,1,'kyo/bench/Bench.kyoBenchFiber')
f(14,14612,6036,1,'kyo/bench/CollectAllBench.kyoBench')
f(15,14612,4,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1')
f(16,14612,4,2,'kyo.bench.CollectAllBench$$anon$2')
f(15,14616,7,1,'kyo/lists$Lists.collect')
f(16,14616,1,2,'java.lang.Object[]')
f(16,14617,4,1,'kyo/lists$Lists.loop$2')
f(17,14617,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,14617,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,14617,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,14617,1,2,'kyo.lists$Lists$$Lambda$57+0x0000000800d53b78')
f(17,14618,3,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(18,14618,3,2,'kyo.lists$Lists$$anon$11')
f(16,14621,2,1,'scala/collection/mutable/ListBuffer$.apply')
f(17,14621,2,1,'scala/collection/IterableFactory.apply$')
f(18,14621,2,1,'scala/collection/IterableFactory.apply')
f(19,14621,2,1,'scala/collection/mutable/ListBuffer$.from')
f(20,14621,2,1,'scala/collection/mutable/ListBuffer$.from')
f(21,14621,2,2,'scala.collection.mutable.ListBuffer')
f(15,14623,3116,1,'scala/collection/AbstractIterable.toList')
f(16,14623,3116,1,'scala/collection/IterableOnceOps.toList$')
f(17,14623,3116,1,'scala/collection/IterableOnceOps.toList')
f(18,14623,3116,1,'scala/collection/immutable/List.prependedAll')
f(19,14623,3101,2,'scala.collection.immutable.$colon$colon')
f(19,17724,15,1,'scala/collection/immutable/Vector.iterator')
f(20,17724,15,2,'scala.collection.immutable.NewVectorIterator')
f(15,17739,2909,1,'scala/collection/immutable/Range.map')
f(16,17739,2093,1,'kyo/bench/CollectAllBench$$Lambda$56.0x0000000800d45af0.apply')
f(17,17739,2093,1,'kyo/bench/CollectAllBench.$anonfun$adapted$1')
f(18,17739,2093,1,'kyo/bench/CollectAllBench.$anonfun$1')
f(19,17739,2093,2,'kyo.bench.CollectAllBench$$anon$1')
f(16,19832,205,1,'scala/collection/SeqFactory$Delegate.newBuilder')
f(17,19832,205,1,'scala/collection/immutable/Vector$.newBuilder')
f(18,19832,205,1,'scala/collection/immutable/Vector$.newBuilder')
f(19,19832,189,2,'scala.collection.immutable.VectorBuilder')
f(19,20021,16,1,'scala/collection/immutable/VectorBuilder.<init>')
f(20,20021,16,2,'java.lang.Object[]')
f(16,20037,595,1,'scala/collection/immutable/VectorBuilder.addOne')
f(17,20037,595,1,'scala/collection/immutable/VectorBuilder.addOne')
f(18,20037,595,1,'scala/collection/immutable/VectorBuilder.advance')
f(19,20037,595,1,'scala/collection/immutable/VectorBuilder.advance1')
f(20,20037,15,2,'java.lang.Object[][]')
f(20,20052,580,2,'java.lang.Object[]')
f(16,20632,16,1,'scala/collection/immutable/VectorBuilder.result')
f(17,20632,16,1,'scala/collection/immutable/VectorBuilder.result')
f(18,20632,4,1,'java/util/Arrays.copyOf')
f(19,20632,4,2,'java.lang.Object[]')
f(18,20636,10,1,'java/util/Arrays.copyOfRange')
f(19,20636,10,2,'java.lang.Object[][]')
f(18,20646,2,2,'scala.collection.immutable.Vector2')
f(7,20648,2,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,20648,2,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,20648,2,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,20648,2,1,'scala/runtime/ObjectRef.create')
f(11,20648,2,2,'scala.runtime.ObjectRef')
f(1,20650,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,20650,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,20650,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,20650,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,20650,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,20650,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,20650,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,20650,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,20650,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,20650,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,20650,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,20650,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,20650,5,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: 576px}
</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(36);
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,423,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::start_new_collection_set()')
f(1,1,10,3,'[unknown_Java]')
f(2,1,6,1,'java/lang/Object.<init>')
f(2,7,1,1,'kyo/bench/CollectAllBench$$Lambda$58.0x0000000800d56000.apply')
f(2,8,3,1,'kyo/bench/CollectAllBench$$anon$2.apply')
f(1,11,412,1,'java/lang/Thread.run')
f(2,11,412,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,11,412,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,11,47,1,'java/util/concurrent/FutureTask.run')
f(5,11,47,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,11,47,1,'java/util/concurrent/FutureTask.run')
f(7,11,47,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,11,47,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,11,47,1,'java/lang/reflect/Method.invoke')
f(10,11,47,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,11,47,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,11,47,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,11,47,1,'kyo/bench/jmh_generated/CollectAllBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,11,47,1,'kyo/bench/jmh_generated/CollectAllBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,11,47,1,'kyo/bench/Bench.forkKyo')
f(16,11,47,1,'kyo/bench/Bench.runLoop$2')
f(17,11,21,1,'kyo/bench/Bench$$anon$1.apply')
f(18,11,21,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,11,21,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,11,21,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84c30.apply')
f(21,11,21,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,11,21,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,11,21,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,11,21,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,11,21,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,11,21,1,'jdk/internal/misc/Unsafe.unpark')
f(27,11,21,3,'pthread_cond_signal')
f(28,11,21,5,'entry_SYSCALL_64_after_hwframe')
f(29,11,21,5,'do_syscall_64')
f(30,11,21,5,'__x64_sys_futex')
f(31,11,21,5,'do_futex')
f(32,11,21,5,'futex_wake')
f(33,11,1,5,'get_futex_key')
f(33,12,20,5,'wake_up_q')
f(34,12,20,5,'_raw_spin_unlock_irqrestore')
f(17,32,26,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,32,26,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,32,26,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,32,26,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,32,26,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,32,26,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,32,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(24,32,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(25,32,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(23,33,25,1,'java/util/concurrent/locks/LockSupport.park')
f(24,33,25,1,'jdk/internal/misc/Unsafe.park')
f(25,33,5,3,'Unsafe_Park')
f(26,34,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,34,3,5,'entry_SYSCALL_64_after_hwframe')
f(28,34,1,5,'__x64_sys_futex')
f(28,35,2,5,'do_syscall_64')
f(29,35,2,5,'__x64_sys_futex')
f(30,35,1,5,'do_futex')
f(31,35,1,5,'futex_wake')
f(32,35,1,5,'get_futex_key')
f(30,36,1,5,'futex_wake')
f(26,37,1,3,'pthread_cond_wait')
f(25,38,20,3,'[unknown]')
f(26,38,20,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,40,18,5,'entry_SYSCALL_64_after_hwframe')
f(28,40,18,5,'do_syscall_64')
f(29,40,17,5,'__x64_sys_futex')
f(30,40,17,5,'do_futex')
f(31,40,17,5,'futex_wait')
f(32,40,16,5,'futex_wait_queue_me')
f(33,40,16,5,'schedule')
f(34,40,16,5,'__schedule')
f(35,40,16,5,'finish_task_switch.isra.0')
f(32,56,1,5,'futex_wait_setup')
f(29,57,1,5,'syscall_exit_to_user_mode')
f(30,57,1,5,'exit_to_user_mode_prepare')
f(31,57,1,5,'exit_to_user_mode_loop')
f(32,57,1,5,'__rseq_handle_notify_resume')
f(4,58,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1f2b8.run')
f(5,58,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,58,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,58,1,1,'java/lang/Thread.sleep')
f(8,58,1,3,'JVM_Sleep')
f(9,58,1,4,'JavaThread::sleep(long)')
f(10,58,1,4,'os::PlatformEvent::park(long)')
f(4,59,364,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d1fda8.run')
f(5,59,364,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,59,364,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,59,335,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,59,335,2,'kyo/concurrent/scheduler/IOTask.eval',134,0,0)
f(9,72,149,1,'kyo/bench/CollectAllBench$$anon$2.apply')
f(10,74,47,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1')
f(11,74,47,1,'kyo/bench/CollectAllBench$$Lambda$58.0x0000000800d56000.apply')
f(12,74,47,2,'kyo/bench/CollectAllBench.$anonfun$2',37,0,0)
f(13,74,47,2,'scala/collection/AbstractIterable.sum',37,0,0)
f(14,74,47,2,'scala/collection/IterableOnceOps.sum$',37,0,0)
f(15,74,47,2,'scala/collection/IterableOnceOps.sum',37,0,0)
f(16,74,47,2,'scala/collection/AbstractIterable.reduce',37,0,0)
f(17,74,47,2,'scala/collection/IterableOnceOps.reduce$',37,0,0)
f(18,74,47,2,'scala/collection/IterableOnceOps.reduce',37,0,0)
f(19,74,47,2,'scala/collection/AbstractIterable.reduceLeft',37,0,0)
f(20,74,47,2,'scala/collection/IterableOnceOps.reduceLeft$',37,0,0)
f(21,74,47,2,'scala/collection/IterableOnceOps.reduceLeft',37,0,0)
f(22,74,40,2,'scala/collection/IterableOnceOps$$Lambda$59.0x0000000800d57438.apply',30,0,0)
f(23,74,40,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',30,0,0)
f(24,74,40,2,'scala/math/Numeric$IntIsIntegral$.plus',30,0,0)
f(25,74,35,2,'scala/runtime/BoxesRunTime.boxToInteger',25,0,0)
f(26,96,13,1,'java/lang/Integer.valueOf',3,0,0)
f(27,99,10,1,'java/lang/Integer.<init>')
f(28,99,10,1,'java/lang/Number.<init>')
f(25,109,5,2,'scala/runtime/BoxesRunTime.unboxToInt',5,0,0)
f(22,114,7,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',7,0,0)
f(10,121,100,2,'kyo/lists$Lists$$anon$11.apply',99,0,0)
f(11,121,71,2,'kyo/bench/CollectAllBench$$anon$1.apply',70,0,0)
f(12,125,67,2,'kyo/bench/CollectAllBench$$anon$1.apply',66,0,0)
f(13,126,66,2,'scala/runtime/BoxesRunTime.boxToInteger',65,0,0)
f(14,191,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(15,191,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(16,191,1,4,'MemAllocator::allocate() const')
f(17,191,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(18,191,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(19,191,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(20,191,1,4,'G1AllocRegion::new_alloc_region_and_allocate(unsigned long, bool)')
f(21,191,1,4,'G1CollectedHeap::new_mutator_alloc_region(unsigned long, bool, unsigned int)')
f(22,191,1,4,'HeapRegionType::get_trace_type()')
f(11,192,4,2,'kyo/concurrent/scheduler/IOTask.apply',4,0,0)
f(11,196,25,2,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5',25,0,0)
f(12,198,23,2,'kyo/lists$Lists$$Lambda$57.0x0000000800d53948.apply',23,0,0)
f(13,200,21,2,'kyo/lists$Lists.$anonfun$5',21,0,0)
f(14,200,9,2,'kyo/lists$Lists.loop$2',9,0,0)
f(15,200,9,2,'scala/collection/immutable/List.equals',9,0,0)
f(14,209,12,2,'scala/collection/mutable/ListBuffer.addOne',12,0,0)
f(15,209,5,2,'scala/collection/immutable/$colon$colon.<init>',5,0,0)
f(16,209,2,2,'scala/collection/immutable/List.<init>',2,0,0)
f(17,209,2,2,'scala/collection/immutable/AbstractSeq.<init>',2,0,0)
f(18,210,1,5,'asm_sysvec_hyperv_stimer0')
f(19,210,1,5,'sysvec_hyperv_stimer0')
f(20,210,1,5,'irq_exit_rcu')
f(21,210,1,5,'__irq_exit_rcu')
f(22,210,1,5,'__softirqentry_text_start')
f(23,210,1,5,'rcu_core_si')
f(24,210,1,5,'rcu_core')
f(25,210,1,5,'_raw_spin_unlock_irqrestore')
f(16,211,3,2,'scala/runtime/Statics.releaseFence',3,0,0)
f(17,212,2,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d1c400.invoke_MT',2,0,0)
f(18,213,1,2,'java/lang/invoke/Invokers.checkCustomized',1,0,0)
f(15,214,5,2,'scala/collection/immutable/$colon$colon.next_$eq',5,0,0)
f(15,219,2,2,'scala/collection/mutable/ListBuffer.first_$eq',2,0,0)
f(9,221,138,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',119,0,0)
f(10,226,133,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',114,0,0)
f(11,226,133,2,'kyo/bench/Bench$$Lambda$37.0x0000000800c3f348.apply',114,0,0)
f(12,226,133,2,'kyo/bench/Bench.$anonfun$1',114,0,0)
f(13,226,133,2,'kyo/bench/Bench.kyoBenchFiber',114,0,0)
f(14,226,133,2,'kyo/bench/CollectAllBench.kyoBench',114,0,0)
f(15,226,83,2,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1',81,0,0)
f(16,226,83,2,'kyo/bench/CollectAllBench$$Lambda$58.0x0000000800d56000.apply',81,0,0)
f(17,226,83,2,'kyo/bench/CollectAllBench.$anonfun$2',81,0,0)
f(18,226,83,2,'scala/runtime/BoxesRunTime.boxToLong',81,0,0)
f(19,307,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(20,307,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(21,307,1,4,'MemAllocator::allocate() const')
f(22,307,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(19,308,1,4,'SharedRuntime::on_slowpath_allocation_exit(JavaThread*)')
f(15,309,10,1,'scala/collection/AbstractIterable.toList')
f(16,309,10,1,'scala/collection/IterableOnceOps.toList$')
f(17,309,10,1,'scala/collection/IterableOnceOps.toList')
f(18,309,10,1,'scala/collection/immutable/List.prependedAll')
f(19,309,9,1,'scala/collection/immutable/$colon$colon.<init>')
f(20,309,9,1,'scala/collection/immutable/List.<init>')
f(21,309,9,1,'scala/collection/immutable/AbstractSeq.<init>')
f(22,309,9,1,'scala/collection/AbstractSeq.<init>')
f(23,309,9,1,'scala/collection/AbstractIterable.<init>')
f(24,309,9,1,'java/lang/Object.<init>')
f(19,318,1,1,'scala/collection/immutable/NewVectorIterator.next')
f(20,318,1,1,'scala/collection/immutable/NewVectorIterator.advance')
f(21,318,1,1,'scala/collection/immutable/NewVectorIterator.advanceA')
f(15,319,38,2,'scala/collection/immutable/Range.map',31,0,0)
f(16,319,7,2,'kyo/bench/CollectAllBench$$Lambda$56.0x0000000800d44800.apply',7,0,0)
f(17,319,7,2,'kyo/bench/CollectAllBench.$anonfun$adapted$1',7,0,0)
f(18,319,7,2,'scala/runtime/BoxesRunTime.unboxToInt',7,0,0)
f(16,326,21,2,'scala/collection/SeqFactory$Delegate.newBuilder',21,0,0)
f(17,326,21,2,'scala/collection/immutable/Vector$.newBuilder',21,0,0)
f(18,326,21,2,'scala/collection/immutable/Vector$.newBuilder',21,0,0)
f(19,326,21,2,'scala/collection/immutable/VectorBuilder.<init>',21,0,0)
f(16,347,2,2,'scala/collection/immutable/Range.iterator',2,0,0)
f(17,347,2,2,'scala/collection/immutable/RangeIterator.<init>',2,0,0)
f(18,347,2,2,'scala/collection/AbstractIterator.<init>',2,0,0)
f(16,349,5,1,'scala/collection/immutable/VectorBuilder.addOne',1,0,0)
f(17,349,5,1,'scala/collection/immutable/VectorBuilder.addOne',1,0,0)
f(18,350,4,1,'scala/collection/immutable/VectorBuilder.advance')
f(19,350,4,1,'scala/collection/immutable/VectorBuilder.advance1')
f(16,354,3,1,'scala/collection/immutable/VectorBuilder.result')
f(17,354,3,1,'scala/collection/immutable/VectorBuilder.result')
f(18,356,1,2,'java/util/Arrays.copyOf',1,0,0)
f(15,357,2,2,'scala/runtime/RichInt$.until$extension',2,0,0)
f(16,357,2,2,'scala/collection/immutable/Range$Exclusive.<init>',2,0,0)
f(17,357,2,2,'scala/collection/immutable/Range.<init>',2,0,0)
f(18,357,2,2,'scala/collection/immutable/Range.longLength',2,0,0)
f(19,357,2,2,'scala/collection/immutable/Range.hasStub',2,0,0)
f(20,357,2,2,'scala/collection/immutable/Range.isExact',2,0,0)
f(21,357,2,2,'scala/collection/immutable/Range.gap',2,0,0)
f(22,357,2,2,'scala/collection/immutable/Range.start',2,0,0)
f(9,359,1,1,'kyo/concurrent/scheduler/IOTask.finalize$1')
f(9,360,32,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,360,32,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,360,32,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,360,32,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,360,32,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,360,32,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,360,32,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,360,32,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,360,32,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,360,32,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,360,32,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,360,32,1,'jdk/internal/misc/Unsafe.unpark')
f(21,362,1,3,'Unsafe_Unpark')
f(22,362,1,3,'pthread_mutex_lock')
f(21,363,29,3,'pthread_cond_signal')
f(22,363,29,5,'entry_SYSCALL_64_after_hwframe')
f(23,363,29,5,'do_syscall_64')
f(24,364,28,5,'__x64_sys_futex')
f(25,364,28,5,'do_futex')
f(26,364,28,5,'futex_wake')
f(27,364,2,5,'mark_wake_futex')
f(27,366,26,5,'wake_up_q')
f(28,366,26,5,'_raw_spin_unlock_irqrestore')
f(9,392,2,2,'kyo/ios$KyoIO.effect',2,0,0)
f(7,394,1,2,'kyo/concurrent/scheduler/Queue.poll',1,0,0)
f(8,394,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(9,394,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(7,395,28,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,395,28,1,'kyo/concurrent/scheduler/Worker.park')
f(9,395,28,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,395,28,1,'jdk/internal/misc/Unsafe.park')
f(11,396,2,3,'Unsafe_Park')
f(12,396,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,396,1,5,'entry_SYSCALL_64_after_hwframe')
f(14,396,1,5,'do_syscall_64')
f(15,396,1,5,'__x64_sys_futex')
f(16,396,1,5,'do_futex')
f(17,396,1,5,'futex_wake')
f(18,396,1,5,'get_futex_key')
f(12,397,1,3,'clock_gettime')
f(11,398,25,3,'[unknown]')
f(12,398,24,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,400,22,5,'entry_SYSCALL_64_after_hwframe')
f(14,400,22,5,'do_syscall_64')
f(15,401,19,5,'__x64_sys_futex')
f(16,401,19,5,'do_futex')
f(17,401,19,5,'futex_wait')
f(18,401,19,5,'futex_wait_queue_me')
f(19,401,19,5,'schedule')
f(20,401,19,5,'__schedule')
f(21,401,19,5,'finish_task_switch.isra.0')
f(15,420,2,5,'syscall_exit_to_user_mode')
f(16,420,2,5,'exit_to_user_mode_prepare')
f(17,420,2,5,'exit_to_user_mode_loop')
f(18,421,1,5,'__rseq_handle_notify_resume')
f(19,421,1,5,'rseq_ip_fixup')
f(20,421,1,5,'__get_user_8')
f(12,422,1,3,'pthread_mutex_trylock')
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: 576px}
</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(36);
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,23336,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,23328,1,'java/lang/Thread.run')
f(2,1,23328,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,23328,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,23328,1,'java/util/concurrent/FutureTask.run')
f(5,1,23328,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,23328,1,'java/util/concurrent/FutureTask.run')
f(7,1,23328,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,23328,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,23328,1,'java/lang/reflect/Method.invoke')
f(10,1,23328,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,23328,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,23328,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,23328,1,'kyo/bench/jmh_generated/CollectAllBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,1,23327,1,'kyo/bench/jmh_generated/CollectAllBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,1,23327,1,'kyo/bench/Bench.syncKyo')
f(16,1,17163,1,'kyo/bench/Bench.runLoop$1')
f(17,1,17163,1,'kyo/bench/CollectAllBench$$anon$2.apply')
f(18,1,5503,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1')
f(19,1,3589,2,'kyo.bench.CollectAllBench$$anon$2')
f(19,3590,1914,1,'kyo/bench/CollectAllBench$$Lambda$41.0x0000000800d26000.apply')
f(20,3590,1914,1,'kyo/bench/CollectAllBench.$anonfun$2')
f(21,3590,1914,1,'scala/collection/AbstractIterable.sum')
f(22,3590,1914,1,'scala/collection/IterableOnceOps.sum$')
f(23,3590,1914,1,'scala/collection/IterableOnceOps.sum')
f(24,3590,1914,1,'scala/collection/AbstractIterable.reduce')
f(25,3590,1914,1,'scala/collection/IterableOnceOps.reduce$')
f(26,3590,1914,1,'scala/collection/IterableOnceOps.reduce')
f(27,3590,1914,1,'scala/collection/AbstractIterable.reduceLeft')
f(28,3590,1914,1,'scala/collection/IterableOnceOps.reduceLeft$')
f(29,3590,1914,1,'scala/collection/IterableOnceOps.reduceLeft')
f(30,3590,1914,1,'scala/collection/IterableOnceOps$$Lambda$42.0x0000000800d2b8e8.apply')
f(31,3590,1914,1,'scala/collection/IterableOnceOps.$anonfun$sum$1')
f(32,3590,1914,1,'scala/math/Numeric$IntIsIntegral$.plus')
f(33,3590,1914,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(34,3590,1914,1,'java/lang/Integer.valueOf')
f(35,3590,1914,2,'java.lang.Integer')
f(18,5504,11660,1,'kyo/lists$Lists$$anon$11.apply')
f(19,5504,11660,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(20,5504,11660,1,'kyo/lists$Lists$$Lambda$40.0x0000000800d1fbf8.apply')
f(21,5504,11660,1,'kyo/lists$Lists.$anonfun$5')
f(22,5504,7374,1,'kyo/lists$Lists.loop$2')
f(23,5504,2866,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,5504,2866,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,5504,2866,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,5504,2866,2,'kyo.lists$Lists$$Lambda$40+0x0000000800d1fbf8')
f(23,8370,4508,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(24,8370,4508,2,'kyo.lists$Lists$$anon$11')
f(22,12878,4286,1,'scala/collection/mutable/ListBuffer.addOne')
f(23,12878,4286,2,'scala.collection.immutable.$colon$colon')
f(16,17164,6164,1,'kyo/bench/CollectAllBench.kyoBench')
f(17,17164,13,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1')
f(18,17164,13,2,'kyo.bench.CollectAllBench$$anon$2')
f(17,17177,15,1,'kyo/lists$Lists.collect')
f(18,17177,15,1,'scala/collection/mutable/ListBuffer$.apply')
f(19,17177,15,1,'scala/collection/IterableFactory.apply$')
f(20,17177,15,1,'scala/collection/IterableFactory.apply')
f(21,17177,15,1,'scala/collection/mutable/ListBuffer$.from')
f(22,17177,15,1,'scala/collection/mutable/ListBuffer$.from')
f(23,17177,15,2,'scala.collection.mutable.ListBuffer')
f(17,17192,3314,1,'scala/collection/AbstractIterable.toList')
f(18,17192,3314,1,'scala/collection/IterableOnceOps.toList$')
f(19,17192,3314,1,'scala/collection/IterableOnceOps.toList')
f(20,17192,3314,1,'scala/collection/immutable/List.prependedAll')
f(21,17192,3300,2,'scala.collection.immutable.$colon$colon')
f(21,20492,14,1,'scala/collection/immutable/Vector.iterator')
f(22,20492,14,2,'scala.collection.immutable.NewVectorIterator')
f(17,20506,2822,1,'scala/collection/immutable/Range.map')
f(18,20506,1895,1,'kyo/bench/CollectAllBench$$Lambda$39.0x0000000800cbd5b0.apply')
f(19,20506,1895,1,'kyo/bench/CollectAllBench.$anonfun$adapted$1')
f(20,20506,1895,1,'kyo/bench/CollectAllBench.$anonfun$1')
f(21,20506,1895,2,'kyo.bench.CollectAllBench$$anon$1')
f(18,22401,15,1,'scala/collection/SeqFactory$Delegate.newBuilder')
f(19,22401,15,1,'scala/collection/immutable/Vector$.newBuilder')
f(20,22401,15,1,'scala/collection/immutable/Vector$.newBuilder')
f(21,22401,15,1,'scala/collection/immutable/VectorBuilder.<init>')
f(22,22401,15,2,'java.lang.Object[]')
f(18,22416,883,1,'scala/collection/immutable/VectorBuilder.addOne')
f(19,22416,883,1,'scala/collection/immutable/VectorBuilder.addOne')
f(20,22416,883,1,'scala/collection/immutable/VectorBuilder.advance')
f(21,22416,883,1,'scala/collection/immutable/VectorBuilder.advance1')
f(22,22416,15,2,'java.lang.Object[][]')
f(22,22431,868,2,'java.lang.Object[]')
f(18,23299,29,1,'scala/collection/immutable/VectorBuilder.result')
f(19,23299,29,1,'scala/collection/immutable/VectorBuilder.result')
f(20,23299,29,1,'java/util/Arrays.copyOfRange')
f(21,23299,29,2,'java.lang.Object[][]')
f(14,23328,1,1,'org/openjdk/jmh/results/BenchmarkTaskResult.add')
f(15,23328,1,1,'java/util/ArrayList.add')
f(16,23328,1,1,'java/util/ArrayList.add')
f(17,23328,1,1,'java/util/ArrayList.grow')
f(18,23328,1,1,'java/util/ArrayList.grow')
f(19,23328,1,2,'java.lang.Object[]')
f(1,23329,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,23329,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,23329,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,23329,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,23329,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,23329,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,23329,6,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,23329,1,2,'org.openjdk.jmh.infra.Control')
f(8,23330,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,23330,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,23330,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,23330,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,23330,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,23330,5,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,23335,1,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,23335,1,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,23335,1,1,'java/lang/ClassLoader.loadClass')
f(10,23335,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,23335,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,23335,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,23335,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,23335,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,23335,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,23335,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,23335,1,1,'java/util/jar/JarFile.getEntry')
f(18,23335,1,1,'java/util/zip/ZipFile.getEntry')
f(19,23335,1,1,'java/util/zip/ZipFile.getZipEntry')
f(20,23335,1,1,'java/util/jar/JavaUtilJarAccessImpl.entryFor')
f(21,23335,1,1,'java/util/jar/JarFile.entryFor')
f(22,23335,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: 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,500,3,'all')
f(1,0,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(3,0,1,5,'do_syscall_64')
f(4,0,1,5,'__x64_sys_futex')
f(2,1,3,3,'thread_native_entry(Thread*)')
f(3,1,3,4,'Thread::call_run()')
f(4,1,2,4,'GangWorker::run()')
f(5,1,2,4,'GangWorker::loop()')
f(6,1,1,4,'G1BatchedGangTask::work(unsigned int)')
f(7,1,1,4,'G1PostEvacuateCollectionSetCleanupTask2::FreeCollectionSetTask::do_work(unsigned int)')
f(8,1,1,4,'G1CollectionSet::par_iterate(HeapRegionClosure*, HeapRegionClaimer*, unsigned int, unsigned int) const')
f(9,1,1,4,'G1CollectionSet::iterate_part_from(HeapRegionClosure*, HeapRegionClaimer*, unsigned long, unsigned long, unsigned int, unsigned int) const [clone .part.0]')
f(10,1,1,4,'FreeCSetClosure::do_heap_region(HeapRegion*)')
f(11,1,1,4,'G1CollectedHeap::free_region(HeapRegion*, FreeRegionList*)')
f(12,1,1,4,'HeapRegion::hr_clear(bool)')
f(13,1,1,4,'G1FromCardCache::clear(unsigned int)')
f(6,2,1,4,'void WeakProcessor::Task::work<G1STWIsAliveClosure, G1KeepAliveClosure>(unsigned int, G1STWIsAliveClosure*, G1KeepAliveClosure*)')
f(4,3,1,4,'VMThread::run()')
f(5,3,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,3,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,3,1,4,'VM_Operation::evaluate()')
f(8,3,1,4,'VM_G1CollectForAllocation::doit()')
f(9,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,3,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,3,1,4,'G1CollectedHeap::evacuate_initial_collection_set(G1ParScanThreadStateSet*, bool)')
f(12,3,1,4,'G1RemSet::merge_heap_roots(bool)')
f(13,3,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(14,3,1,3,'sem_post')
f(15,3,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,3,1,5,'do_syscall_64')
f(17,3,1,5,'__x64_sys_futex')
f(18,3,1,5,'do_futex')
f(19,3,1,5,'futex_wake')
f(20,3,1,5,'wake_up_q')
f(21,3,1,5,'_raw_spin_unlock_irqrestore')
f(1,4,1,3,'[unknown]')
f(2,4,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(3,4,1,5,'entry_SYSCALL_64_after_hwframe')
f(4,4,1,5,'do_syscall_64')
f(5,4,1,5,'__x64_sys_futex')
f(6,4,1,5,'do_futex')
f(7,4,1,5,'futex_wait')
f(8,4,1,5,'futex_wait_queue_me')
f(9,4,1,5,'schedule')
f(10,4,1,5,'__schedule')
f(11,4,1,5,'finish_task_switch.isra.0')
f(1,5,6,3,'[unknown_Java]')
f(2,5,1,1,'kyo/bench/CollectAllBench$$Lambda$41.0x0000000800d26000.apply')
f(2,6,5,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(1,11,488,1,'java/lang/Thread.run')
f(2,11,488,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,11,488,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,11,488,1,'java/util/concurrent/FutureTask.run')
f(5,11,488,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,11,488,1,'java/util/concurrent/FutureTask.run')
f(7,11,488,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,11,488,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,11,488,1,'java/lang/reflect/Method.invoke')
f(10,11,488,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,11,488,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,11,488,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,11,488,1,'kyo/bench/jmh_generated/CollectAllBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,11,488,1,'kyo/bench/jmh_generated/CollectAllBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,11,488,1,'kyo/bench/Bench.syncKyo',93,0,0)
f(16,11,332,1,'kyo/bench/Bench.runLoop$1',93,0,0)
f(17,37,306,1,'kyo/bench/CollectAllBench$$anon$2.apply',67,0,0)
f(18,49,108,1,'kyo/bench/CollectAllBench.kyo$bench$CollectAllBench$$_$transformLoop$1',5,0,0)
f(19,51,103,1,'kyo/bench/CollectAllBench$$Lambda$41.0x0000000800d26000.apply')
f(20,51,103,2,'kyo/bench/CollectAllBench.$anonfun$2',83,0,0)
f(21,51,103,2,'scala/collection/AbstractIterable.sum',83,0,0)
f(22,51,103,2,'scala/collection/IterableOnceOps.sum$',83,0,0)
f(23,51,103,2,'scala/collection/IterableOnceOps.sum',83,0,0)
f(24,51,103,2,'scala/collection/AbstractIterable.reduce',83,0,0)
f(25,51,103,2,'scala/collection/IterableOnceOps.reduce$',83,0,0)
f(26,51,103,2,'scala/collection/IterableOnceOps.reduce',83,0,0)
f(27,51,103,2,'scala/collection/AbstractIterable.reduceLeft',83,0,0)
f(28,51,103,2,'scala/collection/IterableOnceOps.reduceLeft$',83,0,0)
f(29,51,103,2,'scala/collection/IterableOnceOps.reduceLeft',83,0,0)
f(30,54,82,2,'scala/collection/IterableOnceOps$$Lambda$42.0x0000000800d2b8e8.apply',62,0,0)
f(31,54,82,2,'scala/collection/IterableOnceOps.$anonfun$sum$1',62,0,0)
f(32,54,82,2,'scala/math/Numeric$IntIsIntegral$.plus',62,0,0)
f(33,54,76,2,'scala/runtime/BoxesRunTime.boxToInteger',56,0,0)
f(34,96,1,5,'asm_sysvec_hyperv_stimer0')
f(35,96,1,5,'sysvec_hyperv_stimer0')
f(36,96,1,5,'irq_exit_rcu')
f(37,96,1,5,'__irq_exit_rcu')
f(38,96,1,5,'__softirqentry_text_start')
f(34,97,33,2,'java/lang/Integer.valueOf',13,0,0)
f(35,106,24,1,'java/lang/Integer.<init>',4,0,0)
f(36,110,20,1,'java/lang/Number.<init>')
f(33,130,6,2,'scala/runtime/BoxesRunTime.unboxToInt',6,0,0)
f(30,136,18,2,'scala/collection/StrictOptimizedLinearSeqOps$$anon$1.next',18,0,0)
f(31,149,4,2,'scala/collection/immutable/$colon$colon.head',4,0,0)
f(31,153,1,2,'scala/collection/immutable/$colon$colon.tail',1,0,0)
f(32,153,1,2,'scala/collection/immutable/$colon$colon.tail',1,0,0)
f(33,153,1,2,'scala/collection/immutable/$colon$colon.next',1,0,0)
f(19,154,3,2,'kyo/bench/CollectAllBench$$anon$2.<init>',3,0,0)
f(20,156,1,2,'kyo/core$internal$KyoCont.<init>',1,0,0)
f(18,157,186,1,'kyo/lists$Lists$$anon$11.apply',50,0,0)
f(19,164,43,2,'kyo/bench/CollectAllBench$$anon$1.apply',43,0,0)
f(20,164,43,2,'kyo/bench/CollectAllBench$$anon$1.apply',43,0,0)
f(21,164,43,2,'scala/runtime/BoxesRunTime.boxToInteger',43,0,0)
f(22,203,4,2,'java/lang/Integer.valueOf',4,0,0)
f(19,207,136,1,'kyo/lists$Lists.kyo$lists$Lists$$_$transformLoop$5')
f(20,209,109,2,'kyo/lists$Lists$$Lambda$40.0x0000000800d1fbf8.apply',109,0,0)
f(21,209,109,2,'kyo/lists$Lists.$anonfun$5',109,0,0)
f(22,211,29,2,'kyo/lists$Lists.loop$2',29,0,0)
f(23,225,15,2,'scala/collection/immutable/List.equals',15,0,0)
f(24,225,15,2,'scala/collection/immutable/List.listEq$1',15,0,0)
f(25,234,6,2,'scala/collection/immutable/List.isEmpty',6,0,0)
f(22,240,78,2,'scala/collection/mutable/ListBuffer.addOne',78,0,0)
f(23,246,7,2,'scala/collection/immutable/$colon$colon.<init>',7,0,0)
f(24,248,1,2,'scala/collection/immutable/List.<init>',1,0,0)
f(25,248,1,2,'scala/collection/immutable/AbstractSeq.<init>',1,0,0)
f(26,248,1,2,'scala/collection/AbstractSeq.<init>',1,0,0)
f(27,248,1,2,'scala/collection/AbstractIterable.<init>',1,0,0)
f(24,249,4,2,'scala/runtime/Statics.releaseFence',4,0,0)
f(25,249,4,2,'java/lang/invoke/LambdaForm$MH.0x0000000800ca0400.invoke_MT',4,0,0)
f(23,253,11,2,'scala/collection/immutable/$colon$colon.next_$eq',11,0,0)
f(23,264,2,2,'scala/collection/mutable/ListBuffer.ensureUnaliased',2,0,0)
f(23,266,12,2,'scala/collection/mutable/ListBuffer.first_$eq',12,0,0)
f(23,278,40,2,'scala/collection/mutable/ListBuffer.last0_$eq',40,0,0)
f(20,318,25,2,'kyo/lists$Lists$$anon$11.<init>',25,0,0)
f(21,318,25,2,'kyo/core$internal$KyoCont.<init>',25,0,0)
f(22,322,12,2,'kyo/core$internal$Kyo.<init>',12,0,0)
f(22,334,8,2,'kyo/ios$KyoIO.effect',8,0,0)
f(22,342,1,2,'kyo/ios$KyoIO.value',1,0,0)
f(16,343,156,1,'kyo/bench/CollectAllBench.kyoBench')
f(17,344,29,2,'scala/collection/AbstractIterable.toList',24,0,0)
f(18,344,29,2,'scala/collection/IterableOnceOps.toList$',24,0,0)
f(19,344,29,2,'scala/collection/IterableOnceOps.toList',24,0,0)
f(20,344,29,2,'scala/collection/immutable/List.prependedAll',24,0,0)
f(21,345,17,2,'scala/collection/immutable/$colon$colon.<init>',17,0,0)
f(21,362,11,2,'scala/collection/immutable/NewVectorIterator.next',6,0,0)
f(22,367,6,1,'scala/collection/immutable/NewVectorIterator.advance',1,0,0)
f(23,368,3,1,'scala/collection/immutable/NewVectorIterator.advanceA')
f(23,371,2,1,'scala/collection/immutable/NewVectorIterator.advanceSlice')
f(17,373,85,2,'scala/collection/immutable/Range.map',79,0,0)
f(18,386,33,2,'scala/collection/SeqFactory$Delegate.newBuilder',33,0,0)
f(19,387,32,2,'scala/collection/immutable/Vector$.newBuilder',32,0,0)
f(20,416,3,2,'scala/collection/immutable/Vector$.newBuilder',3,0,0)
f(21,416,3,2,'scala/collection/immutable/VectorBuilder.<init>',3,0,0)
f(18,419,19,2,'scala/collection/immutable/Range.iterator',19,0,0)
f(19,424,14,2,'scala/collection/immutable/RangeIterator.<init>',14,0,0)
f(20,424,14,2,'scala/collection/AbstractIterator.<init>',14,0,0)
f(21,426,12,2,'java/lang/Object.<init>',12,0,0)
f(18,438,14,2,'scala/collection/immutable/RangeIterator.next',14,0,0)
f(19,438,14,2,'scala/collection/immutable/RangeIterator.next',14,0,0)
f(18,452,5,1,'scala/collection/immutable/VectorBuilder.addOne')
f(19,452,5,1,'scala/collection/immutable/VectorBuilder.addOne')
f(20,452,5,1,'scala/collection/immutable/VectorBuilder.advance')
f(21,452,5,1,'scala/collection/immutable/VectorBuilder.advance1')
f(18,457,1,1,'scala/collection/immutable/VectorBuilder.result')
f(19,457,1,1,'scala/collection/immutable/VectorBuilder.result')
f(17,458,41,2,'scala/runtime/RichInt$.until$extension',41,0,0)
f(18,458,41,2,'scala/collection/immutable/Range$Exclusive.<init>',41,0,0)
f(19,458,41,2,'scala/collection/immutable/Range.<init>',41,0,0)
f(20,471,28,2,'scala/collection/immutable/Range.longLength',28,0,0)
f(21,476,3,2,'scala/collection/immutable/Range.gap',3,0,0)
f(21,479,20,2,'scala/collection/immutable/Range.hasStub',20,0,0)
f(22,487,12,2,'scala/collection/immutable/Range.isExact',12,0,0)
f(1,499,1,3,'pthread_cond_broadcast')
f(2,499,1,5,'entry_SYSCALL_64_after_hwframe')
f(3,499,1,5,'do_syscall_64')
f(4,499,1,5,'__x64_sys_futex')
f(5,499,1,5,'do_futex')
f(6,499,1,5,'futex_wake')
f(7,499,1,5,'mark_wake_futex')
f(8,499,1,5,'plist_del')
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,30022,3,'all')
f(1,0,30015,1,'java/lang/Thread.run')
f(2,0,30015,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,30015,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,5586,1,'java/util/concurrent/FutureTask.run')
f(5,0,5586,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,5586,1,'java/util/concurrent/FutureTask.run')
f(7,0,5586,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,5586,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,5586,1,'java/lang/reflect/Method.invoke')
f(10,0,5586,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,5586,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,5586,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,5586,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,5585,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,5585,1,'kyo/bench/Bench.forkKyo')
f(16,0,319,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,319,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,319,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,73,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,0,73,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c80a28')
f(19,73,246,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c80a28')
f(16,319,735,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,319,735,2,'kyo.bench.Bench$$anon$1')
f(16,1054,3471,1,'kyo/bench/Bench.runLoop$2')
f(17,1054,1492,1,'kyo/bench/Bench$$anon$1.apply')
f(18,1054,66,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,1054,66,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c84800.apply')
f(20,1054,66,1,'kyo/bench/Bench.$anonfun$2')
f(21,1054,66,1,'kyo/concurrent/fibers$Fiber.block')
f(22,1054,66,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,1120,1426,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,1120,1426,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,1120,1426,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c82180.apply')
f(21,1120,1426,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,1120,396,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,1516,684,2,'kyo.concurrent.scheduler.IOTask')
f(22,2200,346,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,2200,346,2,'kyo.concurrent.fibers$Fiber')
f(17,2546,1979,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,2546,1979,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,2546,1979,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,2546,1979,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,2546,1005,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,2546,1005,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,2546,575,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,3121,430,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,3121,430,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,3551,577,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,4128,397,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,4128,397,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,4128,397,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,4525,1060,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,4525,371,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,4525,371,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,4525,371,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,4525,371,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c82180')
f(17,4896,452,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,4896,452,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,5348,237,1,'kyo/locals$Locals$.save')
f(18,5348,237,2,'kyo.locals$Locals$$anon$3')
f(14,5585,1,2,'org.openjdk.jmh.results.BenchmarkTaskResult')
f(4,5586,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e478.run')
f(5,5586,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,5586,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,5586,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,5586,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,5586,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,5586,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,5586,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,5604,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e6a0.run')
f(5,5604,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,5604,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,5604,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5604,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5604,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5604,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$68+0x0000000800d4e3d0')
f(4,5622,24393,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22b68.run')
f(5,5622,24393,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,5622,24393,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,5622,24332,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,5622,24332,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,5622,24132,1,'kyo/bench/CountdownLatchBench$$anon$1.apply')
f(10,5622,24130,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1')
f(11,5622,24130,1,'kyo/bench/CountdownLatchBench$$Lambda$62.0x0000000800d4c7b0.apply')
f(12,5622,24130,1,'kyo/bench/CountdownLatchBench.$anonfun$1')
f(13,5622,24130,1,'kyo/bench/CountdownLatchBench.iterate$2')
f(14,5622,11208,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d50c00.linkToTargetMethod')
f(15,5622,11208,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50400.newInvokeSpecial')
f(16,5622,11208,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,5622,11208,2,'kyo.bench.CountdownLatchBench$$Lambda$62+0x0000000800d4c7b0')
f(14,16830,12922,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1')
f(15,16830,12922,2,'kyo.bench.CountdownLatchBench$$anon$1')
f(10,29752,2,1,'kyo/concurrent/latches$$anon$4.apply')
f(11,29752,2,1,'kyo/concurrent/latches$$anon$4.apply')
f(12,29752,2,1,'kyo/concurrent/fibers$Fiber$Promise.unsafeComplete')
f(13,29752,2,1,'kyo/concurrent/fibers$Fiber$Promise.loop$23')
f(14,29752,2,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(15,29752,2,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(16,29752,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(17,29752,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(18,29752,2,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(19,29752,2,1,'scala/runtime/function/JProcedure1.apply')
f(20,29752,2,1,'scala/runtime/function/JProcedure1.apply')
f(21,29752,2,1,'kyo/concurrent/scheduler/IOTask$$Lambda$64.0x0000000800d4d188.applyVoid')
f(22,29752,2,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(23,29752,2,1,'kyo/concurrent/scheduler/IOPromise.become')
f(24,29752,2,1,'kyo/concurrent/scheduler/IOPromise.loop$3')
f(25,29752,2,1,'kyo/concurrent/scheduler/IOPromise$Linked$.apply')
f(26,29752,2,2,'kyo.concurrent.scheduler.IOPromise$Linked')
f(9,29754,1,1,'kyo/bench/CountdownLatchBench$$anon$3.apply')
f(10,29754,1,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,29754,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,29754,1,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c82180.apply')
f(13,29754,1,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,29754,1,1,'kyo/concurrent/fibers$Fiber$.promise')
f(15,29754,1,2,'kyo.concurrent.fibers$Fiber')
f(9,29755,8,1,'kyo/bench/CountdownLatchBench$$anon$4.apply')
f(10,29755,3,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$4')
f(11,29755,3,1,'kyo/bench/CountdownLatchBench$$Lambda$57.0x0000000800d4a660.apply')
f(12,29755,3,1,'kyo/bench/CountdownLatchBench.$anonfun$2')
f(13,29755,2,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$3')
f(14,29755,2,2,'kyo.bench.CountdownLatchBench$$anon$3')
f(13,29757,1,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(14,29757,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,29757,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,29757,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,29757,1,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c82180')
f(10,29758,5,1,'kyo/concurrent/latches$Latches$$anon$2.apply')
f(11,29758,5,1,'kyo/concurrent/latches$Latches$$anon$2.apply')
f(12,29758,2,2,'kyo.concurrent.latches$$anon$3')
f(12,29760,3,1,'kyo/concurrent/latches$$anon$3.<init>')
f(13,29760,2,2,'kyo.concurrent.latches$$anon$4')
f(13,29762,1,1,'kyo/concurrent/fibers$Fiber.join')
f(14,29762,1,1,'kyo/concurrent/fibers$Fibers.get')
f(15,29762,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(16,29762,1,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(9,29763,186,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,29763,186,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,29763,185,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c80a28.apply')
f(12,29763,185,1,'kyo/bench/Bench.$anonfun$1')
f(13,29763,185,1,'kyo/bench/CountdownLatchBench.kyoBenchFiber')
f(14,29763,1,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$4')
f(15,29763,1,2,'kyo.bench.CountdownLatchBench$$anon$4')
f(14,29764,184,1,'kyo/concurrent/latches$Latches$.init')
f(15,29764,184,1,'kyo/concurrent/latches$Latches$.kyo$concurrent$latches$Latches$$$_$transformLoop$1')
f(16,29764,184,1,'kyo/concurrent/latches$Latches$$$Lambda$56.0x0000000800d49380.apply')
f(17,29764,184,1,'kyo/concurrent/latches$Latches$.$anonfun$adapted$1')
f(18,29764,184,1,'kyo/concurrent/latches$Latches$.$anonfun$1')
f(19,29764,184,2,'kyo.concurrent.latches$Latches$$anon$2')
f(11,29948,1,1,'kyo/bench/CountdownLatchBench$$Lambda$58.0x0000000800d4ba98.apply')
f(12,29948,1,1,'kyo/bench/CountdownLatchBench.$anonfun$3')
f(13,29948,1,1,'kyo/bench/CountdownLatchBench.iterate$2')
f(14,29948,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d50c00.linkToTargetMethod')
f(15,29948,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50400.newInvokeSpecial')
f(16,29948,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,29948,1,2,'kyo.bench.CountdownLatchBench$$Lambda$62+0x0000000800d4c7b0')
f(9,29949,4,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,29949,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,29949,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,29949,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,29949,1,2,'kyo.concurrent.scheduler.IOTask$$Lambda$63+0x0000000800d4cd80')
f(10,29950,3,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,29950,3,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(9,29953,1,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,29953,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,29953,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,29953,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,29953,1,2,'kyo.concurrent.scheduler.IOTask$$Lambda$64+0x0000000800d4d188')
f(7,29954,60,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,29954,60,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,29954,60,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,29954,60,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,29954,60,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(12,29954,60,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d21a48')
f(7,30014,1,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,30014,1,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,30014,1,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,30014,1,1,'scala/runtime/ObjectRef.create')
f(11,30014,1,2,'scala.runtime.ObjectRef')
f(1,30015,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,30015,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,30015,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,30015,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,30015,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,30015,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,30015,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,30015,1,5,'org.openjdk.jmh.runner.InfraControl')
f(8,30016,1,1,'org/openjdk/jmh/runner/InfraControl.<init>')
f(9,30016,1,1,'org/openjdk/jmh/runner/InfraControlL4.<init>')
f(10,30016,1,1,'org/openjdk/jmh/runner/InfraControlL3.<init>')
f(11,30016,1,1,'org/openjdk/jmh/runner/InfraControlL2.<init>')
f(12,30016,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,30017,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,30017,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,30017,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,30017,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,30017,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,30017,5,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: 576px}
</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(36);
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,455,3,'all')
f(1,0,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,2,3,'thread_native_entry(Thread*)')
f(3,0,2,4,'Thread::call_run()')
f(4,0,2,4,'VMThread::run()')
f(5,0,2,4,'VMThread::inner_execute(VM_Operation*)')
f(6,0,2,4,'SafepointSynchronize::begin()')
f(7,0,2,4,'SafepointSynchronize::do_cleanup_tasks()')
f(8,0,2,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(9,0,2,3,'sem_post')
f(10,0,2,5,'entry_SYSCALL_64_after_hwframe')
f(11,0,2,5,'do_syscall_64')
f(12,0,2,5,'__x64_sys_futex')
f(13,0,2,5,'do_futex')
f(14,0,2,5,'futex_wake')
f(15,0,2,5,'wake_up_q')
f(16,0,2,5,'_raw_spin_unlock_irqrestore')
f(1,2,453,1,'java/lang/Thread.run')
f(2,2,453,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,2,453,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,2,25,1,'java/util/concurrent/FutureTask.run')
f(5,2,25,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,2,25,1,'java/util/concurrent/FutureTask.run')
f(7,2,25,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,2,25,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,2,25,1,'java/lang/reflect/Method.invoke')
f(10,2,25,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,2,25,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,2,25,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,2,25,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,2,25,1,'kyo/bench/jmh_generated/CountdownLatchBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,3,24,1,'kyo/bench/Bench.forkKyo')
f(16,3,24,1,'kyo/bench/Bench.runLoop$2')
f(17,3,14,1,'kyo/bench/Bench$$anon$1.apply')
f(18,3,14,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,3,14,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,5,12,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply',1,0,0)
f(21,5,12,1,'kyo/concurrent/fibers$Fibers.$anonfun$4',1,0,0)
f(22,6,11,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,6,11,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,6,11,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,6,11,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,6,11,1,'jdk/internal/misc/Unsafe.unpark')
f(27,6,2,3,'Unsafe_Unpark')
f(28,7,1,4,'SafeThreadsListPtr::release_stable_list()')
f(27,8,9,3,'pthread_cond_signal')
f(28,8,9,5,'entry_SYSCALL_64_after_hwframe')
f(29,8,8,5,'do_syscall_64')
f(30,8,8,5,'__x64_sys_futex')
f(31,8,8,5,'do_futex')
f(32,8,8,5,'futex_wake')
f(33,9,7,5,'wake_up_q')
f(34,9,7,5,'_raw_spin_unlock_irqrestore')
f(29,16,1,5,'syscall_exit_to_user_mode')
f(17,17,10,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,17,10,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,17,10,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,17,10,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,17,10,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,17,10,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,17,9,1,'java/util/concurrent/locks/LockSupport.park')
f(24,17,9,1,'jdk/internal/misc/Unsafe.park')
f(25,17,2,3,'Unsafe_Park')
f(26,17,1,4,'Parker::park(bool, long)')
f(26,18,1,3,'pthread_mutex_trylock')
f(25,19,7,3,'[unknown]')
f(26,19,7,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,20,6,5,'entry_SYSCALL_64_after_hwframe')
f(28,20,6,5,'do_syscall_64')
f(29,20,6,5,'__x64_sys_futex')
f(30,20,6,5,'do_futex')
f(31,20,6,5,'futex_wait')
f(32,20,5,5,'futex_wait_queue_me')
f(33,20,5,5,'schedule')
f(34,20,5,5,'__schedule')
f(35,20,5,5,'finish_task_switch.isra.0')
f(32,25,1,5,'futex_wait_setup')
f(23,26,1,2,'kyo/concurrent/scheduler/IOPromise$$anon$1.tryAcquireShared',1,0,0)
f(4,27,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e478.run')
f(5,27,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,27,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,27,1,1,'java/lang/Thread.sleep')
f(8,27,1,3,'[unknown]')
f(9,27,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,27,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,27,1,5,'do_syscall_64')
f(12,27,1,5,'syscall_exit_to_user_mode')
f(13,27,1,5,'exit_to_user_mode_prepare')
f(14,27,1,5,'exit_to_user_mode_loop')
f(4,28,427,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22b68.run')
f(5,28,427,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,28,427,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,29,415,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,29,415,2,'kyo/concurrent/scheduler/IOTask.eval',387,0,0)
f(9,35,382,2,'kyo/bench/CountdownLatchBench$$anon$1.apply',379,0,0)
f(10,129,288,2,'kyo/concurrent/latches$$anon$4.apply',285,0,0)
f(11,145,272,2,'kyo/concurrent/latches$$anon$4.apply',269,0,0)
f(12,158,259,2,'kyo/concurrent/fibers$Fiber$Promise.unsafeComplete',256,0,0)
f(13,164,2,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(14,164,2,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(15,164,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(15,165,1,4,'MemAllocator::allocate() const')
f(16,165,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(17,165,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(18,165,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(13,166,251,2,'kyo/concurrent/fibers$Fiber$Promise.loop$23',250,0,0)
f(14,261,156,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',155,0,0)
f(15,261,156,2,'kyo/concurrent/scheduler/IOPromise.complete',155,0,0)
f(16,310,46,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',46,0,0)
f(17,310,46,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',46,0,0)
f(18,328,3,2,'java/lang/invoke/VarForm.getMemberName',3,0,0)
f(18,331,25,2,'java/lang/invoke/VarHandle.checkExactAccessMode',25,0,0)
f(16,356,61,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',60,0,0)
f(17,356,61,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',60,0,0)
f(18,390,4,2,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run',3,0,0)
f(19,393,1,1,'scala/runtime/function/JProcedure1.apply')
f(20,393,1,2,'scala/runtime/function/JProcedure1.apply',1,0,0)
f(21,393,1,2,'kyo/concurrent/scheduler/IOTask$$Lambda$64.0x0000000800d4d188.applyVoid',1,0,0)
f(22,393,1,2,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1',1,0,0)
f(23,393,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(24,393,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(18,394,23,2,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$5.run',23,0,0)
f(9,417,2,1,'kyo/bench/CountdownLatchBench$$anon$4.apply')
f(10,417,1,2,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$4',1,0,0)
f(11,417,1,2,'kyo/bench/CountdownLatchBench$$Lambda$57.0x0000000800d49db0.apply',1,0,0)
f(12,417,1,2,'kyo/bench/CountdownLatchBench.$anonfun$2',1,0,0)
f(13,417,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(14,417,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(15,417,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(10,418,1,1,'kyo/concurrent/latches$Latches$$anon$2.apply')
f(11,418,1,2,'kyo/concurrent/latches$Latches$$anon$2.apply',1,0,0)
f(12,418,1,2,'kyo/concurrent/latches$$anon$3.<init>',1,0,0)
f(13,418,1,2,'kyo/concurrent/fibers$Fibers.unsafePromise',1,0,0)
f(14,418,1,2,'kyo/concurrent/scheduler/IOPromise.<init>',1,0,0)
f(15,418,1,2,'kyo/concurrent/scheduler/IOPromise.<init>',1,0,0)
f(16,418,1,2,'java/util/concurrent/atomic/AtomicReference.<init>',1,0,0)
f(9,419,2,2,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',2,0,0)
f(9,421,1,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,421,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(11,421,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(12,421,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(9,422,21,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,422,21,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',2,0,0)
f(11,422,21,1,'kyo/concurrent/scheduler/IOPromise.complete',2,0,0)
f(12,422,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(13,422,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(14,422,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(12,423,20,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush',1,0,0)
f(13,423,20,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',1,0,0)
f(14,423,20,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run',1,0,0)
f(15,423,1,3,'itable stub')
f(15,424,19,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,424,19,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,424,19,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,424,19,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,424,19,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,424,19,1,'jdk/internal/misc/Unsafe.unpark')
f(21,424,1,3,'Unsafe_Unpark')
f(22,424,1,4,'ThreadsListHandle::cv_internal_thread_to_JavaThread(_jobject*, JavaThread**, oopDesc**)')
f(21,425,18,3,'pthread_cond_signal')
f(22,429,14,5,'entry_SYSCALL_64_after_hwframe')
f(23,429,14,5,'do_syscall_64')
f(24,429,13,5,'__x64_sys_futex')
f(25,429,13,5,'do_futex')
f(26,429,13,5,'futex_wake')
f(27,429,13,5,'wake_up_q')
f(28,429,13,5,'_raw_spin_unlock_irqrestore')
f(24,442,1,5,'syscall_enter_from_user_mode')
f(9,443,1,1,'kyo/ios$KyoIO.effect')
f(7,444,1,2,'kyo/concurrent/scheduler/Queue.poll',1,0,0)
f(8,444,1,2,'kyo/concurrent/scheduler/Queue.modify',1,0,0)
f(9,444,1,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',1,0,0)
f(10,444,1,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',1,0,0)
f(7,445,10,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,445,10,1,'kyo/concurrent/scheduler/Worker.park')
f(9,445,10,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,445,10,1,'jdk/internal/misc/Unsafe.park')
f(11,445,3,3,'Unsafe_Park')
f(12,445,1,3,'clock_gettime')
f(12,446,1,3,'pthread_mutex_trylock')
f(12,447,1,3,'pthread_mutex_unlock')
f(11,448,7,3,'[unknown]')
f(12,448,7,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,448,7,5,'entry_SYSCALL_64_after_hwframe')
f(14,448,7,5,'do_syscall_64')
f(15,448,6,5,'__x64_sys_futex')
f(16,448,6,5,'do_futex')
f(17,448,6,5,'futex_wait')
f(18,448,6,5,'futex_wait_queue_me')
f(19,449,1,5,'hrtimer_sleeper_start_expires')
f(20,449,1,5,'_raw_spin_unlock_irqrestore')
f(19,450,4,5,'schedule')
f(20,450,4,5,'__schedule')
f(21,450,4,5,'finish_task_switch.isra.0')
f(15,454,1,5,'syscall_exit_to_user_mode')
f(16,454,1,5,'exit_to_user_mode_prepare')
f(17,454,1,5,'exit_to_user_mode_loop')
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: 464px}
</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(29);
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,33123,3,'all')
f(1,0,33116,1,'java/lang/Thread.run')
f(2,0,33116,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,33116,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,5417,1,'java/util/concurrent/FutureTask.run')
f(5,0,5417,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,5417,1,'java/util/concurrent/FutureTask.run')
f(7,0,5417,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,5417,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,5417,1,'java/lang/reflect/Method.invoke')
f(10,0,5417,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,5417,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,5417,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,5417,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,0,5416,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,0,5416,1,'kyo/bench/Bench.syncKyo')
f(16,0,2529,1,'kyo/bench/Bench.runLoop$1')
f(17,0,1116,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,0,1116,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,0,1116,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,0,1116,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,0,605,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,0,605,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,0,288,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,288,317,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,288,317,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,605,231,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,836,280,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,836,280,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,836,280,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(17,1116,1413,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,1116,1107,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,1116,1107,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,1116,1107,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,1116,753,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,1116,753,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,1116,753,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(24,1116,753,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,1116,118,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(25,1234,551,2,'kyo.concurrent.scheduler.IOTask')
f(25,1785,84,1,'kyo/concurrent/fibers$Fiber$.promise')
f(26,1785,84,2,'kyo.concurrent.fibers$Fiber')
f(21,1869,354,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(22,1869,354,1,'kyo/concurrent/fibers$Fibers$$Lambda$39.0x0000000800c85ba8.apply')
f(23,1869,354,1,'kyo/concurrent/fibers$Fibers.$anonfun$5')
f(24,1869,354,1,'kyo/concurrent/fibers$Fiber.join')
f(25,1869,354,1,'kyo/concurrent/fibers$Fibers.get')
f(26,1869,354,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(27,1869,354,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(18,2223,306,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,2223,306,1,'kyo/concurrent/fibers$Fibers$$Lambda$40.0x0000000800c84c30.apply')
f(20,2223,306,1,'kyo/concurrent/fibers$Fibers.$anonfun$31')
f(21,2223,306,1,'kyo/concurrent/fibers$Fiber.block')
f(22,2223,306,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(16,2529,2887,1,'kyo/bench/CountdownLatchBench.kyoBench')
f(17,2529,343,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,2529,343,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,2529,343,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,2529,57,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(21,2529,57,2,'kyo.bench.CountdownLatchBench$$Lambda$37+0x0000000800c80820')
f(20,2586,286,2,'kyo.bench.CountdownLatchBench$$Lambda$37+0x0000000800c80820')
f(17,2872,1324,1,'kyo/concurrent/fibers$Fibers.block')
f(18,2872,109,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,2872,109,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,2872,109,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,2872,109,2,'kyo.concurrent.fibers$Fibers$$Lambda$40+0x0000000800c84c30')
f(18,2981,204,1,'kyo/concurrent/fibers$Fibers.handler$3')
f(19,2981,204,2,'kyo.concurrent.fibers$Fibers$$anon$115')
f(18,3185,729,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$_$shallowHandleLoop$1')
f(19,3185,729,2,'kyo.concurrent.fibers$Fibers$$anon$116')
f(18,3914,282,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,3914,282,2,'kyo.concurrent.fibers$Fibers$$anon$117')
f(17,4196,1220,1,'kyo/concurrent/fibers$Fibers.fork')
f(18,4196,180,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,4196,180,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,4196,180,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,4196,180,2,'kyo.concurrent.fibers$Fibers$$Lambda$39+0x0000000800c85ba8')
f(18,4376,814,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(19,4376,377,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,4376,377,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,4376,377,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,4376,377,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c81f78')
f(19,4753,262,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,4753,262,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(19,5015,175,1,'kyo/locals$Locals$.save')
f(20,5015,175,2,'kyo.locals$Locals$$anon$3')
f(18,5190,226,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(19,5190,226,2,'kyo.concurrent.fibers$Fibers$$anon$34')
f(14,5416,1,2,'org.openjdk.jmh.results.RawResults')
f(4,5417,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e898.run')
f(5,5417,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,5417,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,5417,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,5417,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,5417,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,5417,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,5417,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,5435,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$51.0x0000000800d1eac0.run')
f(5,5435,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,5435,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,5435,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5435,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5435,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5435,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$69+0x0000000800d4e830')
f(4,5453,27663,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d22ef0.run')
f(5,5453,27663,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,5453,27663,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,5453,27663,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,5453,27663,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,5453,27390,1,'kyo/bench/CountdownLatchBench$$anon$1.apply')
f(10,5453,27382,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1')
f(11,5453,27382,1,'kyo/bench/CountdownLatchBench$$Lambda$63.0x0000000800d4cc10.apply')
f(12,5453,27382,1,'kyo/bench/CountdownLatchBench.$anonfun$1')
f(13,5453,27382,1,'kyo/bench/CountdownLatchBench.iterate$2')
f(14,5453,11486,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d50c00.linkToTargetMethod')
f(15,5453,11486,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50400.newInvokeSpecial')
f(16,5453,11486,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,5453,11486,2,'kyo.bench.CountdownLatchBench$$Lambda$63+0x0000000800d4cc10')
f(14,16939,15896,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1')
f(15,16939,15896,2,'kyo.bench.CountdownLatchBench$$anon$1')
f(10,32835,8,1,'kyo/concurrent/latches$$anon$4.apply')
f(11,32835,8,1,'kyo/concurrent/latches$$anon$4.apply')
f(12,32835,8,1,'kyo/concurrent/fibers$Fiber$Promise.unsafeComplete')
f(13,32835,8,1,'kyo/concurrent/fibers$Fiber$Promise.loop$23')
f(14,32835,8,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(15,32835,8,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(16,32835,8,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(17,32835,8,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(18,32835,8,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(19,32835,8,1,'scala/runtime/function/JProcedure1.apply')
f(20,32835,8,1,'scala/runtime/function/JProcedure1.apply')
f(21,32835,8,1,'kyo/concurrent/scheduler/IOTask$$Lambda$65.0x0000000800d4d5e8.applyVoid')
f(22,32835,8,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(23,32835,6,2,'kyo.concurrent.scheduler.IOTask')
f(23,32841,2,1,'kyo/concurrent/scheduler/IOPromise.become')
f(24,32841,2,1,'kyo/concurrent/scheduler/IOPromise.loop$3')
f(25,32841,1,1,'kyo/concurrent/scheduler/IOPromise$Linked$.apply')
f(26,32841,1,2,'kyo.concurrent.scheduler.IOPromise$Linked')
f(25,32842,1,1,'kyo/concurrent/scheduler/IOPromise.merge')
f(26,32842,1,1,'kyo/concurrent/scheduler/IOPromise.loop$2')
f(27,32842,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.merge')
f(28,32842,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$5')
f(9,32843,5,1,'kyo/bench/CountdownLatchBench$$anon$3.apply')
f(10,32843,1,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$3')
f(11,32843,1,1,'kyo/bench/CountdownLatchBench$$Lambda$60.0x0000000800d4c1b8.apply')
f(12,32843,1,1,'kyo/bench/CountdownLatchBench.$anonfun$4')
f(13,32843,1,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$2')
f(14,32843,1,2,'kyo.bench.CountdownLatchBench$$anon$2')
f(10,32844,4,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,32844,4,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,32844,4,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(13,32844,4,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,32844,1,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(14,32845,2,2,'kyo.concurrent.scheduler.IOTask')
f(14,32847,1,1,'kyo/concurrent/fibers$Fiber$.promise')
f(15,32847,1,2,'kyo.concurrent.fibers$Fiber')
f(9,32848,17,1,'kyo/bench/CountdownLatchBench$$anon$4.apply')
f(10,32848,8,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$4')
f(11,32848,8,1,'kyo/bench/CountdownLatchBench$$Lambda$58.0x0000000800d4a668.apply')
f(12,32848,8,1,'kyo/bench/CountdownLatchBench.$anonfun$2')
f(13,32848,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,32848,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,32848,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,32848,2,2,'kyo.bench.CountdownLatchBench$$Lambda$59+0x0000000800d4bef8')
f(13,32850,2,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$3')
f(14,32850,2,2,'kyo.bench.CountdownLatchBench$$anon$3')
f(13,32852,4,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(14,32852,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,32852,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,32852,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,32852,1,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c81f78')
f(14,32853,3,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(15,32853,3,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(10,32856,9,1,'kyo/concurrent/latches$Latches$$anon$2.apply')
f(11,32856,9,1,'kyo/concurrent/latches$Latches$$anon$2.apply')
f(12,32856,2,2,'kyo.concurrent.latches$$anon$3')
f(12,32858,7,1,'kyo/concurrent/latches$$anon$3.<init>')
f(13,32858,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(13,32859,1,2,'kyo.concurrent.latches$$anon$5')
f(13,32860,5,1,'kyo/concurrent/fibers$Fibers.unsafePromise')
f(14,32860,1,2,'kyo.concurrent.fibers$Fiber$Promise')
f(14,32861,4,2,'kyo.concurrent.scheduler.IOPromise')
f(9,32865,249,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,32865,249,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,32865,248,1,'kyo/bench/CountdownLatchBench$$Lambda$37.0x0000000800c80820.apply')
f(12,32865,248,1,'kyo/bench/CountdownLatchBench.kyoBench$$anonfun$1')
f(13,32865,248,1,'kyo/bench/CountdownLatchBench.kyoBenchFiber')
f(14,32865,1,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$4')
f(15,32865,1,2,'kyo.bench.CountdownLatchBench$$anon$4')
f(14,32866,247,1,'kyo/concurrent/latches$Latches$.init')
f(15,32866,247,1,'kyo/concurrent/latches$Latches$.kyo$concurrent$latches$Latches$$$_$transformLoop$1')
f(16,32866,247,1,'kyo/concurrent/latches$Latches$$$Lambda$57.0x0000000800d495b0.apply')
f(17,32866,247,1,'kyo/concurrent/latches$Latches$.$anonfun$adapted$1')
f(18,32866,247,1,'kyo/concurrent/latches$Latches$.$anonfun$1')
f(19,32866,247,2,'kyo.concurrent.latches$Latches$$anon$2')
f(11,33113,1,1,'kyo/bench/CountdownLatchBench$$Lambda$59.0x0000000800d4bef8.apply')
f(12,33113,1,1,'kyo/bench/CountdownLatchBench.$anonfun$3')
f(13,33113,1,1,'kyo/bench/CountdownLatchBench.iterate$2')
f(14,33113,1,1,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1')
f(15,33113,1,2,'kyo.bench.CountdownLatchBench$$anon$1')
f(9,33114,1,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,33114,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,33114,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,33114,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,33114,1,2,'kyo.concurrent.scheduler.IOTask$$Lambda$64+0x0000000800d4d1e0')
f(9,33115,1,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,33115,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,33115,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,33115,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,33115,1,2,'kyo.concurrent.scheduler.IOTask$$Lambda$65+0x0000000800d4d5e8')
f(1,33116,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,33116,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,33116,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,33116,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,33116,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,33116,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,33116,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,33116,2,2,'org.openjdk.jmh.runner.InfraControl')
f(8,33118,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,33118,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,33118,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,33118,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,33118,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,33118,5,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: 896px}
</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(56);
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,463,3,'all')
f(1,0,8,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,1,5,'entry_SYSCALL_64_after_hwframe')
f(3,0,1,5,'do_syscall_64')
f(4,0,1,5,'__x64_sys_futex')
f(5,0,1,5,'do_futex')
f(6,0,1,5,'futex_wait')
f(7,0,1,5,'futex_wait_setup')
f(8,0,1,5,'get_futex_key')
f(2,1,7,3,'thread_native_entry(Thread*)')
f(3,1,7,4,'Thread::call_run()')
f(4,1,7,4,'JavaThread::thread_main_inner()')
f(5,1,7,4,'CompileBroker::compiler_thread_loop()')
f(6,1,7,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,1,7,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,1,7,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,1,3,4,'Compile::Code_Gen()')
f(10,1,3,4,'PhaseChaitin::Register_Allocate()')
f(11,1,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,1,1,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(13,1,1,4,'IndexSetIterator::advance_and_next()')
f(11,2,1,4,'PhaseChaitin::build_ifg_virtual()')
f(11,3,1,4,'PhaseChaitin::post_allocate_copy_removal()')
f(9,4,3,4,'Compile::Optimize()')
f(10,4,1,4,'PhaseCCP::analyze()')
f(10,5,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,5,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,5,1,4,'PhaseIdealLoop::build_loop_early(VectorSet&, Node_List&, Node_Stack&)')
f(13,5,1,4,'PhaseIdealLoop::get_early_ctrl(Node*)')
f(10,6,1,4,'PhaseIterGVN::PhaseIterGVN(PhaseGVN*)')
f(9,7,1,4,'ParseGenerator::generate(JVMState*)')
f(10,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,7,1,4,'Parse::do_all_blocks()')
f(12,7,1,4,'Parse::do_one_block()')
f(13,7,1,4,'Parse::do_call()')
f(14,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,7,1,4,'ParseGenerator::generate(JVMState*)')
f(16,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,7,1,4,'Parse::do_all_blocks()')
f(18,7,1,4,'Parse::do_one_block()')
f(19,7,1,4,'Parse::do_call()')
f(20,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,7,1,4,'ParseGenerator::generate(JVMState*)')
f(22,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,7,1,4,'Parse::do_all_blocks()')
f(24,7,1,4,'Parse::do_one_block()')
f(25,7,1,4,'Parse::do_call()')
f(26,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(27,7,1,4,'ParseGenerator::generate(JVMState*)')
f(28,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,7,1,4,'Parse::do_all_blocks()')
f(30,7,1,4,'Parse::do_one_block()')
f(31,7,1,4,'Parse::do_call()')
f(32,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(33,7,1,4,'ParseGenerator::generate(JVMState*)')
f(34,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(35,7,1,4,'Parse::do_all_blocks()')
f(36,7,1,4,'Parse::do_one_block()')
f(37,7,1,4,'Parse::do_call()')
f(38,7,1,4,'ParseGenerator::generate(JVMState*)')
f(39,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(40,7,1,4,'Parse::do_all_blocks()')
f(41,7,1,4,'Parse::do_one_block()')
f(42,7,1,4,'Parse::do_call()')
f(43,7,1,4,'ParseGenerator::generate(JVMState*)')
f(44,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(45,7,1,4,'Parse::do_all_blocks()')
f(46,7,1,4,'Parse::do_one_block()')
f(47,7,1,4,'Parse::do_call()')
f(48,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(49,7,1,4,'ParseGenerator::generate(JVMState*)')
f(50,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(51,7,1,4,'Parse::do_exits()')
f(52,7,1,4,'PhaseGVN::transform_no_reclaim(Node*)')
f(53,7,1,4,'PhiNode::Value(PhaseGVN*) const')
f(54,7,1,4,'TypeOopPtr::filter_helper(Type const*, bool) const')
f(55,7,1,4,'Type::meet_helper(Type const*, bool) const')
f(1,8,454,1,'java/lang/Thread.run')
f(2,8,454,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,8,454,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,8,28,1,'java/util/concurrent/FutureTask.run')
f(5,8,28,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,8,28,1,'java/util/concurrent/FutureTask.run')
f(7,8,28,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,8,28,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,8,28,1,'java/lang/reflect/Method.invoke')
f(10,8,28,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,8,28,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,8,28,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,8,28,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,8,28,1,'kyo/bench/jmh_generated/CountdownLatchBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,8,28,1,'kyo/bench/Bench.syncKyo',1,0,0)
f(16,8,27,1,'kyo/bench/Bench.runLoop$1')
f(17,8,15,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,8,15,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,8,15,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,8,15,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,8,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,8,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,9,14,1,'java/util/concurrent/locks/LockSupport.park')
f(24,9,14,1,'jdk/internal/misc/Unsafe.park')
f(25,9,2,3,'Unsafe_Park')
f(26,10,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(25,11,12,3,'[unknown]')
f(26,11,12,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,11,12,5,'entry_SYSCALL_64_after_hwframe')
f(28,11,12,5,'do_syscall_64')
f(29,11,11,5,'__x64_sys_futex')
f(30,11,11,5,'do_futex')
f(31,11,11,5,'futex_wait')
f(32,11,1,5,'__cond_resched')
f(32,12,1,5,'_raw_spin_lock')
f(32,13,9,5,'futex_wait_queue_me')
f(33,13,9,5,'schedule')
f(34,13,9,5,'__schedule')
f(35,13,9,5,'finish_task_switch.isra.0')
f(29,22,1,5,'do_futex')
f(17,23,12,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,23,12,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,23,12,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,23,12,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,23,12,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,23,12,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,23,12,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(24,23,12,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,23,12,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,23,12,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,23,12,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,23,12,1,'java/util/concurrent/locks/LockSupport.unpark')
f(29,23,12,1,'jdk/internal/misc/Unsafe.unpark')
f(30,23,1,3,'Unsafe_Unpark')
f(31,23,1,3,'pthread_mutex_lock')
f(30,24,1,3,'__tls_get_addr')
f(30,25,10,3,'pthread_cond_signal')
f(31,25,10,5,'entry_SYSCALL_64_after_hwframe')
f(32,25,1,5,'__x64_sys_futex')
f(32,26,9,5,'do_syscall_64')
f(33,26,9,5,'__x64_sys_futex')
f(34,26,9,5,'do_futex')
f(35,26,9,5,'futex_wake')
f(36,26,9,5,'wake_up_q')
f(37,26,9,5,'_raw_spin_unlock_irqrestore')
f(16,35,1,2,'kyo/bench/CountdownLatchBench.kyoBench',1,0,0)
f(17,35,1,2,'kyo/concurrent/fibers$Fibers.block',1,0,0)
f(4,36,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e898.run')
f(5,36,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,36,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,36,1,1,'java/lang/Thread.sleep')
f(8,36,1,3,'JVM_Sleep')
f(9,36,1,4,'JavaThread::sleep(long)')
f(10,36,1,4,'os::PlatformEvent::park(long)')
f(4,37,425,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d22ef0.run')
f(5,37,425,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,37,425,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,38,411,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,106,343,2,'kyo/concurrent/scheduler/IOTask.eval',323,0,0)
f(9,260,153,2,'kyo/bench/CountdownLatchBench$$anon$1.apply',150,0,0)
f(10,264,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(11,264,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(12,264,1,4,'MemAllocator::allocate() const')
f(13,264,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,265,60,2,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1',60,0,0)
f(11,269,56,2,'kyo/bench/CountdownLatchBench$$Lambda$63.0x0000000800d4cc10.apply',56,0,0)
f(12,277,48,2,'kyo/bench/CountdownLatchBench.$anonfun$1',48,0,0)
f(13,277,48,2,'kyo/bench/CountdownLatchBench.iterate$2',48,0,0)
f(14,294,16,2,'java/lang/invoke/LambdaForm$MH.0x0000000800d50c00.linkToTargetMethod',16,0,0)
f(15,294,16,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50400.newInvokeSpecial',16,0,0)
f(16,294,16,2,'kyo/bench/CountdownLatchBench$$Lambda$63.0x0000000800d4cc10.<init>',16,0,0)
f(14,310,15,2,'kyo/bench/CountdownLatchBench.kyo$bench$CountdownLatchBench$$_$transformLoop$1',15,0,0)
f(15,310,15,2,'kyo/bench/CountdownLatchBench$$anon$1.<init>',15,0,0)
f(16,310,15,2,'kyo/core$internal$KyoCont.<init>',15,0,0)
f(17,313,9,2,'kyo/core$internal$Kyo.<init>',9,0,0)
f(17,322,3,2,'kyo/ios$KyoIO.value',3,0,0)
f(10,325,66,2,'kyo/concurrent/latches$$anon$4.apply',64,0,0)
f(11,340,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,340,1,4,'AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<598116ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 598116ul>::oop_access_barrier(void*)')
f(11,341,50,2,'kyo/concurrent/latches$$anon$4.apply',49,0,0)
f(12,376,10,2,'java/util/concurrent/atomic/AtomicInteger.decrementAndGet',10,0,0)
f(12,386,1,1,'kyo/concurrent/fibers$Fiber$Promise.unsafeComplete')
f(13,386,1,2,'kyo/concurrent/fibers$Fiber$Promise.loop$23',1,0,0)
f(14,386,1,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',1,0,0)
f(15,386,1,2,'kyo/concurrent/scheduler/IOPromise.complete',1,0,0)
f(16,386,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(17,386,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(18,386,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(12,387,4,2,'kyo/concurrent/latches$$anon$3.count',4,0,0)
f(10,391,22,2,'kyo/concurrent/scheduler/IOTask.apply',22,0,0)
f(9,413,1,1,'kyo/bench/CountdownLatchBench$$anon$4.apply')
f(10,413,1,2,'kyo/concurrent/latches$Latches$$anon$2.apply',1,0,0)
f(11,413,1,2,'kyo/concurrent/latches$Latches$$anon$2.apply',1,0,0)
f(12,413,1,2,'kyo/concurrent/latches$$anon$3.<init>',1,0,0)
f(13,413,1,2,'kyo/concurrent/fibers$Fibers.unsafePromise',1,0,0)
f(14,413,1,2,'kyo/concurrent/fibers$Fiber$Promise.<init>',1,0,0)
f(15,413,1,2,'kyo/concurrent/fibers$Fiber.<init>',1,0,0)
f(9,414,19,2,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',19,0,0)
f(9,433,1,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,433,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(11,433,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(12,433,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(9,434,15,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,434,15,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,434,15,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,434,15,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,434,15,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,434,15,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,434,15,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,434,15,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,434,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,434,15,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,434,15,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,434,15,1,'jdk/internal/misc/Unsafe.unpark')
f(21,434,15,3,'pthread_cond_signal')
f(22,435,14,5,'entry_SYSCALL_64_after_hwframe')
f(23,435,14,5,'do_syscall_64')
f(24,435,14,5,'__x64_sys_futex')
f(25,435,14,5,'do_futex')
f(26,435,14,5,'futex_wake')
f(27,435,14,5,'wake_up_q')
f(28,435,14,5,'_raw_spin_unlock_irqrestore')
f(7,449,1,2,'kyo/concurrent/scheduler/Queue.poll',1,0,0)
f(8,449,1,2,'kyo/concurrent/scheduler/Queue.modify',1,0,0)
f(9,449,1,2,'kyo/concurrent/scheduler/Queue$$Lambda$56.0x0000000800d20c00.apply',1,0,0)
f(10,449,1,2,'kyo/concurrent/scheduler/Queue.poll$$anonfun$1',1,0,0)
f(11,449,1,2,'scala/collection/mutable/PriorityQueue.dequeue',1,0,0)
f(12,449,1,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_size0_$eq',1,0,0)
f(13,449,1,2,'scala/collection/mutable/ArrayBuffer.size0_$eq',1,0,0)
f(7,450,11,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,450,11,1,'kyo/concurrent/scheduler/Worker.park')
f(9,450,11,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,450,11,1,'jdk/internal/misc/Unsafe.park')
f(11,450,11,3,'[unknown]')
f(12,450,10,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,450,10,5,'entry_SYSCALL_64_after_hwframe')
f(14,450,10,5,'do_syscall_64')
f(15,450,10,5,'__x64_sys_futex')
f(16,450,10,5,'do_futex')
f(17,450,10,5,'futex_wait')
f(18,450,1,5,'__get_user_nocheck_4')
f(18,451,9,5,'futex_wait_queue_me')
f(19,451,9,5,'schedule')
f(20,451,9,5,'__schedule')
f(21,451,9,5,'finish_task_switch.isra.0')
f(12,460,1,3,'pthread_cond_timedwait')
f(7,461,1,2,'kyo/concurrent/scheduler/Scheduler$.steal',1,0,0)
f(8,461,1,2,'kyo/concurrent/scheduler/Worker.load',1,0,0)
f(1,462,1,3,'pthread_cond_broadcast')
f(2,462,1,5,'entry_SYSCALL_64_after_hwframe')
f(3,462,1,5,'do_syscall_64')
f(4,462,1,5,'__x64_sys_futex')
f(5,462,1,5,'do_futex')
f(6,462,1,5,'futex_wake')
f(7,462,1,5,'wake_up_q')
f(8,462,1,5,'_raw_spin_unlock_irqrestore')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,26834,3,'all')
f(1,0,26827,1,'java/lang/Thread.run')
f(2,0,26827,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,26827,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,4660,1,'java/util/concurrent/FutureTask.run')
f(5,0,4660,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,4660,1,'java/util/concurrent/FutureTask.run')
f(7,0,4660,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,4660,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,4660,1,'java/lang/reflect/Method.invoke')
f(10,0,4660,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,4660,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,4660,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,4660,1,'kyo/bench/jmh_generated/DeepBindBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,4660,1,'kyo/bench/jmh_generated/DeepBindBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,4660,1,'kyo/bench/Bench.forkKyo')
f(16,0,239,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,239,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,239,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,239,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e0d0')
f(16,239,583,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,239,583,2,'kyo.bench.Bench$$anon$1')
f(16,822,3250,1,'kyo/bench/Bench.runLoop$2')
f(17,822,1250,1,'kyo/bench/Bench$$anon$1.apply')
f(18,822,166,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,822,166,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c82330.apply')
f(20,822,166,1,'kyo/bench/Bench.$anonfun$2')
f(21,822,166,1,'kyo/concurrent/fibers$Fiber.block')
f(22,822,166,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,988,1084,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,988,1084,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,988,1084,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c3f828.apply')
f(21,988,1084,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,988,92,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,1080,859,2,'kyo.concurrent.scheduler.IOTask')
f(22,1939,133,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,1939,133,2,'kyo.concurrent.fibers$Fiber')
f(17,2072,2000,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,2072,2000,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,2072,2000,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,2072,2000,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,2072,823,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,2072,823,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,2072,212,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,2284,611,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,2284,611,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,2895,583,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,3478,594,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,3478,594,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,3478,594,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,4072,588,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,4072,442,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,4072,442,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,4072,442,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,4072,442,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c3f828')
f(17,4514,103,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,4514,103,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,4617,43,1,'kyo/locals$Locals$.save')
f(18,4617,43,2,'kyo.locals$Locals$$anon$3')
f(4,4660,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1baf0.run')
f(5,4660,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,4660,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,4660,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,4660,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,4660,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,4660,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,4660,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,4678,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1bd18.run')
f(5,4678,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,4678,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,4678,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,4678,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,4678,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,4678,18,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(11,4678,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$58+0x0000000800d4c000')
f(4,4696,22131,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22ac0.run')
f(5,4696,22131,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,4696,22131,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,4696,22129,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,4696,22129,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,4696,21885,1,'kyo/bench/DeepBindBench$$anon$1.apply')
f(10,4696,21885,1,'kyo/bench/DeepBindBench$$anon$1.apply')
f(11,4696,21885,1,'kyo/bench/DeepBindBench.kyo$bench$DeepBindBench$$_$loop$1')
f(12,4696,21885,2,'kyo.bench.DeepBindBench$$anon$1')
f(9,26581,244,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,26581,244,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,26581,244,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e0d0.apply')
f(12,26581,244,1,'kyo/bench/Bench.$anonfun$1')
f(13,26581,244,1,'kyo/bench/Bench.kyoBenchFiber')
f(14,26581,244,1,'kyo/bench/DeepBindBench.kyoBench')
f(15,26581,244,1,'kyo/bench/DeepBindBench.kyo$bench$DeepBindBench$$_$loop$1')
f(16,26581,244,2,'kyo.bench.DeepBindBench$$anon$1')
f(7,26825,2,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,26825,2,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,26825,2,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,26825,2,1,'scala/runtime/ObjectRef.create')
f(11,26825,2,2,'scala.runtime.ObjectRef')
f(1,26827,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,26827,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,26827,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,26827,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,26827,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,26827,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,26827,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,26827,1,5,'org.openjdk.jmh.runner.InfraControl')
f(8,26828,1,1,'org/openjdk/jmh/runner/InfraControl.<init>')
f(9,26828,1,1,'org/openjdk/jmh/runner/InfraControlL4.<init>')
f(10,26828,1,1,'org/openjdk/jmh/runner/InfraControlL3.<init>')
f(11,26828,1,1,'org/openjdk/jmh/runner/InfraControlL2.<init>')
f(12,26828,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,26829,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,26829,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,26829,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,26829,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,26829,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,26829,5,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: 576px}
</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(36);
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,423,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,'HeapRegionManager::rebuild_free_list(WorkGang*)')
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,422,1,'java/lang/Thread.run')
f(2,1,422,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,422,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,46,1,'java/util/concurrent/FutureTask.run')
f(5,1,46,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,46,1,'java/util/concurrent/FutureTask.run')
f(7,1,46,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,46,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,46,1,'java/lang/reflect/Method.invoke')
f(10,1,46,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,46,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,46,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,46,1,'kyo/bench/jmh_generated/DeepBindBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,1,46,1,'kyo/bench/jmh_generated/DeepBindBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,1,46,1,'kyo/bench/Bench.forkKyo')
f(16,1,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,1,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,1,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,1,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,1,1,3,'Unsafe_AllocateInstance')
f(16,2,45,1,'kyo/bench/Bench.runLoop$2')
f(17,2,26,1,'kyo/bench/Bench$$anon$1.apply',1,0,0)
f(18,2,2,2,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1',1,0,0)
f(19,3,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(20,3,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(21,3,1,4,'MemAllocator::allocate() const')
f(22,3,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(23,3,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(24,3,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(25,3,1,4,'MutatorAllocRegion::retire(bool)')
f(26,3,1,4,'G1CollectedHeap::retire_mutator_alloc_region(HeapRegion*, unsigned long)')
f(27,3,1,4,'G1Policy::predict_region_non_copy_time_ms(HeapRegion*, bool) const')
f(18,4,24,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,4,24,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,5,22,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c3f828.apply')
f(21,5,22,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,5,22,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,5,22,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,5,22,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,5,22,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,5,22,1,'jdk/internal/misc/Unsafe.unpark')
f(27,5,1,3,'Unsafe_Unpark')
f(28,5,1,4,'SafeThreadsListPtr::release_stable_list()')
f(27,6,21,3,'pthread_cond_signal')
f(28,8,19,5,'entry_SYSCALL_64_after_hwframe')
f(29,8,19,5,'do_syscall_64')
f(30,8,19,5,'__x64_sys_futex')
f(31,8,19,5,'do_futex')
f(32,9,18,5,'futex_wake')
f(33,9,18,5,'wake_up_q')
f(34,9,18,5,'_raw_spin_unlock_irqrestore')
f(20,27,1,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',1,0,0)
f(21,27,1,2,'kyo/core$internal$KyoCont.<init>',1,0,0)
f(22,27,1,2,'kyo/ios$KyoIO.value',1,0,0)
f(17,28,19,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(18,28,19,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(19,28,19,1,'kyo/concurrent/scheduler/IOPromise.block',1,0,0)
f(20,28,18,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,28,18,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,28,18,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,29,1,2,'java/lang/Thread.interrupted',1,0,0)
f(23,30,16,1,'java/util/concurrent/locks/LockSupport.park')
f(24,30,16,1,'jdk/internal/misc/Unsafe.park')
f(25,30,4,3,'Unsafe_Park')
f(26,31,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,31,3,5,'entry_SYSCALL_64_after_hwframe')
f(28,31,2,5,'__x64_sys_futex')
f(28,33,1,5,'do_syscall_64')
f(29,33,1,5,'syscall_enter_from_user_mode')
f(25,34,12,3,'[unknown]')
f(26,34,12,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,34,12,5,'entry_SYSCALL_64_after_hwframe')
f(28,34,12,5,'do_syscall_64')
f(29,34,11,5,'__x64_sys_futex')
f(30,35,10,5,'do_futex')
f(31,35,10,5,'futex_wait')
f(32,36,8,5,'futex_wait_queue_me')
f(33,36,8,5,'schedule')
f(34,36,8,5,'__schedule')
f(35,36,8,5,'finish_task_switch.isra.0')
f(32,44,1,5,'futex_wait_setup')
f(29,45,1,5,'syscall_enter_from_user_mode')
f(20,46,1,2,'kyo/concurrent/scheduler/Scheduler$.flush',1,0,0)
f(21,46,1,2,'kyo/concurrent/scheduler/Worker$.apply',1,0,0)
f(4,47,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1baf0.run')
f(5,47,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,47,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,47,1,1,'java/lang/Thread.sleep')
f(8,47,1,3,'[unknown]')
f(9,47,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,47,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,47,1,5,'do_syscall_64')
f(12,47,1,5,'__x64_sys_futex')
f(13,47,1,5,'do_futex')
f(14,47,1,5,'futex_wait')
f(15,47,1,5,'futex_wait_queue_me')
f(16,47,1,5,'schedule')
f(17,47,1,5,'__schedule')
f(18,47,1,5,'finish_task_switch.isra.0')
f(4,48,375,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22ac0.run')
f(5,48,375,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,48,375,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,51,77,2,'kyo/concurrent/scheduler/IOTask.run',52,0,0)
f(8,51,14,2,'kyo/concurrent/scheduler/IOTask.curr_$eq',14,0,0)
f(8,65,27,1,'kyo/concurrent/scheduler/IOTask.eval',2,0,0)
f(9,67,25,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,67,25,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,67,25,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,67,25,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,67,25,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,67,25,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,67,25,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,67,25,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,67,25,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,67,25,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,67,25,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,67,25,1,'jdk/internal/misc/Unsafe.unpark')
f(21,68,24,3,'pthread_cond_signal')
f(22,68,24,5,'entry_SYSCALL_64_after_hwframe')
f(23,68,24,5,'do_syscall_64')
f(24,68,23,5,'__x64_sys_futex')
f(25,68,23,5,'do_futex')
f(26,68,23,5,'futex_wake')
f(27,68,1,5,'get_futex_key')
f(27,69,1,5,'mark_wake_futex')
f(27,70,1,5,'wake_q_add_safe')
f(27,71,20,5,'wake_up_q')
f(28,71,20,5,'_raw_spin_unlock_irqrestore')
f(24,91,1,5,'syscall_enter_from_user_mode')
f(8,92,36,2,'scala/runtime/BoxesRunTime.equals',36,0,0)
f(9,92,36,2,'scala/runtime/BoxesRunTime.equals2',36,0,0)
f(7,128,275,2,'kyo/concurrent/scheduler/Queue.poll',274,0,0)
f(8,167,5,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',5,0,0)
f(9,167,5,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',5,0,0)
f(8,172,231,2,'kyo/concurrent/scheduler/Queue.modify',230,0,0)
f(9,181,2,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',1,0,0)
f(10,181,2,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',1,0,0)
f(11,182,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(12,182,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(13,182,1,4,'MemAllocator::Allocation::notify_allocation_jfr_sampler()')
f(9,183,220,2,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d46a48.apply',220,0,0)
f(10,205,198,2,'kyo/concurrent/scheduler/Queue.poll$$anonfun$1',198,0,0)
f(11,205,114,2,'kyo/concurrent/scheduler/Queue.isEmpty',114,0,0)
f(11,319,84,2,'scala/collection/mutable/PriorityQueue.dequeue',84,0,0)
f(12,361,42,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',42,0,0)
f(7,403,20,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,403,20,1,'kyo/concurrent/scheduler/Worker.park')
f(9,403,20,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,403,20,1,'jdk/internal/misc/Unsafe.park')
f(11,403,2,3,'Unsafe_Park')
f(12,403,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,403,2,5,'entry_SYSCALL_64_after_hwframe')
f(14,403,2,5,'do_syscall_64')
f(15,403,1,5,'__x64_sys_futex')
f(16,403,1,5,'do_futex')
f(17,403,1,5,'futex_wake')
f(15,404,1,5,'syscall_enter_from_user_mode')
f(11,405,18,3,'[unknown]')
f(12,405,15,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,409,11,5,'entry_SYSCALL_64_after_hwframe')
f(14,409,11,5,'do_syscall_64')
f(15,409,11,5,'__x64_sys_futex')
f(16,409,10,5,'do_futex')
f(17,409,10,5,'futex_wait')
f(18,410,8,5,'futex_wait_queue_me')
f(19,410,8,5,'schedule')
f(20,410,8,5,'__schedule')
f(21,410,8,5,'finish_task_switch.isra.0')
f(18,418,1,5,'hrtimer_init_sleeper')
f(19,418,1,5,'__hrtimer_init')
f(16,419,1,5,'get_timespec64')
f(17,419,1,5,'_copy_from_user')
f(12,420,3,3,'pthread_cond_timedwait')
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: 368px}
</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(23);
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,33378,3,'all')
f(1,0,33372,1,'java/lang/Thread.run')
f(2,0,33372,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,33372,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,33372,1,'java/util/concurrent/FutureTask.run')
f(5,0,33372,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,33372,1,'java/util/concurrent/FutureTask.run')
f(7,0,33372,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,33372,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,33372,1,'java/lang/reflect/Method.invoke')
f(10,0,33372,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,33372,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,33372,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,33372,1,'kyo/bench/jmh_generated/DeepBindBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,0,33372,1,'kyo/bench/jmh_generated/DeepBindBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,0,33372,1,'kyo/bench/Bench.syncKyo')
f(16,0,33371,1,'kyo/bench/Bench.runLoop$1')
f(17,0,33371,1,'kyo/bench/DeepBindBench$$anon$1.apply')
f(18,0,33371,1,'kyo/bench/DeepBindBench$$anon$1.apply')
f(19,0,33371,1,'kyo/bench/DeepBindBench.kyo$bench$DeepBindBench$$_$loop$1')
f(20,0,33371,2,'kyo.bench.DeepBindBench$$anon$1')
f(16,33371,1,1,'kyo/bench/DeepBindBench.kyoBench')
f(17,33371,1,1,'kyo/bench/DeepBindBench.kyo$bench$DeepBindBench$$_$loop$1')
f(18,33371,1,2,'kyo.bench.DeepBindBench$$anon$1')
f(1,33372,6,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,33372,6,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,33372,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,33372,6,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,33372,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,33372,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,33372,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,33372,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,33372,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,33372,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,33372,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,33372,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,33372,5,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,33377,1,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,33377,1,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,33377,1,1,'java/lang/ClassLoader.loadClass')
f(10,33377,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,33377,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,33377,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,33377,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,33377,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,33377,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,33377,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,33377,1,1,'java/util/jar/JarFile.getEntry')
f(18,33377,1,1,'java/util/zip/ZipFile.getEntry')
f(19,33377,1,1,'java/util/zip/ZipFile.getZipEntry')
f(20,33377,1,1,'java/util/jar/JavaUtilJarAccessImpl.entryFor')
f(21,33377,1,1,'java/util/jar/JarFile.entryFor')
f(22,33377,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: 368px}
</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(23);
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,498,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,'MemoryService::track_memory_usage()')
f(1,1,497,1,'java/lang/Thread.run')
f(2,1,497,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,497,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,497,1,'java/util/concurrent/FutureTask.run')
f(5,1,497,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,497,1,'java/util/concurrent/FutureTask.run')
f(7,1,497,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,497,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,497,1,'java/lang/reflect/Method.invoke')
f(10,1,497,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,497,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,497,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,497,1,'kyo/bench/jmh_generated/DeepBindBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,1,497,1,'kyo/bench/jmh_generated/DeepBindBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,1,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(16,1,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(17,1,1,4,'MemAllocator::allocate() const')
f(18,1,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(19,1,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(20,1,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(21,1,1,4,'MutatorAllocRegion::retire(bool)')
f(22,1,1,4,'G1CollectedHeap::capacity() const')
f(15,2,272,2,'kyo/bench/Bench.syncKyo',272,0,0)
f(16,2,272,2,'kyo/bench/Bench.runLoop$1',272,0,0)
f(17,167,107,2,'kyo/bench/DeepBindBench$$anon$1.apply',107,0,0)
f(18,167,107,2,'kyo/bench/DeepBindBench$$anon$1.apply',107,0,0)
f(19,240,34,2,'kyo/bench/DeepBindBench.kyo$bench$DeepBindBench$$_$loop$1',34,0,0)
f(20,265,9,2,'kyo/bench/DeepBindBench$$anon$1.<init>',9,0,0)
f(15,274,224,2,'org/openjdk/jmh/infra/Blackhole.consume',224,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,20829,3,'all')
f(1,0,20823,1,'java/lang/Thread.run')
f(2,0,20823,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,20823,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,1503,1,'java/util/concurrent/FutureTask.run')
f(5,0,1503,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,1503,1,'java/util/concurrent/FutureTask.run')
f(7,0,1503,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,1503,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,1503,1,'java/lang/reflect/Method.invoke')
f(10,0,1503,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,1503,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,1503,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,1503,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,1503,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,1503,1,'kyo/bench/Bench.forkKyo')
f(16,0,88,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,88,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,88,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,88,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e0a0')
f(16,88,96,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,88,96,2,'kyo.bench.Bench$$anon$1')
f(16,184,1053,1,'kyo/bench/Bench.runLoop$2')
f(17,184,688,1,'kyo/bench/Bench$$anon$1.apply')
f(18,184,38,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,184,38,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c82330.apply')
f(20,184,38,1,'kyo/bench/Bench.$anonfun$2')
f(21,184,38,1,'kyo/concurrent/fibers$Fiber.block')
f(22,184,38,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,222,650,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,222,650,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,222,650,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c3f7f8.apply')
f(21,222,650,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,222,646,2,'kyo.concurrent.scheduler.IOTask')
f(22,868,4,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,868,4,2,'kyo.concurrent.fibers$Fiber')
f(17,872,365,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,872,365,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,872,365,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,872,365,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,872,93,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,872,93,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,872,8,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,880,85,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,880,85,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,965,52,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,1017,220,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,1017,220,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,1017,220,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,1237,266,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,1237,212,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,1237,212,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,1237,212,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,1237,212,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c3f7f8')
f(17,1449,54,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,1449,54,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(4,1503,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1baf0.run')
f(5,1503,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,1503,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,1503,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,1503,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,1503,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,1503,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,1503,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,1521,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1bd18.run')
f(5,1521,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,1521,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,1521,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,1521,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,1521,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,1521,18,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(11,1521,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$69+0x0000000800d4e2c0')
f(4,1539,19284,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22ac0.run')
f(5,1539,19284,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,1539,19284,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,1539,19284,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,1539,19284,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,1539,17756,1,'kyo/bench/DeepBindMapBench$$anon$1.apply')
f(10,1539,17756,1,'kyo/bench/DeepBindMapBench$$anon$1.apply')
f(11,1539,676,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,1539,676,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,1539,676,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,1539,676,2,'kyo.bench.DeepBindMapBench$$anon$1$$Lambda$66+0x0000000800d4b970')
f(11,2215,408,2,'kyo.bench.DeepBindMapBench$$anon$1$$anon$2')
f(11,2623,1378,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$_$transformLoop$1')
f(12,2623,1378,2,'kyo.bench.DeepBindMapBench$$anon$3')
f(11,4001,1891,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$transformLoop$2')
f(12,4001,1891,2,'kyo.bench.DeepBindMapBench$$anon$4')
f(11,5892,1567,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$transformLoop$3')
f(12,5892,1567,2,'kyo.bench.DeepBindMapBench$$anon$5')
f(11,7459,1436,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$transformLoop$4')
f(12,7459,1436,2,'kyo.bench.DeepBindMapBench$$anon$6')
f(11,8895,1313,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$transformLoop$5')
f(12,8895,1313,2,'kyo.bench.DeepBindMapBench$$anon$7')
f(11,10208,1102,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$transformLoop$6')
f(12,10208,1102,2,'kyo.bench.DeepBindMapBench$$anon$8')
f(11,11310,1921,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$transformLoop$7')
f(12,11310,1921,2,'kyo.bench.DeepBindMapBench$$anon$9')
f(11,13231,1619,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$transformLoop$8')
f(12,13231,1619,2,'kyo.bench.DeepBindMapBench$$anon$10')
f(11,14850,1421,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$transformLoop$9')
f(12,14850,1421,2,'kyo.bench.DeepBindMapBench$$anon$11')
f(11,16271,1434,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$transformLoop$10')
f(12,16271,1434,2,'kyo.bench.DeepBindMapBench$$anon$12')
f(11,17705,1590,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$transformLoop$11')
f(12,17705,1590,2,'kyo.bench.DeepBindMapBench$$anon$13')
f(9,19295,1323,1,'kyo/bench/DeepBindMapBench$$anon$13.apply')
f(10,19295,1323,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$transformLoop$11')
f(11,19295,1323,1,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$66.0x0000000800d4b970.apply')
f(12,19295,1323,1,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$$anonfun$adapted$11')
f(13,19295,1323,1,'kyo/bench/DeepBindMapBench.$anonfun$11')
f(14,19295,1323,1,'kyo/bench/DeepBindMapBench.loop$1')
f(15,19295,1323,2,'kyo.bench.DeepBindMapBench$$anon$1')
f(9,20618,205,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,20618,205,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,20618,205,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e0a0.apply')
f(12,20618,205,1,'kyo/bench/Bench.$anonfun$1')
f(13,20618,205,1,'kyo/bench/Bench.kyoBenchFiber')
f(14,20618,205,1,'kyo/bench/DeepBindMapBench.kyoBench')
f(15,20618,205,1,'kyo/bench/DeepBindMapBench.loop$1')
f(16,20618,205,2,'kyo.bench.DeepBindMapBench$$anon$1')
f(1,20823,6,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,20823,6,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,20823,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,20823,6,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,20823,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,20823,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,20823,6,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,20823,1,2,'org.openjdk.jmh.runner.InfraControl')
f(8,20824,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,20824,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,20824,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,20824,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,20824,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,20824,5,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: 576px}
</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(36);
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,492,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,5,3,'[unknown_Java]')
f(2,1,2,1,'kyo/bench/DeepBindMapBench$$anon$13.apply')
f(2,3,2,6,'kyo/core$internal$KyoCont.effect',0,2,0)
f(2,5,1,1,'kyo/ios$KyoIO.effect')
f(1,6,486,1,'java/lang/Thread.run')
f(2,6,486,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,6,486,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,6,3,1,'java/util/concurrent/FutureTask.run')
f(5,6,3,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,6,3,1,'java/util/concurrent/FutureTask.run')
f(7,6,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,6,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,6,3,1,'java/lang/reflect/Method.invoke')
f(10,6,3,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,6,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,6,3,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,6,3,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,6,3,1,'kyo/bench/jmh_generated/DeepBindMapBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,6,3,1,'kyo/bench/Bench.forkKyo')
f(16,6,3,1,'kyo/bench/Bench.runLoop$2')
f(17,6,3,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,6,3,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,6,3,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,6,3,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,6,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,6,3,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,6,3,1,'java/util/concurrent/locks/LockSupport.park')
f(24,6,3,1,'jdk/internal/misc/Unsafe.park')
f(25,6,3,3,'[unknown]')
f(26,6,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,7,2,5,'entry_SYSCALL_64_after_hwframe')
f(28,7,2,5,'do_syscall_64')
f(29,7,1,5,'__x64_sys_futex')
f(30,7,1,5,'do_futex')
f(31,7,1,5,'futex_wait')
f(32,7,1,5,'futex_wait_queue_me')
f(33,7,1,5,'schedule')
f(34,7,1,5,'__schedule')
f(35,7,1,5,'finish_task_switch.isra.0')
f(29,8,1,5,'syscall_exit_to_user_mode')
f(30,8,1,5,'exit_to_user_mode_prepare')
f(31,8,1,5,'exit_to_user_mode_loop')
f(32,8,1,5,'__rseq_handle_notify_resume')
f(33,8,1,5,'__put_user_nocheck_8')
f(4,9,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1baf0.run')
f(5,9,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,9,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,9,1,1,'java/lang/Thread.sleep')
f(8,9,1,3,'[unknown]')
f(9,9,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,9,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,9,1,5,'do_syscall_64')
f(12,9,1,5,'__x64_sys_futex')
f(13,9,1,5,'do_futex')
f(14,9,1,5,'futex_wait')
f(15,9,1,5,'futex_wait_queue_me')
f(16,9,1,5,'schedule')
f(17,9,1,5,'__schedule')
f(18,9,1,5,'finish_task_switch.isra.0')
f(4,10,482,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22ac0.run')
f(5,10,482,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,10,482,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,10,479,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,10,479,1,'kyo/concurrent/scheduler/IOTask.eval',47,0,0)
f(9,42,264,1,'kyo/bench/DeepBindMapBench$$anon$1.apply')
f(10,46,260,2,'kyo/bench/DeepBindMapBench$$anon$1.apply',259,0,0)
f(11,56,14,2,'kyo/bench/DeepBindMapBench$$anon$1$$anon$2.<init>',14,0,0)
f(12,56,14,2,'kyo/ios$KyoIO.<init>',14,0,0)
f(13,67,3,2,'kyo/core$internal$Kyo.<init>',3,0,0)
f(14,68,2,2,'java/lang/Object.<init>',2,0,0)
f(11,70,118,2,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$_$transformLoop$1',118,0,0)
f(12,71,117,2,'kyo/bench/DeepBindMapBench$$anon$3.<init>',117,0,0)
f(13,100,88,2,'kyo/core$internal$KyoCont.<init>',88,0,0)
f(14,112,65,2,'kyo/core$internal$Kyo.<init>',65,0,0)
f(15,150,27,2,'java/lang/Object.<init>',27,0,0)
f(14,177,11,2,'kyo/ios$KyoIO.effect',11,0,0)
f(15,182,6,2,'kyo/ios$KyoIO.effect',6,0,0)
f(11,188,118,2,'scala/runtime/BoxesRunTime.boxToInteger',117,0,0)
f(12,305,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(13,305,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(14,305,1,4,'MemAllocator::allocate() const')
f(15,305,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(16,305,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(9,306,160,1,'kyo/bench/DeepBindMapBench$$anon$13.apply')
f(10,313,153,2,'kyo/bench/DeepBindMapBench$$anon$12.apply',153,0,0)
f(11,313,153,2,'kyo/bench/DeepBindMapBench$$anon$11.apply',153,0,0)
f(12,313,153,2,'kyo/bench/DeepBindMapBench$$anon$10.apply',153,0,0)
f(13,313,153,2,'kyo/bench/DeepBindMapBench$$anon$9.apply',153,0,0)
f(14,313,153,2,'kyo/bench/DeepBindMapBench$$anon$8.apply',153,0,0)
f(15,326,140,2,'kyo/bench/DeepBindMapBench$$anon$7.apply',140,0,0)
f(16,328,138,2,'kyo/bench/DeepBindMapBench$$anon$6.apply',138,0,0)
f(17,341,125,2,'kyo/bench/DeepBindMapBench$$anon$5.apply',125,0,0)
f(18,434,32,2,'kyo/bench/DeepBindMapBench$$anon$4.apply',32,0,0)
f(19,461,5,2,'kyo/bench/DeepBindMapBench$$anon$3.apply',5,0,0)
f(20,462,3,2,'kyo/bench/DeepBindMapBench$$anon$1$$anon$2.apply',3,0,0)
f(20,465,1,2,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$_$transformLoop$1',1,0,0)
f(21,465,1,2,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$56.0x0000000800d493a0.apply',1,0,0)
f(22,465,1,2,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$_$_$$anonfun$adapted$1',1,0,0)
f(9,466,1,2,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',1,0,0)
f(9,467,2,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,467,2,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,467,2,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,467,2,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,467,2,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,467,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,467,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,467,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,467,2,1,'jdk/internal/misc/Unsafe.unpark')
f(21,467,2,3,'pthread_cond_signal')
f(22,467,2,5,'entry_SYSCALL_64_after_hwframe')
f(23,467,2,5,'do_syscall_64')
f(24,467,2,5,'__x64_sys_futex')
f(25,467,2,5,'do_futex')
f(26,467,2,5,'futex_wake')
f(27,467,2,5,'wake_up_q')
f(28,467,2,5,'_raw_spin_unlock_irqrestore')
f(9,469,3,2,'kyo/concurrent/scheduler/IOTask.st',3,0,0)
f(9,472,4,6,'kyo/core$internal$KyoCont.effect',0,4,0)
f(9,476,2,1,'kyo/ios$KyoIO.effect')
f(9,478,11,3,'vtable stub')
f(7,489,3,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,489,3,1,'kyo/concurrent/scheduler/Worker.park')
f(9,489,3,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,489,3,1,'jdk/internal/misc/Unsafe.park')
f(11,489,1,4,'JavaThread::threadObj() const')
f(11,490,1,3,'Unsafe_Park')
f(11,491,1,3,'[unknown]')
f(12,491,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,491,1,5,'entry_SYSCALL_64_after_hwframe')
f(14,491,1,5,'do_syscall_64')
f(15,491,1,5,'__x64_sys_futex')
f(16,491,1,5,'do_futex')
f(17,491,1,5,'futex_wait')
f(18,491,1,5,'futex_wait_queue_me')
f(19,491,1,5,'schedule')
f(20,491,1,5,'__schedule')
f(21,491,1,5,'finish_task_switch.isra.0')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 432px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(27);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,23980,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,23970,1,'java/lang/Thread.run')
f(2,1,23970,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,23970,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,23970,1,'java/util/concurrent/FutureTask.run')
f(5,1,23970,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,23970,1,'java/util/concurrent/FutureTask.run')
f(7,1,23970,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,23970,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,23970,1,'java/lang/reflect/Method.invoke')
f(10,1,23970,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,23970,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,23970,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,23970,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,1,23970,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,1,23970,1,'kyo/bench/Bench.syncKyo')
f(16,1,23970,1,'kyo/bench/Bench.runLoop$1')
f(17,1,19614,1,'kyo/bench/DeepBindMapBench$$anon$1.apply')
f(18,1,19614,1,'kyo/bench/DeepBindMapBench$$anon$1.apply')
f(19,1,739,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,1,739,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,1,739,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,1,739,2,'kyo.bench.DeepBindMapBench$$anon$1$$Lambda$49+0x0000000800d06b20')
f(19,740,401,2,'kyo.bench.DeepBindMapBench$$anon$1$$anon$2')
f(19,1141,854,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$_$transformLoop$1')
f(20,1141,854,2,'kyo.bench.DeepBindMapBench$$anon$3')
f(19,1995,2289,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$_$transformLoop$2')
f(20,1995,2289,2,'kyo.bench.DeepBindMapBench$$anon$4')
f(19,4284,1481,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$_$transformLoop$3')
f(20,4284,1481,2,'kyo.bench.DeepBindMapBench$$anon$5')
f(19,5765,2955,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$_$transformLoop$4')
f(20,5765,2955,2,'kyo.bench.DeepBindMapBench$$anon$6')
f(19,8720,900,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$_$transformLoop$5')
f(20,8720,900,2,'kyo.bench.DeepBindMapBench$$anon$7')
f(19,9620,1432,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$_$transformLoop$6')
f(20,9620,1432,2,'kyo.bench.DeepBindMapBench$$anon$8')
f(19,11052,2607,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$_$transformLoop$7')
f(20,11052,2607,2,'kyo.bench.DeepBindMapBench$$anon$9')
f(19,13659,1565,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$transformLoop$8')
f(20,13659,1565,2,'kyo.bench.DeepBindMapBench$$anon$10')
f(19,15224,1248,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$transformLoop$9')
f(20,15224,1248,2,'kyo.bench.DeepBindMapBench$$anon$11')
f(19,16472,2277,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$transformLoop$10')
f(20,16472,2277,2,'kyo.bench.DeepBindMapBench$$anon$12')
f(19,18749,866,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$transformLoop$11')
f(20,18749,866,2,'kyo.bench.DeepBindMapBench$$anon$13')
f(17,19615,4356,1,'kyo/bench/DeepBindMapBench$$anon$13.apply')
f(18,19615,1476,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$transformLoop$11')
f(19,19615,1476,1,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$49.0x0000000800d06b20.apply')
f(20,19615,1476,1,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$$anonfun$adapted$11')
f(21,19615,1476,1,'kyo/bench/DeepBindMapBench.$anonfun$11')
f(22,19615,1476,1,'kyo/bench/DeepBindMapBench.loop$1')
f(23,19615,1476,2,'kyo.bench.DeepBindMapBench$$anon$1')
f(18,21091,2880,1,'kyo/bench/DeepBindMapBench$$anon$12.apply')
f(19,21091,793,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$transformLoop$10')
f(20,21091,793,1,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$48.0x0000000800d06758.apply')
f(21,21091,793,1,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$$anonfun$adapted$10')
f(22,21091,793,1,'kyo/bench/DeepBindMapBench.$anonfun$10')
f(23,21091,793,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(24,21091,793,1,'java/lang/Integer.valueOf')
f(25,21091,793,2,'java.lang.Integer')
f(19,21884,2087,1,'kyo/bench/DeepBindMapBench$$anon$11.apply')
f(20,21884,2087,1,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$transformLoop$9')
f(21,21884,2087,1,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$47.0x0000000800d06390.apply')
f(22,21884,2087,1,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$_$$anonfun$adapted$9')
f(23,21884,2087,1,'kyo/bench/DeepBindMapBench.$anonfun$9')
f(24,21884,2087,1,'scala/runtime/BoxesRunTime.boxToInteger')
f(25,21884,2087,1,'java/lang/Integer.valueOf')
f(26,21884,2087,2,'java.lang.Integer')
f(1,23971,9,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,23971,9,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,23971,9,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,23971,9,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,23971,9,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,23971,9,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,23971,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,23971,2,2,'org.openjdk.jmh.runner.InfraControl')
f(8,23973,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,23973,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,23973,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,23973,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,23973,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,23973,5,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,23978,2,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,23978,2,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,23978,2,1,'java/lang/ClassLoader.loadClass')
f(10,23978,2,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,23978,2,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,23978,2,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,23978,2,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,23978,1,1,'jdk/internal/loader/BuiltinClassLoader.defineClass')
f(15,23978,1,1,'jdk/internal/loader/Resource.getByteBuffer')
f(16,23978,1,1,'jdk/internal/loader/Resource.cachedInputStream')
f(17,23978,1,1,'jdk/internal/loader/URLClassPath$JarLoader$2.getInputStream')
f(18,23978,1,1,'java/util/jar/JarFile.getInputStream')
f(19,23978,1,1,'java/util/zip/ZipFile.getInputStream')
f(20,23978,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(21,23978,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(22,23978,1,1,'java/util/zip/InflaterInputStream.<init>')
f(23,23978,1,2,'byte[]')
f(14,23979,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,23979,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,23979,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,23979,1,1,'java/util/jar/JarFile.getEntry')
f(18,23979,1,1,'java/util/zip/ZipFile.getEntry')
f(19,23979,1,1,'java/util/zip/ZipFile$Source.getEntryPos')
f(20,23979,1,1,'java/util/zip/ZipCoder$UTF8ZipCoder.toString')
f(21,23979,1,1,'java/lang/System$2.newStringUTF8NoRepl')
f(22,23979,1,1,'java/lang/String.newStringUTF8NoRepl')
f(23,23979,1,1,'java/util/Arrays.copyOfRange')
f(24,23979,1,2,'byte[]')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 448px}
</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(28);
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,498,3,'all')
f(1,0,1,3,'[unknown_Java]')
f(2,0,1,1,'kyo/bench/DeepBindMapBench$$anon$12.apply')
f(1,1,497,1,'java/lang/Thread.run')
f(2,1,497,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,497,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,497,1,'java/util/concurrent/FutureTask.run')
f(5,1,497,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,497,1,'java/util/concurrent/FutureTask.run')
f(7,1,497,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,497,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,497,1,'java/lang/reflect/Method.invoke')
f(10,1,497,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,497,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,497,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,497,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,1,497,1,'kyo/bench/jmh_generated/DeepBindMapBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub',0,0,1)
f(15,2,496,1,'kyo/bench/Bench.syncKyo')
f(16,2,496,1,'kyo/bench/Bench.runLoop$1')
f(17,3,82,2,'kyo/bench/DeepBindMapBench$$anon$1.apply',82,0,0)
f(18,3,82,2,'kyo/bench/DeepBindMapBench$$anon$1.apply',82,0,0)
f(19,3,82,2,'scala/runtime/BoxesRunTime.boxToInteger',82,0,0)
f(17,85,413,2,'kyo/bench/DeepBindMapBench$$anon$13.apply',236,0,0)
f(18,103,218,2,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$transformLoop$11',218,0,0)
f(19,135,23,2,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$49.0x0000000800d06b20.apply',23,0,0)
f(20,135,23,2,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$$anonfun$adapted$11',23,0,0)
f(21,154,4,2,'scala/runtime/BoxesRunTime.unboxToInt',4,0,0)
f(22,157,1,2,'java/lang/Integer.intValue',1,0,0)
f(19,158,2,2,'kyo/bench/DeepBindMapBench$$anon$13.<init>',2,0,0)
f(19,160,72,2,'scala/runtime/BoxesRunTime.boxToInteger',72,0,0)
f(19,232,89,2,'scala/runtime/BoxesRunTime.unboxToInt',89,0,0)
f(20,319,2,2,'java/lang/Integer.intValue',2,0,0)
f(18,321,177,1,'kyo/bench/DeepBindMapBench$$anon$12.apply')
f(19,325,142,2,'kyo/bench/DeepBindMapBench$$anon$1.kyo$bench$DeepBindMapBench$$anon$1$$_$_$transformLoop$10',142,0,0)
f(20,325,142,2,'kyo/bench/DeepBindMapBench$$anon$1$$Lambda$48.0x0000000800d06758.apply',142,0,0)
f(21,325,142,2,'kyo/bench/DeepBindMapBench.kyo$bench$DeepBindMapBench$$anon$1$$_$_$_$$anonfun$adapted$10',142,0,0)
f(22,325,142,2,'kyo/bench/DeepBindMapBench.$anonfun$10',142,0,0)
f(23,325,142,2,'scala/runtime/BoxesRunTime.boxToInteger',142,0,0)
f(19,467,31,2,'kyo/bench/DeepBindMapBench$$anon$11.apply',31,0,0)
f(20,467,31,2,'kyo/bench/DeepBindMapBench$$anon$10.apply',31,0,0)
f(21,468,30,2,'kyo/bench/DeepBindMapBench$$anon$9.apply',30,0,0)
f(22,490,8,2,'kyo/bench/DeepBindMapBench$$anon$8.apply',8,0,0)
f(23,493,5,2,'kyo/bench/DeepBindMapBench$$anon$7.apply',5,0,0)
f(24,493,5,2,'kyo/bench/DeepBindMapBench$$anon$6.apply',5,0,0)
f(25,493,5,2,'kyo/bench/DeepBindMapBench$$anon$5.apply',5,0,0)
f(26,494,4,2,'kyo/bench/DeepBindMapBench$$anon$4.apply',4,0,0)
f(27,494,4,2,'kyo/bench/DeepBindMapBench$$anon$3.apply',4,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,22271,3,'all')
f(1,0,22266,1,'java/lang/Thread.run')
f(2,0,22266,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,22266,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,1685,1,'java/util/concurrent/FutureTask.run')
f(5,0,1685,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,1685,1,'java/util/concurrent/FutureTask.run')
f(7,0,1685,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,1685,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,1685,1,'java/lang/reflect/Method.invoke')
f(10,0,1685,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,1685,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,1685,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,1685,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,1682,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,1682,1,'kyo/bench/Bench.forkKyo')
f(16,0,127,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,127,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,127,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,127,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c80a28')
f(16,127,243,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,127,243,2,'kyo.bench.Bench$$anon$1')
f(16,370,985,1,'kyo/bench/Bench.runLoop$2')
f(17,370,448,1,'kyo/bench/Bench$$anon$1.apply')
f(18,370,167,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,370,167,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c84800.apply')
f(20,370,167,1,'kyo/bench/Bench.$anonfun$2')
f(21,370,167,1,'kyo/concurrent/fibers$Fiber.block')
f(22,370,167,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,537,281,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,537,281,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,537,281,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c82180.apply')
f(21,537,281,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,537,279,2,'kyo.concurrent.scheduler.IOTask')
f(22,816,2,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,816,2,2,'kyo.concurrent.fibers$Fiber')
f(17,818,537,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,818,537,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,818,537,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,818,537,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,818,236,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,818,236,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,818,43,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,861,193,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,861,193,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,1054,73,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,1127,228,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,1127,228,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,1127,228,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,1355,327,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,1355,316,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,1355,316,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,1355,316,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,1355,316,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c82180')
f(17,1671,11,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,1671,11,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(14,1682,1,2,'org.openjdk.jmh.results.BenchmarkTaskResult')
f(14,1683,1,1,'org/openjdk/jmh/results/BenchmarkTaskResult.add')
f(15,1683,1,1,'java/util/ArrayList.add')
f(16,1683,1,1,'java/util/ArrayList.add')
f(17,1683,1,1,'java/util/ArrayList.grow')
f(18,1683,1,1,'java/util/ArrayList.grow')
f(19,1683,1,2,'java.lang.Object[]')
f(14,1684,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,1684,1,1,'org/openjdk/jmh/results/Result.of')
f(16,1684,1,2,'org.openjdk.jmh.util.SingletonStatistics')
f(4,1685,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e478.run')
f(5,1685,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,1685,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,1685,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,1685,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,1685,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,1685,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,1685,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,1703,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e6a0.run')
f(5,1703,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,1703,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,1703,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,1703,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,1703,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,1703,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$65+0x0000000800d4fd78')
f(4,1721,20545,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22b68.run')
f(5,1721,20545,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,1721,20545,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,1721,20536,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,1721,20536,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,1721,11011,1,'kyo/bench/EnqueueDequeueBench$$anon$1.apply')
f(10,1721,11011,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$1')
f(11,1721,11011,1,'kyo/bench/EnqueueDequeueBench$$Lambda$62.0x0000000800d546a0.apply')
f(12,1721,11011,1,'kyo/bench/EnqueueDequeueBench.$anonfun$2')
f(13,1721,11011,1,'kyo/bench/EnqueueDequeueBench.loop$2')
f(14,1721,2020,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d51000.linkToTargetMethod')
f(15,1721,2020,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50800.newInvokeSpecial')
f(16,1721,2020,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,1721,2020,2,'kyo.bench.EnqueueDequeueBench$$Lambda$60+0x0000000800d4f7a0')
f(14,3741,3112,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2')
f(15,3741,3112,2,'kyo.bench.EnqueueDequeueBench$$anon$2')
f(14,6853,5879,1,'kyo/concurrent/channels$Channels$$anon$14.put')
f(15,6853,5879,1,'kyo/concurrent/channels$Channels$Blocking.put$')
f(16,6853,5879,1,'kyo/concurrent/channels$Channels$Blocking.put')
f(17,6853,1540,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,6853,1540,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,6853,1540,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,6853,1540,2,'kyo.concurrent.channels$Channels$Blocking$$Lambda$59+0x0000000800d4f3d0')
f(17,8393,1536,1,'kyo/concurrent/channels$Channels$$anon$14.putFiber')
f(18,8393,1536,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$_$transformLoop$10')
f(19,8393,1536,1,'kyo/concurrent/channels$Channels$$anon$14$$Lambda$58.0x0000000800d4f000.apply')
f(20,8393,1536,1,'kyo/concurrent/channels$Channels$$anon$14.$anonfun$11')
f(21,8393,1536,2,'kyo.concurrent.channels$$anon$19')
f(17,9929,2803,1,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$1')
f(18,9929,2803,2,'kyo.concurrent.channels$Channels$Blocking$$anon$1')
f(9,12732,9231,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(10,12732,9231,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2')
f(11,12732,9231,1,'kyo/bench/EnqueueDequeueBench$$Lambda$60.0x0000000800d4f7a0.apply')
f(12,12732,9231,1,'kyo/bench/EnqueueDequeueBench.$anonfun$1')
f(13,12732,2291,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d51000.linkToTargetMethod')
f(14,12732,2291,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50800.newInvokeSpecial')
f(15,12732,2291,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,12732,2291,2,'kyo.bench.EnqueueDequeueBench$$Lambda$62+0x0000000800d546a0')
f(13,15023,3223,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$1')
f(14,15023,3223,2,'kyo.bench.EnqueueDequeueBench$$anon$1')
f(13,18246,3717,1,'kyo/concurrent/channels$Channels$$anon$14.take')
f(14,18246,3717,1,'kyo/concurrent/channels$Channels$Blocking.take$')
f(15,18246,3717,1,'kyo/concurrent/channels$Channels$Blocking.take')
f(16,18246,1090,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,18246,1090,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,18246,1090,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,18246,1090,2,'kyo.concurrent.channels$Channels$Blocking$$Lambda$61+0x0000000800d542d0')
f(16,19336,2627,1,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$2')
f(17,19336,2627,2,'kyo.concurrent.channels$Channels$Blocking$$anon$2')
f(9,21963,87,1,'kyo/bench/EnqueueDequeueBench$$anon$3.apply')
f(10,21963,1,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$3')
f(11,21963,1,1,'kyo/bench/EnqueueDequeueBench$$Lambda$57.0x0000000800d4c308.apply')
f(12,21963,1,1,'kyo/bench/EnqueueDequeueBench.$anonfun$3')
f(13,21963,1,1,'kyo/bench/EnqueueDequeueBench.loop$2')
f(14,21963,1,1,'kyo/concurrent/channels$Channels$$anon$14.put')
f(15,21963,1,1,'kyo/concurrent/channels$Channels$Blocking.put$')
f(16,21963,1,1,'kyo/concurrent/channels$Channels$Blocking.put')
f(17,21963,1,1,'kyo/concurrent/channels$Channels$$anon$14.putFiber')
f(18,21963,1,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$_$transformLoop$10')
f(19,21963,1,1,'kyo/concurrent/channels$Channels$$anon$14$$Lambda$58.0x0000000800d4f000.apply')
f(20,21963,1,1,'kyo/concurrent/channels$Channels$$anon$14.$anonfun$11')
f(21,21963,1,2,'kyo.concurrent.channels$$anon$19')
f(10,21964,86,1,'kyo/concurrent/channels$Channels$$anon$21.apply')
f(11,21964,86,1,'kyo/concurrent/channels$Channels$.kyo$concurrent$channels$Channels$$$_$transformLoop$11')
f(12,21964,86,1,'kyo/concurrent/channels$Channels$$$Lambda$56.0x0000000800d4bb38.apply')
f(13,21964,86,1,'kyo/concurrent/channels$Channels$.$anonfun$9')
f(14,21964,86,1,'kyo/concurrent/channels$Channels$$anon$14.<init>')
f(15,21964,1,1,'kyo/concurrent/queues$Queue.isEmpty')
f(16,21964,1,2,'kyo.concurrent.queues$Queue$$anon$2')
f(15,21965,6,2,'org.jctools.queues.MpmcUnboundedXaddArrayQueue')
f(15,21971,79,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(16,21971,79,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(17,21971,79,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.<init>')
f(18,21971,8,2,'org.jctools.queues.SpscArrayQueue')
f(18,21979,71,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(19,21979,71,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(20,21979,1,2,'org.jctools.queues.MpmcUnboundedXaddChunk')
f(20,21980,70,1,'org/jctools/queues/MpmcUnboundedXaddChunk.<init>')
f(21,21980,5,1,'org/jctools/queues/MpUnboundedXaddChunk.<init>')
f(22,21980,5,1,'org/jctools/util/UnsafeRefArrayAccess.allocateRefArray')
f(23,21980,5,2,'java.lang.Object[]')
f(21,21985,65,1,'org/jctools/util/UnsafeLongArrayAccess.allocateLongArray')
f(22,21985,65,2,'long[]')
f(9,22050,207,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,22050,207,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,22050,207,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c80a28.apply')
f(12,22050,207,1,'kyo/bench/Bench.$anonfun$1')
f(13,22050,207,1,'kyo/bench/EnqueueDequeueBench.kyoBenchFiber')
f(14,22050,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(15,22050,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(16,22050,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,22050,1,2,'kyo.bench.EnqueueDequeueBench$$Lambda$57+0x0000000800d4c308')
f(14,22051,206,1,'kyo/concurrent/channels$Channels$.blocking')
f(15,22051,206,1,'kyo/concurrent/queues$Queues$.bounded')
f(16,22051,206,2,'kyo.concurrent.queues$Queues$$anon$11')
f(7,22257,9,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,22257,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,22257,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,22257,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,22257,9,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(12,22257,9,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d21c78')
f(1,22266,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,22266,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,22266,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,22266,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,22266,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,22266,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,22266,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,22266,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,22266,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,22266,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,22266,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,22266,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,22266,5,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: 560px}
</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(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,493,3,'all')
f(1,0,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,2,3,'thread_native_entry(Thread*)')
f(3,0,2,4,'Thread::call_run()')
f(4,0,1,4,'JavaThread::thread_main_inner()')
f(5,0,1,4,'CompileBroker::compiler_thread_loop()')
f(6,0,1,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,1,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,1,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Optimize()')
f(10,0,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(11,0,1,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(12,0,1,4,'PhaseIdealLoop::build_loop_late_post_work(Node*, bool)')
f(13,0,1,4,'PhiNode::Opcode() const')
f(4,1,1,4,'VMThread::run()')
f(5,1,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,1,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,1,1,4,'VM_Operation::evaluate()')
f(8,1,1,4,'VM_G1CollectForAllocation::doit()')
f(9,1,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,1,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,1,1,4,'G1CollectedHeap::evacuate_initial_collection_set(G1ParScanThreadStateSet*, bool)')
f(12,1,1,4,'G1RemSet::merge_heap_roots(bool)')
f(13,1,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(14,1,1,3,'sem_post')
f(15,1,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,1,1,5,'do_syscall_64')
f(17,1,1,5,'__x64_sys_futex')
f(18,1,1,5,'do_futex')
f(19,1,1,5,'futex_wake')
f(20,1,1,5,'wake_up_q')
f(21,1,1,5,'_raw_spin_unlock_irqrestore')
f(1,2,1,3,'[unknown]')
f(2,2,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(3,2,1,5,'entry_SYSCALL_64_after_hwframe')
f(4,2,1,5,'do_syscall_64')
f(5,2,1,5,'__x64_sys_futex')
f(6,2,1,5,'do_futex')
f(7,2,1,5,'futex_wait')
f(8,2,1,5,'futex_wait_queue_me')
f(9,2,1,5,'hrtimer_sleeper_start_expires')
f(10,2,1,5,'_raw_spin_unlock_irqrestore')
f(1,3,6,3,'[unknown_Java]')
f(2,3,1,1,'kyo/bench/EnqueueDequeueBench$$anon$1.apply')
f(2,4,3,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(2,7,2,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$flush')
f(1,9,484,1,'java/lang/Thread.run')
f(2,9,484,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,9,484,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,9,5,1,'java/util/concurrent/FutureTask.run')
f(5,9,5,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,9,5,1,'java/util/concurrent/FutureTask.run')
f(7,9,5,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,9,5,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,9,5,1,'java/lang/reflect/Method.invoke')
f(10,9,5,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,9,5,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,9,5,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,9,5,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,9,5,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,9,5,1,'kyo/bench/Bench.forkKyo')
f(16,9,4,1,'kyo/bench/Bench.runLoop$2')
f(17,9,3,1,'kyo/bench/Bench$$anon$1.apply')
f(18,9,3,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,9,3,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,9,3,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(21,9,3,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,9,3,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,9,3,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,9,3,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,9,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,9,3,1,'jdk/internal/misc/Unsafe.unpark')
f(27,9,3,3,'pthread_cond_signal')
f(28,9,3,5,'entry_SYSCALL_64_after_hwframe')
f(29,9,3,5,'do_syscall_64')
f(30,9,3,5,'__x64_sys_futex')
f(31,9,3,5,'do_futex')
f(32,9,3,5,'futex_wake')
f(33,9,3,5,'wake_up_q')
f(34,9,3,5,'_raw_spin_unlock_irqrestore')
f(17,12,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,12,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,12,1,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,12,1,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,12,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,12,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,12,1,2,'kyo/concurrent/scheduler/IOPromise$$anon$1.tryAcquireShared',1,0,0)
f(16,13,1,2,'kyo/concurrent/fibers$Fibers.forkFiber',1,0,0)
f(17,13,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(18,13,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(19,13,1,2,'java/lang/invoke/DirectMethodHandle.constructorMethod',1,0,0)
f(4,14,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e478.run')
f(5,14,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,14,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,14,1,1,'java/lang/Thread.sleep')
f(8,14,1,3,'JVM_Sleep')
f(9,14,1,4,'JavaThread::sleep(long)')
f(10,14,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(11,14,1,5,'entry_SYSCALL_64_after_hwframe')
f(12,14,1,5,'do_syscall_64')
f(13,14,1,5,'__x64_sys_futex')
f(14,14,1,5,'do_futex')
f(15,14,1,5,'hash_futex')
f(4,15,478,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d22b68.run')
f(5,15,478,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,15,478,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,15,474,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,15,474,1,'kyo/concurrent/scheduler/IOTask.eval',69,0,0)
f(9,58,188,1,'kyo/bench/EnqueueDequeueBench$$anon$1.apply')
f(10,70,176,2,'kyo/concurrent/channels$Channels$Blocking$$anon$2.apply',165,0,0)
f(11,81,160,2,'kyo/concurrent/channels$$anon$16.apply',149,0,0)
f(12,99,142,2,'kyo/concurrent/channels$$anon$16.apply',131,0,0)
f(13,135,1,3,'[unknown]')
f(14,135,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(15,135,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,135,1,5,'do_syscall_64')
f(17,135,1,5,'syscall_exit_to_user_mode')
f(18,135,1,5,'exit_to_user_mode_prepare')
f(19,135,1,5,'exit_to_user_mode_loop')
f(20,135,1,5,'__rseq_handle_notify_resume')
f(21,135,1,5,'rseq_ip_fixup')
f(22,135,1,5,'__get_user_8')
f(13,136,10,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$flush')
f(14,145,1,2,'kyo/concurrent/channels$Channels$$anon$14.q',1,0,0)
f(13,146,33,2,'kyo/concurrent/fibers$Fibers.value',33,0,0)
f(14,146,33,2,'kyo/concurrent/fibers$Fiber$.done',33,0,0)
f(15,146,33,2,'kyo/concurrent/fibers$Fiber.<init>',33,0,0)
f(13,179,59,2,'kyo/concurrent/queues$$anon$12.poll',59,0,0)
f(14,192,41,2,'java/util/concurrent/atomic/AtomicReference.getAndSet',41,0,0)
f(15,192,41,2,'java/lang/invoke/VarHandleGuards.guard_LL_L',41,0,0)
f(16,201,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(16,202,6,2,'java/lang/invoke/VarHandle.checkExactAccessMode',6,0,0)
f(16,208,1,2,'java/lang/invoke/VarHandle.isDirect',1,0,0)
f(16,209,24,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.getAndSet',24,0,0)
f(14,233,5,2,'scala/Option$.apply',5,0,0)
f(15,233,5,2,'scala/Some.<init>',5,0,0)
f(16,233,5,2,'scala/Option.<init>',5,0,0)
f(17,233,5,2,'java/lang/Object.<init>',5,0,0)
f(13,238,3,2,'scala/Some.value',3,0,0)
f(11,241,5,2,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$2',5,0,0)
f(12,245,1,2,'kyo/concurrent/channels$Channels$Blocking$$Lambda$61.0x0000000800d542d0.apply',1,0,0)
f(9,246,165,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(10,263,28,2,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2',28,0,0)
f(11,272,12,2,'kyo/bench/EnqueueDequeueBench$$Lambda$60.0x0000000800d4f7a0.apply',12,0,0)
f(12,272,12,2,'kyo/bench/EnqueueDequeueBench.$anonfun$1',12,0,0)
f(13,280,4,2,'kyo/concurrent/channels$Channels$$anon$14.take',4,0,0)
f(14,280,4,2,'kyo/concurrent/channels$Channels$Blocking.take$',4,0,0)
f(15,283,1,2,'kyo/concurrent/channels$Channels$Blocking.take',1,0,0)
f(11,284,7,2,'kyo/bench/EnqueueDequeueBench$$anon$2.<init>',7,0,0)
f(12,287,4,2,'kyo/core$internal$KyoCont.<init>',4,0,0)
f(10,291,120,2,'kyo/concurrent/channels$Channels$Blocking$$anon$1.apply',113,0,0)
f(11,306,57,2,'kyo/concurrent/channels$$anon$19.apply',50,0,0)
f(12,306,57,2,'kyo/concurrent/channels$$anon$19.apply',50,0,0)
f(13,311,7,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$flush')
f(14,315,3,2,'kyo/concurrent/channels$Channels$$anon$14.q',3,0,0)
f(13,318,1,2,'kyo/concurrent/channels$Channels$$anon$14.q',1,0,0)
f(13,319,44,2,'kyo/concurrent/queues$$anon$12.offer',44,0,0)
f(14,319,44,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',44,0,0)
f(15,320,43,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',43,0,0)
f(16,345,10,2,'java/lang/invoke/VarForm.getMemberName',10,0,0)
f(17,354,1,2,'java/lang/invoke/VarForm.getMemberNameOrNull',1,0,0)
f(16,355,8,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',8,0,0)
f(11,363,48,2,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$1',48,0,0)
f(12,366,45,2,'kyo/concurrent/channels$Channels$Blocking$$Lambda$59.0x0000000800d4f3d0.apply',45,0,0)
f(13,392,19,2,'kyo/concurrent/channels$Channels$Blocking.$anonfun$1',19,0,0)
f(9,411,1,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,411,1,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',1,0,0)
f(11,411,1,2,'kyo/bench/Bench$$Lambda$37.0x0000000800c80820.apply',1,0,0)
f(12,411,1,2,'kyo/bench/Bench.$anonfun$1',1,0,0)
f(13,411,1,2,'kyo/bench/EnqueueDequeueBench.kyoBenchFiber',1,0,0)
f(14,411,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(15,411,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(16,411,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(9,412,9,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,412,9,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,412,9,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,412,9,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,412,9,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,412,9,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,412,9,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,412,9,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,412,9,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,412,9,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,412,9,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,412,9,1,'jdk/internal/misc/Unsafe.unpark')
f(21,412,9,3,'pthread_cond_signal')
f(22,412,9,5,'entry_SYSCALL_64_after_hwframe')
f(23,412,9,5,'do_syscall_64')
f(24,412,8,5,'__x64_sys_futex')
f(25,413,7,5,'do_futex')
f(26,413,7,5,'futex_wake')
f(27,413,7,5,'wake_up_q')
f(28,413,7,5,'_raw_spin_unlock_irqrestore')
f(24,420,1,5,'syscall_enter_from_user_mode')
f(9,421,4,2,'kyo/concurrent/scheduler/IOTask.st',4,0,0)
f(9,425,42,6,'kyo/core$internal$KyoCont.effect',0,42,0)
f(9,467,22,3,'vtable stub')
f(7,489,2,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,489,2,1,'kyo/concurrent/scheduler/Worker.park')
f(9,489,2,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,489,2,1,'jdk/internal/misc/Unsafe.park')
f(11,489,2,3,'[unknown]')
f(12,489,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,489,2,5,'entry_SYSCALL_64_after_hwframe')
f(14,489,2,5,'do_syscall_64')
f(15,489,2,5,'__x64_sys_futex')
f(16,489,2,5,'do_futex')
f(17,489,2,5,'futex_wait')
f(18,489,2,5,'futex_wait_queue_me')
f(19,489,2,5,'schedule')
f(20,489,2,5,'__schedule')
f(21,489,2,5,'finish_task_switch.isra.0')
f(7,491,2,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,491,1,2,'kyo/concurrent/scheduler/Scheduler$.randomWorker',1,0,0)
f(8,492,1,2,'kyo/concurrent/scheduler/Worker.load',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: 448px}
</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(28);
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,23586,3,'all')
f(1,0,23580,1,'java/lang/Thread.run')
f(2,0,23580,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,23580,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,2091,1,'java/util/concurrent/FutureTask.run')
f(5,0,2091,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,2091,1,'java/util/concurrent/FutureTask.run')
f(7,0,2091,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,2091,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,2091,1,'java/lang/reflect/Method.invoke')
f(10,0,2091,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,2091,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,2091,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,2091,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,0,2091,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,0,2091,1,'kyo/bench/Bench.syncKyo')
f(16,0,1009,1,'kyo/bench/Bench.runLoop$1')
f(17,0,589,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,0,589,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,0,589,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,0,589,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,0,372,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,0,372,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,0,234,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,234,138,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,234,138,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,372,186,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,558,31,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,558,31,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,558,31,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(17,589,420,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,589,404,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,589,404,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,589,404,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,589,286,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,589,286,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,589,286,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(24,589,286,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,589,286,2,'kyo.concurrent.scheduler.IOTask')
f(21,875,118,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(22,875,118,1,'kyo/concurrent/fibers$Fibers$$Lambda$39.0x0000000800c85ba8.apply')
f(23,875,118,1,'kyo/concurrent/fibers$Fibers.$anonfun$5')
f(24,875,118,1,'kyo/concurrent/fibers$Fiber.join')
f(25,875,118,1,'kyo/concurrent/fibers$Fibers.get')
f(26,875,118,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(27,875,118,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(18,993,16,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,993,16,1,'kyo/concurrent/fibers$Fibers$$Lambda$40.0x0000000800c84c30.apply')
f(20,993,16,1,'kyo/concurrent/fibers$Fibers.$anonfun$31')
f(21,993,16,1,'kyo/concurrent/fibers$Fiber.block')
f(22,993,16,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(16,1009,1082,1,'kyo/bench/EnqueueDequeueBench.kyoBench')
f(17,1009,89,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,1009,89,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,1009,89,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,1009,89,2,'kyo.bench.EnqueueDequeueBench$$Lambda$37+0x0000000800c80820')
f(17,1098,464,1,'kyo/concurrent/fibers$Fibers.block')
f(18,1098,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,1098,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,1098,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,1098,1,2,'kyo.concurrent.fibers$Fibers$$Lambda$40+0x0000000800c84c30')
f(18,1099,91,1,'kyo/concurrent/fibers$Fibers.handler$3')
f(19,1099,91,2,'kyo.concurrent.fibers$Fibers$$anon$115')
f(18,1190,141,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$_$shallowHandleLoop$1')
f(19,1190,141,2,'kyo.concurrent.fibers$Fibers$$anon$116')
f(18,1331,231,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,1331,231,2,'kyo.concurrent.fibers$Fibers$$anon$117')
f(17,1562,529,1,'kyo/concurrent/fibers$Fibers.fork')
f(18,1562,187,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,1562,187,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,1562,187,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,1562,187,2,'kyo.concurrent.fibers$Fibers$$Lambda$39+0x0000000800c85ba8')
f(18,1749,215,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(19,1749,152,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,1749,152,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,1749,152,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,1749,152,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c81f78')
f(19,1901,63,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,1901,63,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(18,1964,127,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(19,1964,127,2,'kyo.concurrent.fibers$Fibers$$anon$34')
f(4,2091,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e898.run')
f(5,2091,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,2091,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,2091,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,2091,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,2091,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,2091,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,2091,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,2109,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$51.0x0000000800d1eac0.run')
f(5,2109,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,2109,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,2109,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,2109,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,2109,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,2109,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$64+0x0000000800d54c78')
f(4,2127,21453,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d22ef0.run')
f(5,2127,21453,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,2127,21453,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,2127,21452,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,2127,21452,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,2127,11668,1,'kyo/bench/EnqueueDequeueBench$$anon$1.apply')
f(10,2127,10025,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$1')
f(11,2127,10025,1,'kyo/bench/EnqueueDequeueBench$$Lambda$63.0x0000000800d548a8.apply')
f(12,2127,10025,1,'kyo/bench/EnqueueDequeueBench.$anonfun$2')
f(13,2127,10025,1,'kyo/bench/EnqueueDequeueBench.loop$2')
f(14,2127,1860,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d51000.linkToTargetMethod')
f(15,2127,1860,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50800.newInvokeSpecial')
f(16,2127,1860,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,2127,1860,2,'kyo.bench.EnqueueDequeueBench$$Lambda$61+0x0000000800d4fc00')
f(14,3987,2571,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2')
f(15,3987,2571,2,'kyo.bench.EnqueueDequeueBench$$anon$2')
f(14,6558,5594,1,'kyo/concurrent/channels$Channels$$anon$14.put')
f(15,6558,5594,1,'kyo/concurrent/channels$Channels$Blocking.put$')
f(16,6558,5594,1,'kyo/concurrent/channels$Channels$Blocking.put')
f(17,6558,1220,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,6558,1220,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,6558,1220,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,6558,1220,2,'kyo.concurrent.channels$Channels$Blocking$$Lambda$60+0x0000000800d4f830')
f(17,7778,1736,1,'kyo/concurrent/channels$Channels$$anon$14.putFiber')
f(18,7778,1736,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$_$transformLoop$10')
f(19,7778,1736,1,'kyo/concurrent/channels$Channels$$anon$14$$Lambda$59.0x0000000800d4f460.apply')
f(20,7778,1736,1,'kyo/concurrent/channels$Channels$$anon$14.$anonfun$11')
f(21,7778,1736,2,'kyo.concurrent.channels$$anon$19')
f(17,9514,2638,1,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$1')
f(18,9514,2638,2,'kyo.concurrent.channels$Channels$Blocking$$anon$1')
f(10,12152,1643,1,'kyo/concurrent/channels$Channels$Blocking$$anon$2.apply')
f(11,12152,1643,1,'kyo/concurrent/channels$$anon$16.apply')
f(12,12152,1643,1,'kyo/concurrent/channels$$anon$16.apply')
f(13,12152,1643,1,'kyo/concurrent/fibers$Fibers.value')
f(14,12152,1643,1,'kyo/concurrent/fibers$Fiber$.done')
f(15,12152,1643,2,'kyo.concurrent.fibers$Fiber')
f(9,13795,9576,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(10,13795,8298,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2')
f(11,13795,8298,1,'kyo/bench/EnqueueDequeueBench$$Lambda$61.0x0000000800d4fc00.apply')
f(12,13795,8298,1,'kyo/bench/EnqueueDequeueBench.$anonfun$1')
f(13,13795,2068,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d51000.linkToTargetMethod')
f(14,13795,2068,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d50800.newInvokeSpecial')
f(15,13795,2068,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,13795,2068,2,'kyo.bench.EnqueueDequeueBench$$Lambda$63+0x0000000800d548a8')
f(13,15863,2442,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$1')
f(14,15863,2442,2,'kyo.bench.EnqueueDequeueBench$$anon$1')
f(13,18305,3788,1,'kyo/concurrent/channels$Channels$$anon$14.take')
f(14,18305,3788,1,'kyo/concurrent/channels$Channels$Blocking.take$')
f(15,18305,3788,1,'kyo/concurrent/channels$Channels$Blocking.take')
f(16,18305,1422,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,18305,1422,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,18305,1422,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,18305,1422,2,'kyo.concurrent.channels$Channels$Blocking$$Lambda$62+0x0000000800d544d8')
f(16,19727,2366,1,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$2')
f(17,19727,2366,2,'kyo.concurrent.channels$Channels$Blocking$$anon$2')
f(10,22093,1278,1,'kyo/concurrent/channels$Channels$Blocking$$anon$1.apply')
f(11,22093,1278,1,'kyo/concurrent/channels$$anon$19.apply')
f(12,22093,1278,1,'kyo/concurrent/channels$$anon$19.apply')
f(13,22093,1278,1,'kyo/concurrent/fibers$Fibers.value')
f(14,22093,1278,1,'kyo/concurrent/fibers$Fiber$.done')
f(15,22093,1278,2,'kyo.concurrent.fibers$Fiber')
f(9,23371,26,1,'kyo/bench/EnqueueDequeueBench$$anon$3.apply')
f(10,23371,1,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$3')
f(11,23371,1,1,'kyo/bench/EnqueueDequeueBench$$Lambda$58.0x0000000800d4c768.apply')
f(12,23371,1,1,'kyo/bench/EnqueueDequeueBench.$anonfun$3')
f(13,23371,1,1,'kyo/bench/EnqueueDequeueBench.loop$2')
f(14,23371,1,1,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2')
f(15,23371,1,2,'kyo.bench.EnqueueDequeueBench$$anon$2')
f(10,23372,25,1,'kyo/concurrent/channels$Channels$$anon$21.apply')
f(11,23372,25,1,'kyo/concurrent/channels$Channels$.kyo$concurrent$channels$Channels$$$_$transformLoop$11')
f(12,23372,25,1,'kyo/concurrent/channels$Channels$$$Lambda$57.0x0000000800d4bf98.apply')
f(13,23372,25,1,'kyo/concurrent/channels$Channels$.$anonfun$9')
f(14,23372,1,2,'kyo.concurrent.channels$Channels$$anon$14')
f(14,23373,24,1,'kyo/concurrent/channels$Channels$$anon$14.<init>')
f(15,23373,8,2,'org.jctools.queues.MpmcUnboundedXaddArrayQueue')
f(15,23381,16,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(16,23381,16,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(17,23381,16,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.<init>')
f(18,23381,7,2,'org.jctools.queues.SpscArrayQueue')
f(18,23388,7,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(19,23388,7,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(20,23388,3,2,'org.jctools.queues.MpmcUnboundedXaddChunk')
f(20,23391,4,1,'org/jctools/queues/MpmcUnboundedXaddChunk.<init>')
f(21,23391,4,1,'org/jctools/util/UnsafeLongArrayAccess.allocateLongArray')
f(22,23391,4,2,'long[]')
f(18,23395,2,1,'org/jctools/queues/SpscArrayQueue.<init>')
f(19,23395,2,1,'org/jctools/queues/SpscArrayQueueL3Pad.<init>')
f(20,23395,2,1,'org/jctools/queues/SpscArrayQueueConsumerIndexField.<init>')
f(21,23395,2,1,'org/jctools/queues/SpscArrayQueueL2Pad.<init>')
f(22,23395,2,1,'org/jctools/queues/SpscArrayQueueProducerIndexFields.<init>')
f(23,23395,2,1,'org/jctools/queues/SpscArrayQueueL1Pad.<init>')
f(24,23395,2,1,'org/jctools/queues/SpscArrayQueueColdField.<init>')
f(25,23395,2,1,'org/jctools/queues/ConcurrentCircularArrayQueue.<init>')
f(26,23395,2,1,'org/jctools/util/UnsafeRefArrayAccess.allocateRefArray')
f(27,23395,2,2,'java.lang.Object[]')
f(9,23397,182,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,23397,182,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,23397,182,1,'kyo/bench/EnqueueDequeueBench$$Lambda$37.0x0000000800c80820.apply')
f(12,23397,182,1,'kyo/bench/EnqueueDequeueBench.kyoBench$$anonfun$1')
f(13,23397,182,1,'kyo/bench/EnqueueDequeueBench.kyoBenchFiber')
f(14,23397,182,1,'kyo/concurrent/channels$Channels$.blocking')
f(15,23397,182,1,'kyo/concurrent/queues$Queues$.bounded')
f(16,23397,182,2,'kyo.concurrent.queues$Queues$$anon$11')
f(7,23579,1,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,23579,1,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,23579,1,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,23579,1,1,'scala/runtime/ObjectRef.create')
f(11,23579,1,2,'scala.runtime.ObjectRef')
f(1,23580,6,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,23580,6,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,23580,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,23580,6,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,23580,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,23580,6,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,23580,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,23580,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,23580,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,23580,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,23580,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,23580,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,23580,5,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(7,23585,1,1,'org/openjdk/jmh/runner/ForkedRunner$1.accept')
f(8,23585,1,1,'org/openjdk/jmh/runner/link/BinaryLinkClient.pushResults')
f(9,23585,1,1,'java/lang/ClassLoader.loadClass')
f(10,23585,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(11,23585,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(12,23585,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(13,23585,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(14,23585,1,1,'jdk/internal/loader/URLClassPath.getResource')
f(15,23585,1,1,'jdk/internal/loader/URLClassPath$JarLoader.getResource')
f(16,23585,1,1,'java/util/jar/JarFile.getJarEntry')
f(17,23585,1,1,'java/util/jar/JarFile.getEntry')
f(18,23585,1,1,'java/util/zip/ZipFile.getEntry')
f(19,23585,1,1,'java/util/zip/ZipFile$Source.getEntryPos')
f(20,23585,1,1,'java/util/zip/ZipCoder$UTF8ZipCoder.toString')
f(21,23585,1,1,'java/lang/System$2.newStringUTF8NoRepl')
f(22,23585,1,1,'java/lang/String.newStringUTF8NoRepl')
f(23,23585,1,1,'java/util/Arrays.copyOfRange')
f(24,23585,1,2,'byte[]')
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 608px}
</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(38);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,489,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,'G1CollectedHeap::satisfy_failed_allocation(unsigned long, bool*)')
f(1,1,2,3,'[unknown_Java]')
f(2,1,1,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(2,2,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(1,3,486,1,'java/lang/Thread.run')
f(2,3,486,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,3,486,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,3,4,1,'java/util/concurrent/FutureTask.run')
f(5,3,3,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,3,3,1,'java/util/concurrent/FutureTask.run')
f(7,3,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,3,3,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,3,3,1,'java/lang/reflect/Method.invoke')
f(10,3,1,1,'java/lang/reflect/AccessibleObject.checkAccess')
f(11,3,1,0,'java/lang/reflect/AccessibleObject.verifyAccess',0,0,1)
f(10,4,2,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,4,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,4,2,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,4,2,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,4,2,1,'kyo/bench/jmh_generated/EnqueueDequeueBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,4,2,1,'kyo/bench/Bench.syncKyo')
f(16,4,2,1,'kyo/bench/Bench.runLoop$1')
f(17,4,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,4,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,4,1,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,4,1,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,4,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,4,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,4,1,1,'java/util/concurrent/locks/LockSupport.park')
f(24,4,1,1,'jdk/internal/misc/Unsafe.park')
f(25,4,1,3,'[unknown]')
f(26,4,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,4,1,5,'entry_SYSCALL_64_after_hwframe')
f(28,4,1,5,'do_syscall_64')
f(29,4,1,5,'__x64_sys_futex')
f(30,4,1,5,'do_futex')
f(31,4,1,5,'futex_wait')
f(32,4,1,5,'futex_wait_queue_me')
f(33,4,1,5,'schedule')
f(34,4,1,5,'__schedule')
f(35,4,1,5,'finish_task_switch.isra.0')
f(17,5,1,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,5,1,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,5,1,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,5,1,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,5,1,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,5,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,5,1,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c81f78.apply')
f(24,5,1,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,5,1,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,5,1,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,5,1,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,5,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(29,5,1,1,'jdk/internal/misc/Unsafe.unpark')
f(30,5,1,3,'pthread_cond_signal')
f(31,5,1,5,'entry_SYSCALL_64_after_hwframe')
f(32,5,1,5,'do_syscall_64')
f(33,5,1,5,'__x64_sys_futex')
f(34,5,1,5,'do_futex')
f(35,5,1,5,'futex_wake')
f(36,5,1,5,'wake_up_q')
f(37,5,1,5,'_raw_spin_unlock_irqrestore')
f(5,6,1,1,'java/util/concurrent/FutureTask.set')
f(6,6,1,1,'java/util/concurrent/FutureTask.finishCompletion')
f(7,6,1,1,'java/util/concurrent/ExecutorCompletionService$QueueingFuture.done')
f(8,6,1,1,'java/util/AbstractQueue.add')
f(9,6,1,0,'java/util/concurrent/LinkedBlockingQueue.offer',0,0,1)
f(4,7,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e898.run')
f(5,7,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,7,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,7,1,1,'java/lang/Thread.sleep')
f(8,7,1,3,'[unknown]')
f(9,7,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,7,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,7,1,5,'do_syscall_64')
f(12,7,1,5,'__x64_sys_futex')
f(13,7,1,5,'do_futex')
f(14,7,1,5,'futex_wait')
f(15,7,1,5,'futex_wait_queue_me')
f(16,7,1,5,'schedule')
f(17,7,1,5,'__schedule')
f(18,7,1,5,'finish_task_switch.isra.0')
f(4,8,481,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d22ef0.run')
f(5,8,481,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,8,481,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,8,479,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,8,479,1,'kyo/concurrent/scheduler/IOTask.eval',66,0,0)
f(9,70,201,1,'kyo/bench/EnqueueDequeueBench$$anon$1.apply')
f(10,75,196,2,'kyo/concurrent/channels$Channels$Blocking$$anon$2.apply',179,0,0)
f(11,83,181,2,'kyo/concurrent/channels$$anon$16.apply',164,0,0)
f(12,113,151,2,'kyo/concurrent/channels$$anon$16.apply',134,0,0)
f(13,204,17,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$flush')
f(14,213,5,2,'kyo/concurrent/channels$Channels$$anon$14.q',5,0,0)
f(14,218,3,2,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.isEmpty',3,0,0)
f(15,218,3,2,'org/jctools/queues/MpUnboundedXaddArrayQueue.isEmpty',3,0,0)
f(16,218,3,2,'org/jctools/queues/IndexedQueueSizeUtil.isEmpty',3,0,0)
f(17,218,1,2,'org/jctools/queues/MpUnboundedXaddArrayQueueConsumerFields.lvConsumerIndex',1,0,0)
f(17,219,2,2,'org/jctools/queues/MpUnboundedXaddArrayQueueProducerFields.lvProducerIndex',2,0,0)
f(13,221,27,2,'kyo/concurrent/fibers$Fibers.value',27,0,0)
f(14,221,27,2,'kyo/concurrent/fibers$Fiber$.done',27,0,0)
f(15,221,27,2,'kyo/concurrent/fibers$Fiber.<init>',27,0,0)
f(16,221,27,2,'java/lang/Object.<init>',27,0,0)
f(13,248,16,2,'kyo/concurrent/queues$$anon$12.poll',16,0,0)
f(14,257,7,2,'java/util/concurrent/atomic/AtomicReference.getAndSet',7,0,0)
f(15,258,6,2,'java/lang/invoke/VarHandleGuards.guard_LL_L',6,0,0)
f(16,259,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(16,260,4,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.getAndSet',4,0,0)
f(11,264,7,2,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$2',7,0,0)
f(12,266,5,2,'kyo/concurrent/channels$Channels$Blocking$$Lambda$62.0x0000000800d544d8.apply',5,0,0)
f(13,270,1,2,'kyo/concurrent/channels$Channels$Blocking.$anonfun$2',1,0,0)
f(14,270,1,2,'kyo/concurrent/fibers$Fiber.join',1,0,0)
f(9,271,178,1,'kyo/bench/EnqueueDequeueBench$$anon$2.apply')
f(10,291,25,2,'kyo/bench/EnqueueDequeueBench.kyo$bench$EnqueueDequeueBench$$_$transformLoop$2',25,0,0)
f(11,294,17,2,'kyo/bench/EnqueueDequeueBench$$Lambda$61.0x0000000800d4fc00.apply',17,0,0)
f(12,302,9,2,'kyo/bench/EnqueueDequeueBench.$anonfun$1',9,0,0)
f(13,302,9,2,'kyo/concurrent/channels$Channels$$anon$14.take',9,0,0)
f(14,302,9,2,'kyo/concurrent/channels$Channels$Blocking.take$',9,0,0)
f(15,302,9,2,'kyo/concurrent/channels$Channels$Blocking.take',9,0,0)
f(16,303,8,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',8,0,0)
f(17,309,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(18,310,1,2,'kyo/concurrent/channels$Channels$Blocking$$Lambda$62.0x0000000800d544d8.<init>',1,0,0)
f(11,311,5,2,'kyo/bench/EnqueueDequeueBench$$anon$2.<init>',5,0,0)
f(12,311,5,2,'kyo/core$internal$KyoCont.<init>',5,0,0)
f(10,316,133,2,'kyo/concurrent/channels$Channels$Blocking$$anon$1.apply',119,0,0)
f(11,318,83,2,'kyo/concurrent/channels$$anon$19.apply',69,0,0)
f(12,318,83,2,'kyo/concurrent/channels$$anon$19.apply',69,0,0)
f(13,327,13,1,'kyo/concurrent/channels$Channels$$anon$14.kyo$concurrent$channels$Channels$$anon$14$$flush')
f(14,332,2,2,'kyo/concurrent/channels$Channels$$anon$14.q',2,0,0)
f(14,334,3,2,'kyo/concurrent/queues$$anon$12.isFull',3,0,0)
f(15,334,3,2,'java/util/concurrent/atomic/AtomicReference.get',3,0,0)
f(14,337,3,2,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.isEmpty',3,0,0)
f(15,337,3,2,'org/jctools/queues/MpUnboundedXaddArrayQueue.isEmpty',3,0,0)
f(16,337,3,2,'org/jctools/queues/IndexedQueueSizeUtil.isEmpty',3,0,0)
f(17,338,2,2,'org/jctools/queues/MpUnboundedXaddArrayQueueProducerFields.lvProducerIndex',2,0,0)
f(13,340,4,2,'kyo/concurrent/channels$Channels$$anon$14.q',4,0,0)
f(13,344,57,2,'kyo/concurrent/queues$$anon$12.offer',56,0,0)
f(14,344,57,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',56,0,0)
f(15,344,57,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',56,0,0)
f(16,378,1,1,'java/lang/invoke/VarForm.getMemberName')
f(17,378,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(18,378,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(19,378,1,4,'MemAllocator::allocate() const')
f(20,378,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(21,378,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(22,378,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(23,378,1,4,'G1SurvivorRegions::length() const')
f(16,379,3,2,'java/lang/invoke/VarHandle.isDirect',3,0,0)
f(16,382,19,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',19,0,0)
f(17,395,6,2,'java/util/Objects.requireNonNull',6,0,0)
f(11,401,48,2,'kyo/concurrent/channels$Channels$Blocking.kyo$concurrent$channels$Channels$Blocking$$_$transformLoop$1',48,0,0)
f(12,410,39,2,'kyo/concurrent/channels$Channels$Blocking$$Lambda$60.0x0000000800d4f830.apply',39,0,0)
f(13,421,28,2,'kyo/concurrent/channels$Channels$Blocking.$anonfun$1',28,0,0)
f(14,421,28,2,'kyo/concurrent/fibers$Fiber.join',28,0,0)
f(9,449,1,1,'kyo/bench/EnqueueDequeueBench$$anon$3.apply')
f(10,449,1,1,'kyo/concurrent/channels$Channels$$anon$21.apply')
f(11,449,1,1,'kyo/concurrent/channels$Channels$.kyo$concurrent$channels$Channels$$$_$transformLoop$11')
f(12,449,1,1,'kyo/concurrent/channels$Channels$$$Lambda$57.0x0000000800d4bf98.apply')
f(13,449,1,1,'kyo/concurrent/channels$Channels$.$anonfun$9')
f(14,449,1,1,'kyo/concurrent/channels$Channels$$anon$14.<init>')
f(15,449,1,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(16,449,1,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.<init>')
f(17,449,1,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.<init>')
f(18,449,1,2,'org/jctools/queues/SpscArrayQueue.<init>',1,0,0)
f(19,449,1,2,'org/jctools/queues/SpscArrayQueueL3Pad.<init>',1,0,0)
f(20,449,1,2,'org/jctools/queues/SpscArrayQueueConsumerIndexField.<init>',1,0,0)
f(21,449,1,2,'org/jctools/queues/SpscArrayQueueL2Pad.<init>',1,0,0)
f(22,449,1,2,'org/jctools/queues/SpscArrayQueueProducerIndexFields.<init>',1,0,0)
f(23,449,1,2,'org/jctools/queues/SpscArrayQueueL1Pad.<init>',1,0,0)
f(24,449,1,2,'org/jctools/queues/SpscArrayQueueColdField.<init>',1,0,0)
f(25,449,1,2,'org/jctools/queues/ConcurrentCircularArrayQueue.<init>',1,0,0)
f(26,449,1,2,'org/jctools/queues/ConcurrentCircularArrayQueueL0Pad.<init>',1,0,0)
f(27,449,1,2,'java/util/AbstractQueue.<init>',1,0,0)
f(28,449,1,2,'java/util/AbstractCollection.<init>',1,0,0)
f(9,450,1,2,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',1,0,0)
f(9,451,2,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,451,2,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(11,451,2,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(12,451,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,451,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,451,2,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,451,2,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,451,2,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,451,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,451,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,451,2,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,451,2,1,'jdk/internal/misc/Unsafe.unpark')
f(21,451,2,3,'pthread_cond_signal')
f(22,451,2,5,'entry_SYSCALL_64_after_hwframe')
f(23,451,2,5,'do_syscall_64')
f(24,451,2,5,'__x64_sys_futex')
f(25,451,2,5,'do_futex')
f(26,451,2,5,'futex_wake')
f(27,451,2,5,'wake_up_q')
f(28,451,2,5,'_raw_spin_unlock_irqrestore')
f(9,453,2,2,'kyo/concurrent/scheduler/IOTask.st',2,0,0)
f(9,455,31,6,'kyo/core$internal$KyoCont.effect',0,31,0)
f(9,486,1,3,'vtable stub')
f(7,487,1,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,487,1,2,'kyo/concurrent/scheduler/Queue.modify',1,0,0)
f(9,487,1,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',1,0,0)
f(10,487,1,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',1,0,0)
f(11,487,1,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(7,488,1,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,488,1,1,'kyo/concurrent/scheduler/Worker.park')
f(9,488,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,488,1,1,'jdk/internal/misc/Unsafe.park')
f(11,488,1,3,'[unknown]')
f(12,488,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,488,1,5,'entry_SYSCALL_64_after_hwframe')
f(14,488,1,5,'do_syscall_64')
f(15,488,1,5,'__x64_sys_futex')
f(16,488,1,5,'do_futex')
f(17,488,1,5,'futex_wait')
f(18,488,1,5,'futex_wait_queue_me')
f(19,488,1,5,'schedule')
f(20,488,1,5,'__schedule')
f(21,488,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: 736px}
</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(46);
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,37356,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,37350,1,'java/lang/Thread.run')
f(2,1,37350,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,37350,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,450,1,'java/util/concurrent/FutureTask.run')
f(5,1,450,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,450,1,'java/util/concurrent/FutureTask.run')
f(7,1,450,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,450,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,450,1,'java/lang/reflect/Method.invoke')
f(10,1,450,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,450,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,450,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,450,1,'kyo/bench/jmh_generated/ForkManyBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,1,449,1,'kyo/bench/jmh_generated/ForkManyBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,1,449,1,'kyo/bench/Bench.forkKyo')
f(16,1,277,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,1,277,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,1,277,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,1,277,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3f088')
f(16,278,46,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,278,46,2,'kyo.bench.Bench$$anon$1')
f(16,324,126,1,'kyo/bench/Bench.runLoop$2')
f(17,324,39,1,'kyo/bench/Bench$$anon$1.apply')
f(18,324,39,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,324,39,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,324,39,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(21,324,39,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,324,29,2,'kyo.concurrent.scheduler.IOTask')
f(22,353,10,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,353,10,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,353,10,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,353,10,1,'kyo/concurrent/scheduler/Queue.offer')
f(26,353,10,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(27,353,10,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(28,353,10,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(29,353,10,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(30,353,10,2,'kyo.concurrent.scheduler.Queue$$Lambda$54+0x0000000800d474b0')
f(17,363,87,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,363,87,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,363,87,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,363,87,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,363,37,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,363,37,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,363,10,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,373,27,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,373,27,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,400,29,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,429,21,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,429,21,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,429,21,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(14,450,1,2,'org.openjdk.jmh.results.BenchmarkTaskResult')
f(4,451,16,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1f2b8.run')
f(5,451,16,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,451,16,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,451,16,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,451,16,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,451,16,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,451,16,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,451,16,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,467,17,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1f4e0.run')
f(5,467,17,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,467,1,1,'kyo/concurrent/scheduler/Scheduler$.addWorker')
f(7,467,1,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers')
f(8,467,1,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(9,467,1,1,'java/util/concurrent/ThreadPoolExecutor.addWorker')
f(10,467,1,1,'java/util/concurrent/ThreadPoolExecutor$Worker.<init>')
f(11,467,1,1,'kyo/concurrent/scheduler/Threads$$anon$1.newThread')
f(12,467,1,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$51.0x0000000800d23ff0.apply')
f(13,467,1,1,'kyo/concurrent/scheduler/Scheduler$.$init$$$anonfun$1')
f(14,467,1,1,'kyo/concurrent/scheduler/Worker.<init>')
f(15,467,1,1,'java/lang/Thread.<init>')
f(16,467,1,1,'java/lang/Thread.<init>')
f(17,467,1,1,'java/lang/Thread.<init>')
f(18,467,1,1,'java/security/AccessController.getContext')
f(19,467,1,1,'java/security/AccessControlContext.optimize')
f(20,467,1,1,'java/security/AccessControlContext.combine')
f(21,467,1,2,'java.security.ProtectionDomain[]')
f(6,468,16,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,468,16,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,468,16,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,468,16,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,468,16,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$70+0x0000000800d4dac0')
f(4,484,36867,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d1fda8.run')
f(5,484,36867,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,484,36867,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,484,14,1,'java/util/concurrent/CopyOnWriteArrayList.add')
f(8,484,14,1,'java/util/Arrays.copyOf')
f(9,484,14,1,'java/util/Arrays.copyOf')
f(10,484,14,2,'java.lang.Object[]')
f(7,498,32976,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,498,32976,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,498,32963,1,'kyo/bench/ForkManyBench$$anon$6.apply')
f(10,498,26524,1,'kyo/bench/ForkManyBench$$anon$1.apply')
f(11,498,11186,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$1')
f(12,498,11186,1,'kyo/bench/ForkManyBench$$Lambda$61.0x0000000800d4b260.apply')
f(13,498,11186,1,'kyo/bench/ForkManyBench.$anonfun$2')
f(14,498,11186,1,'kyo/bench/ForkManyBench.repeat$2')
f(15,498,5156,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d4cc00.linkToTargetMethod')
f(16,498,5156,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c400.newInvokeSpecial')
f(17,498,5156,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,498,5156,2,'kyo.bench.ForkManyBench$$Lambda$61+0x0000000800d4b260')
f(15,5654,6030,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$1')
f(16,5654,6030,2,'kyo.bench.ForkManyBench$$anon$1')
f(11,11684,15338,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(12,11684,15338,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,11684,15338,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(14,11684,15338,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(15,11684,2044,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(15,13728,10583,2,'kyo.concurrent.scheduler.IOTask')
f(15,24311,2694,1,'kyo/concurrent/fibers$Fiber$.promise')
f(16,24311,2694,2,'kyo.concurrent.fibers$Fiber')
f(15,27005,17,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(16,27005,17,1,'kyo/concurrent/scheduler/Worker.enqueueLocal')
f(17,27005,17,1,'kyo/concurrent/scheduler/Queue.offer')
f(18,27005,17,1,'kyo/concurrent/scheduler/Queue.tryModify')
f(19,27005,17,1,'scala/Function0.apply$mcZ$sp')
f(20,27005,17,1,'kyo/concurrent/scheduler/Queue$$Lambda$54.0x0000000800d474b0.apply')
f(21,27005,17,1,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1')
f(22,27005,17,1,'scala/collection/mutable/PriorityQueue.addOne')
f(23,27005,17,1,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize')
f(24,27005,17,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(25,27005,17,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(26,27005,17,5,'java.lang.Object[]')
f(10,27022,6436,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$5')
f(11,27022,6435,2,'kyo.bench.ForkManyBench$$anon$6')
f(11,33457,1,1,'kyo/bench/ForkManyBench$$Lambda$62.0x0000000800d4b630.apply')
f(12,33457,1,1,'kyo/bench/ForkManyBench.$anonfun$8')
f(13,33457,1,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$4')
f(14,33457,1,2,'kyo.bench.ForkManyBench$$anon$5')
f(10,33458,3,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,33458,3,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,33458,3,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(13,33458,3,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,33458,1,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(14,33459,2,2,'kyo.concurrent.scheduler.IOTask')
f(9,33461,4,1,'kyo/bench/ForkManyBench$$anon$7.apply')
f(10,33461,1,1,'kyo/bench/ForkManyBench$$anon$4.apply')
f(11,33461,1,1,'kyo/concurrent/atomics$Atomics$$anon$1.apply')
f(12,33461,1,1,'kyo/concurrent/atomics$Atomics$$anon$1.apply')
f(13,33461,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(10,33462,3,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$6')
f(11,33462,3,1,'kyo/bench/ForkManyBench$$Lambda$58.0x0000000800d4a5f0.apply')
f(12,33462,3,1,'kyo/bench/ForkManyBench.$anonfun$6')
f(13,33462,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,33462,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,33462,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,33462,1,2,'kyo.bench.ForkManyBench$$Lambda$60+0x0000000800d4afa0')
f(16,33463,1,2,'kyo.bench.ForkManyBench$$Lambda$62+0x0000000800d4b630')
f(13,33464,1,1,'kyo/bench/ForkManyBench.repeat$2')
f(14,33464,1,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d4cc00.linkToTargetMethod')
f(15,33464,1,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c400.newInvokeSpecial')
f(16,33464,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(17,33464,1,2,'kyo.bench.ForkManyBench$$Lambda$61+0x0000000800d4b260')
f(9,33465,1,1,'kyo/bench/ForkManyBench$$anon$8.apply')
f(10,33465,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(11,33465,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(12,33465,1,2,'kyo.concurrent.scheduler.IOPromise')
f(9,33466,3,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(10,33466,3,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(11,33466,1,2,'kyo.concurrent.fibers$Fiber$Promise$$anon$26$$anon$27')
f(11,33467,2,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$Promise$$anon$26$$_$loop$22')
f(12,33467,2,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(13,33467,2,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(14,33467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(15,33467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(16,33467,2,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(17,33467,2,1,'scala/runtime/function/JProcedure1.apply')
f(18,33467,2,1,'scala/runtime/function/JProcedure1.apply')
f(19,33467,2,1,'kyo/concurrent/scheduler/IOTask$$Lambda$66.0x0000000800d4ede0.applyVoid')
f(20,33467,2,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(21,33467,2,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(22,33467,2,1,'kyo/concurrent/scheduler/Worker.enqueueLocal')
f(23,33467,2,1,'kyo/concurrent/scheduler/Queue.offer')
f(24,33467,2,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(25,33467,2,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(26,33467,2,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(27,33467,2,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(28,33467,2,2,'kyo.concurrent.scheduler.Queue$$Lambda$54+0x0000000800d474b0')
f(9,33469,3,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,33469,3,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,33469,3,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3f088.apply')
f(12,33469,3,1,'kyo/bench/Bench.$anonfun$1')
f(13,33469,3,1,'kyo/bench/ForkManyBench.kyoBenchFiber')
f(14,33469,2,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$7')
f(15,33469,2,2,'kyo.bench.ForkManyBench$$anon$8')
f(14,33471,1,1,'kyo/concurrent/fibers$Fibers.promise')
f(15,33471,1,2,'kyo.concurrent.fibers$Fibers$$anon$31')
f(9,33472,1,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,33472,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,33472,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(9,33473,1,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,33473,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,33473,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(7,33474,3854,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,33474,3854,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,33474,3854,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,33474,3854,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,33474,5,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(12,33474,5,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d45230')
f(11,33479,3849,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d45230')
f(7,37328,4,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,37328,4,1,'java/util/AbstractQueue.add')
f(9,37328,4,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.offer')
f(10,37328,4,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.producerChunkForIndex')
f(11,37328,4,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.appendNextChunks')
f(12,37328,4,1,'org/jctools/queues/MpUnboundedXaddArrayQueue.newOrPooledChunk')
f(13,37328,4,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(14,37328,4,1,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.newChunk')
f(15,37328,1,2,'org.jctools.queues.MpmcUnboundedXaddChunk')
f(15,37329,3,1,'org/jctools/queues/MpmcUnboundedXaddChunk.<init>')
f(16,37329,3,1,'org/jctools/queues/MpUnboundedXaddChunk.<init>')
f(17,37329,3,1,'org/jctools/util/UnsafeRefArrayAccess.allocateRefArray')
f(18,37329,3,2,'java.lang.Object[]')
f(7,37332,14,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,37332,14,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,37332,14,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,37332,14,1,'scala/runtime/ObjectRef.create')
f(11,37332,14,2,'scala.runtime.ObjectRef')
f(7,37346,5,1,'kyo/concurrent/scheduler/Worker.flush')
f(8,37346,5,1,'kyo/concurrent/scheduler/Queue.drain')
f(9,37346,5,1,'kyo/concurrent/scheduler/Queue.modify')
f(10,37346,5,1,'kyo/concurrent/scheduler/Queue$$Lambda$75.0x0000000800d56528.apply')
f(11,37346,5,1,'kyo/concurrent/scheduler/Queue.drain$$anonfun$adapted$1')
f(12,37346,5,1,'kyo/concurrent/scheduler/Queue.drain$$anonfun$1')
f(13,37346,5,1,'scala/collection/AbstractIterable.foreach')
f(14,37346,5,1,'scala/collection/IterableOnceOps.foreach$')
f(15,37346,5,1,'scala/collection/IterableOnceOps.foreach')
f(16,37346,4,1,'scala/collection/mutable/PriorityQueue.iterator')
f(17,37346,4,1,'scala/collection/mutable/ArrayBuffer.iterator')
f(18,37346,4,1,'scala/collection/IndexedSeqOps.iterator$')
f(19,37346,4,1,'scala/collection/IndexedSeqOps.iterator')
f(20,37346,4,1,'scala/collection/mutable/ArrayBuffer.view')
f(21,37346,4,1,'scala/collection/mutable/ArrayBuffer.view')
f(22,37346,4,1,'java/lang/ClassLoader.loadClass')
f(23,37346,4,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(24,37346,4,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(25,37346,4,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(26,37346,4,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(27,37346,4,1,'jdk/internal/loader/BuiltinClassLoader.defineClass')
f(28,37346,1,1,'java/security/SecureClassLoader.defineClass')
f(29,37346,1,1,'java/lang/ClassLoader.defineClass')
f(30,37346,1,1,'java/lang/ClassLoader.defineClass1')
f(31,37346,1,1,'java/lang/ClassLoader.loadClass')
f(32,37346,1,1,'jdk/internal/loader/ClassLoaders$AppClassLoader.loadClass')
f(33,37346,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClass')
f(34,37346,1,1,'jdk/internal/loader/BuiltinClassLoader.loadClassOrNull')
f(35,37346,1,1,'jdk/internal/loader/BuiltinClassLoader.findClassOnClassPathOrNull')
f(36,37346,1,1,'jdk/internal/loader/BuiltinClassLoader.defineClass')
f(37,37346,1,1,'jdk/internal/loader/Resource.getByteBuffer')
f(38,37346,1,1,'jdk/internal/loader/Resource.cachedInputStream')
f(39,37346,1,1,'jdk/internal/loader/URLClassPath$JarLoader$2.getInputStream')
f(40,37346,1,1,'java/util/jar/JarFile.getInputStream')
f(41,37346,1,1,'java/util/zip/ZipFile.getInputStream')
f(42,37346,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(43,37346,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(44,37346,1,1,'java/util/zip/InflaterInputStream.<init>')
f(45,37346,1,2,'byte[]')
f(28,37347,1,1,'jdk/internal/loader/Resource.getByteBuffer')
f(29,37347,1,1,'jdk/internal/loader/Resource.cachedInputStream')
f(30,37347,1,1,'jdk/internal/loader/URLClassPath$JarLoader$2.getInputStream')
f(31,37347,1,1,'java/util/jar/JarFile.getInputStream')
f(32,37347,1,1,'java/util/zip/ZipFile.getInputStream')
f(33,37347,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(34,37347,1,1,'java/util/zip/ZipFile$ZipFileInflaterInputStream.<init>')
f(35,37347,1,1,'java/util/zip/InflaterInputStream.<init>')
f(36,37347,1,5,'byte[]')
f(28,37348,2,1,'jdk/internal/loader/Resource.getBytes')
f(29,37348,2,1,'java/util/Arrays.copyOf')
f(30,37348,2,5,'byte[]')
f(16,37350,1,1,'scala/runtime/function/JProcedure1.apply')
f(17,37350,1,1,'scala/runtime/function/JProcedure1.apply')
f(18,37350,1,1,'kyo/concurrent/scheduler/Worker$$Lambda$74.0x0000000800d56128.applyVoid')
f(19,37350,1,1,'kyo/concurrent/scheduler/Worker.flush$$anonfun$1')
f(20,37350,1,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(21,37350,1,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(22,37350,1,1,'kyo/concurrent/scheduler/Queue.offer')
f(23,37350,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(24,37350,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(25,37350,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(26,37350,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(27,37350,1,2,'kyo.concurrent.scheduler.Queue$$Lambda$54+0x0000000800d474b0')
f(1,37351,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,37351,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,37351,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,37351,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,37351,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,37351,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,37351,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,37351,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,37351,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,37351,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,37351,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,37351,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,37351,5,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: 816px}
</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(51);
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,493,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,8,4,'GangWorker::run()')
f(5,0,8,4,'GangWorker::loop()')
f(6,0,8,4,'G1EvacuateRegionsBaseTask::work(unsigned int)')
f(7,0,5,4,'G1EvacuateRegionsTask::evacuate_live_objects(G1ParScanThreadState*, unsigned int)')
f(8,0,5,4,'G1ParEvacuateFollowersClosure::do_void()')
f(9,0,5,4,'G1ParScanThreadState::steal_and_trim_queue(GenericTaskQueueSet<OverflowTaskQueue<ScannerTask, (MEMFLAGS)5, 131072u>, (MEMFLAGS)5>*)')
f(10,4,1,4,'G1ParScanThreadState::trim_queue_to_threshold(unsigned int)')
f(7,5,3,4,'G1EvacuateRegionsTask::scan_roots(G1ParScanThreadState*, unsigned int)')
f(8,5,3,4,'G1RemSet::scan_heap_roots(G1ParScanThreadState*, unsigned int, G1GCPhaseTimes::GCParPhases, G1GCPhaseTimes::GCParPhases, bool)')
f(9,5,3,4,'G1ScanHRForRegionClosure::scan_heap_roots(HeapRegion*)')
f(10,5,1,4,'G1BlockOffsetTablePart::forward_to_block_containing_addr_slow(HeapWordImpl**, HeapWordImpl**, void const*)')
f(10,6,1,4,'G1ParScanThreadState::trim_queue_to_threshold(unsigned int)')
f(10,7,1,4,'void OopOopIterateBoundedDispatch<G1ScanCardClosure>::Table::oop_oop_iterate_bounded<ObjArrayKlass, narrowOop>(G1ScanCardClosure*, oopDesc*, Klass*, MemRegion)')
f(4,8,6,4,'JavaThread::thread_main_inner()')
f(5,8,6,4,'CompileBroker::compiler_thread_loop()')
f(6,8,6,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,8,5,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,8,5,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,8,2,4,'Compile::Code_Gen()')
f(10,8,1,4,'Matcher::match()')
f(11,8,1,4,'ShouldNotReachHereNode::ideal_Opcode() const')
f(10,9,1,4,'PhaseChaitin::Register_Allocate()')
f(11,9,1,4,'PhaseChaitin::gather_lrg_masks(bool)')
f(9,10,1,4,'Compile::Optimize()')
f(10,10,1,4,'IfNode::Opcode() const')
f(9,11,2,4,'ParseGenerator::generate(JVMState*)')
f(10,11,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,11,2,4,'Parse::do_all_blocks()')
f(12,11,2,4,'Parse::do_one_block()')
f(13,11,2,4,'Parse::do_call()')
f(14,11,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,11,2,4,'ParseGenerator::generate(JVMState*)')
f(16,11,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,11,2,4,'Parse::do_all_blocks()')
f(18,11,2,4,'Parse::do_one_block()')
f(19,11,2,4,'Parse::do_call()')
f(20,11,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,11,1,4,'ParseGenerator::generate(JVMState*)')
f(22,11,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,11,1,4,'Parse::do_all_blocks()')
f(24,11,1,4,'Parse::do_one_block()')
f(25,11,1,4,'Parse::do_call()')
f(26,11,1,4,'ParseGenerator::generate(JVMState*)')
f(27,11,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(28,11,1,4,'Parse::do_all_blocks()')
f(29,11,1,4,'Parse::do_one_block()')
f(30,11,1,4,'Parse::do_call()')
f(31,11,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(32,11,1,4,'ParseGenerator::generate(JVMState*)')
f(33,11,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(34,11,1,4,'Parse::do_all_blocks()')
f(35,11,1,4,'Parse::do_one_block()')
f(36,11,1,4,'Parse::do_call()')
f(37,11,1,4,'ParseGenerator::generate(JVMState*)')
f(38,11,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(39,11,1,4,'Parse::do_all_blocks()')
f(40,11,1,4,'Parse::do_one_block()')
f(41,11,1,4,'Parse::do_call()')
f(42,11,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(43,11,1,4,'ParseGenerator::generate(JVMState*)')
f(44,11,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(45,11,1,4,'Parse::do_all_blocks()')
f(46,11,1,4,'Parse::do_one_block()')
f(47,11,1,4,'Parse::do_call()')
f(48,11,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(49,11,1,4,'InlineTree::ok_to_inline(ciMethod*, JVMState*, ciCallProfile&, bool&)')
f(50,11,1,4,'InlineTree::try_to_inline(ciMethod*, ciMethod*, int, JVMState*, ciCallProfile&, bool&)')
f(21,12,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,12,1,4,'ParseGenerator::generate(JVMState*)')
f(23,12,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,12,1,4,'Parse::do_all_blocks()')
f(25,12,1,4,'Parse::do_one_block()')
f(26,12,1,4,'Parse::do_call()')
f(27,12,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(28,12,1,4,'GraphKit::null_check_common(Node*, BasicType, bool, Node**, bool) [clone .part.0]')
f(29,12,1,4,'GraphKit::uncommon_trap(int, ciKlass*, char const*, bool, bool) [clone .part.0]')
f(30,12,1,4,'OptoRuntime::uncommon_trap_Type()')
f(31,12,1,4,'TypeTuple::make(unsigned int, Type const**)')
f(32,12,1,4,'Type::cmp(Type const*, Type const*)')
f(7,13,1,4,'Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,13,1,4,'Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)')
f(9,13,1,4,'Compilation::compile_method()')
f(10,13,1,4,'Compilation::compile_java_method()')
f(11,13,1,4,'Compilation::build_hir() [clone .part.0]')
f(12,13,1,4,'IR::IR(Compilation*, ciMethod*, int)')
f(13,13,1,4,'IRScope::IRScope(Compilation*, IRScope*, int, ciMethod*, int, bool)')
f(14,13,1,4,'GraphBuilder::GraphBuilder(Compilation*, IRScope*)')
f(15,13,1,4,'GraphBuilder::iterate_all_blocks(bool)')
f(16,13,1,4,'GraphBuilder::iterate_bytecodes_for_block(int)')
f(17,13,1,4,'GraphBuilder::invoke(Bytecodes::Code)')
f(18,13,1,4,'GraphBuilder::try_inline(ciMethod*, bool, bool, Bytecodes::Code, Instruction*)')
f(19,13,1,4,'GraphBuilder::try_inline_full(ciMethod*, bool, bool, Bytecodes::Code, Instruction*)')
f(20,13,1,4,'GraphBuilder::iterate_all_blocks(bool)')
f(21,13,1,4,'GraphBuilder::iterate_bytecodes_for_block(int)')
f(22,13,1,4,'GraphBuilder::invoke(Bytecodes::Code)')
f(23,13,1,4,'GraphBuilder::try_inline(ciMethod*, bool, bool, Bytecodes::Code, Instruction*)')
f(24,13,1,4,'GraphBuilder::try_inline_full(ciMethod*, bool, bool, Bytecodes::Code, Instruction*)')
f(25,13,1,4,'GraphBuilder::iterate_all_blocks(bool)')
f(26,13,1,4,'GraphBuilder::iterate_bytecodes_for_block(int)')
f(27,13,1,4,'GraphBuilder::invoke(Bytecodes::Code)')
f(28,13,1,4,'ciInstanceKlass::compute_shared_init_state()')
f(1,14,1,3,'[unknown]')
f(2,14,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(1,15,1,3,'[unknown_Java]')
f(2,15,1,1,'I2C/C2I adapters')
f(1,16,477,1,'java/lang/Thread.run')
f(2,16,477,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,16,477,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,16,1,1,'java/util/concurrent/FutureTask.run')
f(5,16,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,16,1,1,'java/util/concurrent/FutureTask.run')
f(7,16,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,16,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,16,1,1,'java/lang/reflect/Method.invoke')
f(10,16,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,16,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,16,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,16,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,16,1,1,'kyo/bench/jmh_generated/ForkManyBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,16,1,1,'kyo/bench/Bench.forkKyo')
f(16,16,1,1,'kyo/bench/Bench.runLoop$2')
f(17,16,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,16,1,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,16,1,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,16,1,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,16,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,16,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,16,1,1,'java/util/concurrent/locks/LockSupport.park')
f(24,16,1,1,'jdk/internal/misc/Unsafe.park')
f(25,16,1,3,'Unsafe_Park')
f(26,16,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,16,1,5,'entry_SYSCALL_64_after_hwframe')
f(28,16,1,5,'do_syscall_64')
f(29,16,1,5,'__x64_sys_futex')
f(30,16,1,5,'do_futex')
f(31,16,1,5,'hash_futex')
f(4,17,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1f2b8.run')
f(5,17,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,17,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,17,1,1,'java/lang/Thread.sleep')
f(8,17,1,3,'[unknown]')
f(9,17,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,17,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,17,1,5,'do_syscall_64')
f(12,17,1,5,'__x64_sys_futex')
f(13,17,1,5,'do_futex')
f(14,17,1,5,'futex_wait')
f(15,17,1,5,'futex_wait_queue_me')
f(16,17,1,5,'schedule')
f(17,17,1,5,'__schedule')
f(18,17,1,5,'finish_task_switch.isra.0')
f(4,18,475,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d1fda8.run')
f(5,18,475,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,18,475,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,29,4,1,'kyo/concurrent/scheduler/IOTask.reenqueue')
f(8,29,4,1,'kyo/concurrent/scheduler/IOTask.curr')
f(7,33,393,1,'kyo/concurrent/scheduler/IOTask.run',29,0,0)
f(8,36,4,1,'kyo/concurrent/scheduler/Coordinator$.tick')
f(8,40,378,1,'kyo/concurrent/scheduler/IOTask.eval',20,0,0)
f(9,63,6,1,'kyo/bench/ForkManyBench$$anon$3.apply')
f(10,64,5,2,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$_$transformLoop$2',5,0,0)
f(11,64,5,2,'kyo/bench/ForkManyBench$$Lambda$59.0x0000000800d4ac60.apply',5,0,0)
f(12,64,5,2,'kyo/bench/ForkManyBench.$anonfun$adapted$2',5,0,0)
f(13,64,5,2,'kyo/bench/ForkManyBench.$anonfun$5',5,0,0)
f(14,64,5,2,'scala/runtime/BoxesRunTime.boxToBoolean',5,0,0)
f(9,69,313,1,'kyo/bench/ForkManyBench$$anon$6.apply')
f(10,76,292,1,'kyo/bench/ForkManyBench$$anon$1.apply')
f(11,76,292,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply',46,0,0)
f(12,81,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(13,82,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(12,83,285,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2',39,0,0)
f(13,85,254,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply',8,0,0)
f(14,85,254,1,'kyo/concurrent/fibers$Fibers.$anonfun$4',8,0,0)
f(15,85,7,2,'kyo/concurrent/scheduler/IOTask.<init>',7,0,0)
f(16,91,1,2,'kyo/concurrent/scheduler/IOPromise.<init>',1,0,0)
f(17,91,1,2,'kyo/concurrent/scheduler/IOPromise.<init>',1,0,0)
f(18,91,1,2,'java/util/concurrent/atomic/AtomicReference.<init>',1,0,0)
f(15,92,247,1,'kyo/concurrent/scheduler/Scheduler$.schedule',1,0,0)
f(16,92,247,1,'kyo/concurrent/scheduler/Worker.enqueueLocal',1,0,0)
f(17,92,247,1,'kyo/concurrent/scheduler/Queue.offer',1,0,0)
f(18,92,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(19,92,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(18,93,246,1,'kyo/concurrent/scheduler/Queue.tryModify')
f(19,93,246,1,'scala/Function0.apply$mcZ$sp')
f(20,93,246,1,'kyo/concurrent/scheduler/Queue$$Lambda$54.0x0000000800d474b0.apply')
f(21,93,246,1,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1')
f(22,93,246,1,'scala/collection/mutable/PriorityQueue.addOne')
f(23,97,61,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize',61,0,0)
f(24,97,61,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',61,0,0)
f(25,99,59,2,'scala/collection/mutable/ArrayBuffer.array_$eq',59,0,0)
f(23,158,180,2,'scala/collection/mutable/PriorityQueue.fixUp',180,0,0)
f(24,185,29,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.lt',29,0,0)
f(25,203,11,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.lt',11,0,0)
f(24,214,120,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_swap',120,0,0)
f(25,320,14,2,'scala/collection/mutable/ArrayBuffer.array',14,0,0)
f(24,334,2,2,'scala/collection/mutable/PriorityQueue.ord',2,0,0)
f(24,336,2,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',2,0,0)
f(23,338,1,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',1,0,0)
f(13,339,29,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',29,0,0)
f(14,351,17,2,'kyo/core$internal$KyoCont.<init>',17,0,0)
f(15,351,4,2,'kyo/core$internal$Kyo.<init>',4,0,0)
f(15,355,9,2,'kyo/ios$KyoIO.effect',9,0,0)
f(16,362,2,2,'kyo/ios$KyoIO.effect',2,0,0)
f(15,364,4,2,'kyo/ios$KyoIO.value',4,0,0)
f(10,368,14,2,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$5',9,0,0)
f(11,369,13,2,'kyo/bench/ForkManyBench$$anon$6.<init>',8,0,0)
f(12,369,13,2,'kyo/core$internal$KyoCont.<init>',8,0,0)
f(13,376,2,6,'kyo/core$internal$KyoCont.effect',0,2,0)
f(13,378,3,6,'kyo/core$internal$KyoCont.value',0,3,0)
f(13,381,1,3,'vtable stub')
f(9,382,3,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,382,3,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',3,0,0)
f(9,385,1,1,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf')
f(9,386,4,1,'kyo/concurrent/scheduler/IOTask.finalize$1')
f(10,388,1,2,'kyo/concurrent/scheduler/IOTask.ensures',1,0,0)
f(10,389,1,2,'kyo/concurrent/scheduler/IOTask.ensures_$eq',1,0,0)
f(9,390,11,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,390,11,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',11,0,0)
f(11,390,11,2,'kyo/concurrent/scheduler/IOPromise.complete',11,0,0)
f(12,390,8,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',8,0,0)
f(13,390,8,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',8,0,0)
f(14,390,8,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',8,0,0)
f(12,398,2,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',2,0,0)
f(13,398,2,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',2,0,0)
f(12,400,1,2,'kyo/concurrent/scheduler/IOTask.onComplete',1,0,0)
f(13,400,1,2,'kyo/concurrent/scheduler/IOTask.preempt',1,0,0)
f(9,401,2,1,'kyo/concurrent/scheduler/IOTask.st')
f(9,403,7,6,'kyo/core$internal$KyoCont.effect',0,7,0)
f(9,410,3,1,'kyo/ios$KyoIO.effect')
f(9,413,5,3,'vtable stub')
f(8,418,8,2,'scala/runtime/BoxesRunTime.equals',8,0,0)
f(9,418,8,2,'scala/runtime/BoxesRunTime.equals2',8,0,0)
f(7,426,55,1,'kyo/concurrent/scheduler/Queue.poll',4,0,0)
f(8,427,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(9,427,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',3,0,0)
f(10,429,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(8,430,51,1,'kyo/concurrent/scheduler/Queue.modify')
f(9,431,7,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',7,0,0)
f(10,431,7,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',7,0,0)
f(11,435,3,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',3,0,0)
f(9,438,43,2,'kyo/concurrent/scheduler/Queue$$Lambda$63.0x0000000800d4ba90.apply',43,0,0)
f(10,442,39,2,'kyo/concurrent/scheduler/Queue.addAndPoll$$anonfun$1',39,0,0)
f(11,452,14,2,'kyo/concurrent/scheduler/Queue.isEmpty',14,0,0)
f(11,466,15,2,'scala/collection/mutable/PriorityQueue.dequeue',15,0,0)
f(12,479,1,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_array',1,0,0)
f(12,480,1,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_size0',1,0,0)
f(7,481,7,1,'kyo/concurrent/scheduler/Scheduler$.idle',2,0,0)
f(8,481,2,2,'java/util/AbstractQueue.add',2,0,0)
f(9,481,2,2,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.offer',2,0,0)
f(10,481,2,2,'org/jctools/queues/MpUnboundedXaddArrayQueue.producerChunkForIndex',2,0,0)
f(11,481,2,2,'org/jctools/queues/MpUnboundedXaddChunk.lvPrev',2,0,0)
f(8,483,5,1,'kyo/concurrent/scheduler/Worker.park')
f(9,483,5,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,483,5,1,'jdk/internal/misc/Unsafe.park')
f(11,483,1,3,'Unsafe_Park')
f(12,483,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,483,1,5,'entry_SYSCALL_64_after_hwframe')
f(14,483,1,5,'do_syscall_64')
f(15,483,1,5,'__x64_sys_futex')
f(16,483,1,5,'do_futex')
f(17,483,1,5,'futex_wake')
f(11,484,4,3,'[unknown]')
f(12,484,4,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,484,4,5,'entry_SYSCALL_64_after_hwframe')
f(14,484,4,5,'do_syscall_64')
f(15,484,4,5,'__x64_sys_futex')
f(16,485,3,5,'do_futex')
f(17,485,3,5,'futex_wait')
f(18,485,2,5,'futex_wait_queue_me')
f(19,485,1,5,'hrtimer_sleeper_start_expires')
f(20,485,1,5,'_raw_spin_unlock_irqrestore')
f(19,486,1,5,'schedule')
f(20,486,1,5,'__schedule')
f(21,486,1,5,'finish_task_switch.isra.0')
f(18,487,1,5,'hrtimer_init_sleeper')
f(19,487,1,5,'__hrtimer_init')
f(7,488,1,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,488,1,2,'kyo/concurrent/scheduler/Worker.load',1,0,0)
f(7,489,4,1,'kyo/concurrent/scheduler/Worker.flush')
f(8,489,4,1,'kyo/concurrent/scheduler/Queue.drain')
f(9,489,4,1,'kyo/concurrent/scheduler/Queue.modify')
f(10,489,4,1,'kyo/concurrent/scheduler/Queue$$Lambda$76.0x0000000800d565e8.apply')
f(11,489,4,1,'kyo/concurrent/scheduler/Queue.drain$$anonfun$adapted$1')
f(12,489,4,1,'kyo/concurrent/scheduler/Queue.drain$$anonfun$1')
f(13,489,4,1,'scala/collection/AbstractIterable.foreach')
f(14,489,4,1,'scala/collection/IterableOnceOps.foreach$')
f(15,489,4,1,'scala/collection/IterableOnceOps.foreach')
f(16,489,4,1,'scala/runtime/function/JProcedure1.apply')
f(17,489,4,1,'scala/runtime/function/JProcedure1.apply')
f(18,489,4,1,'kyo/concurrent/scheduler/Worker$$Lambda$75.0x0000000800d561e8.applyVoid')
f(19,489,4,1,'kyo/concurrent/scheduler/Worker.flush$$anonfun$1')
f(20,489,4,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(21,489,4,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(22,489,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(23,489,3,1,'jdk/internal/misc/Unsafe.unpark')
f(24,489,3,3,'pthread_cond_signal')
f(25,490,2,5,'entry_SYSCALL_64_after_hwframe')
f(26,490,2,5,'do_syscall_64')
f(27,490,2,5,'__x64_sys_futex')
f(28,490,2,5,'do_futex')
f(29,491,1,5,'futex_wake')
f(30,491,1,5,'wake_up_q')
f(31,491,1,5,'_raw_spin_unlock_irqrestore')
f(22,492,1,1,'kyo/concurrent/scheduler/Queue.offer')
f(23,492,1,0,'kyo/concurrent/scheduler/Queue.tryModify',0,0,1)
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: 448px}
</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(28);
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,17716,3,'all')
f(1,0,17711,1,'java/lang/Thread.run')
f(2,0,17711,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,17711,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,352,1,'java/util/concurrent/FutureTask.run')
f(5,0,352,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,352,1,'java/util/concurrent/FutureTask.run')
f(7,0,352,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,352,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,352,1,'java/lang/reflect/Method.invoke')
f(10,0,352,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,352,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,352,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,352,1,'kyo/bench/jmh_generated/ForkManyBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,0,349,1,'kyo/bench/jmh_generated/ForkManyBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,0,349,1,'kyo/bench/Bench.syncKyo')
f(16,0,169,1,'kyo/bench/Bench.runLoop$1')
f(17,0,100,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,0,100,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,0,100,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,0,100,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,0,69,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,0,69,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,0,40,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,40,29,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,40,29,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,69,30,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,99,1,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,99,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,99,1,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(17,100,69,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,100,69,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,100,69,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,100,69,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,100,41,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,100,41,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,100,41,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(24,100,41,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,100,41,2,'kyo.concurrent.scheduler.IOTask')
f(21,141,28,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(22,141,28,1,'kyo/concurrent/fibers$Fibers$$Lambda$39.0x0000000800c83420.apply')
f(23,141,28,1,'kyo/concurrent/fibers$Fibers.$anonfun$5')
f(24,141,28,1,'kyo/concurrent/fibers$Fiber.join')
f(25,141,28,1,'kyo/concurrent/fibers$Fibers.get')
f(26,141,28,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(27,141,28,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(16,169,180,1,'kyo/bench/ForkManyBench.kyoBench')
f(17,169,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,169,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,169,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,169,9,2,'kyo.bench.ForkManyBench$$Lambda$37+0x0000000800c3f088')
f(17,178,73,1,'kyo/concurrent/fibers$Fibers.block')
f(18,178,9,1,'kyo/concurrent/fibers$Fibers.handler$3')
f(19,178,9,2,'kyo.concurrent.fibers$Fibers$$anon$115')
f(18,187,29,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$_$shallowHandleLoop$1')
f(19,187,29,2,'kyo.concurrent.fibers$Fibers$$anon$116')
f(18,216,35,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,216,35,2,'kyo.concurrent.fibers$Fibers$$anon$117')
f(17,251,98,1,'kyo/concurrent/fibers$Fibers.fork')
f(18,251,37,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,251,37,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,251,37,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,251,37,2,'kyo.concurrent.fibers$Fibers$$Lambda$39+0x0000000800c83420')
f(18,288,29,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(19,288,28,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,288,28,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,288,28,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,288,28,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84800')
f(19,316,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,316,1,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(18,317,32,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(19,317,32,2,'kyo.concurrent.fibers$Fibers$$anon$34')
f(14,349,2,2,'org.openjdk.jmh.results.RawResults')
f(14,351,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,351,1,1,'org/openjdk/jmh/results/Result.of')
f(16,351,1,2,'org.openjdk.jmh.util.SingletonStatistics')
f(4,352,9,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1f2b8.run')
f(5,352,9,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,352,9,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,352,9,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,352,9,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,352,9,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,352,9,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,352,9,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,361,16,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$51.0x0000000800d1f4e0.run')
f(5,361,16,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,361,7,1,'kyo/concurrent/scheduler/Scheduler$.addWorker')
f(7,361,7,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers')
f(8,361,7,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(9,361,7,1,'java/util/concurrent/ThreadPoolExecutor.addWorker')
f(10,361,7,1,'java/util/concurrent/ThreadPoolExecutor$Worker.<init>')
f(11,361,7,1,'kyo/concurrent/scheduler/Threads$$anon$1.newThread')
f(12,361,7,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23ff0.apply')
f(13,361,7,1,'kyo/concurrent/scheduler/Scheduler$.$init$$$anonfun$1')
f(14,361,7,1,'kyo/concurrent/scheduler/Worker.<init>')
f(15,361,7,1,'java/lang/Thread.<init>')
f(16,361,7,1,'java/lang/Thread.<init>')
f(17,361,7,1,'java/lang/Thread.<init>')
f(18,361,7,1,'java/security/AccessController.getContext')
f(19,361,7,1,'java/security/AccessControlContext.optimize')
f(20,361,7,1,'java/security/AccessControlContext.combine')
f(21,361,7,2,'java.security.ProtectionDomain[]')
f(6,368,9,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,368,9,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,368,9,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,368,9,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,368,9,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$70+0x0000000800d4fd90')
f(4,377,17334,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d1fda8.run')
f(5,377,17334,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,377,17334,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,377,18,1,'java/util/concurrent/CopyOnWriteArrayList.add')
f(8,377,18,1,'java/util/Arrays.copyOf')
f(9,377,18,1,'java/util/Arrays.copyOf')
f(10,377,18,2,'java.lang.Object[]')
f(7,395,15540,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,395,15540,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,395,15534,1,'kyo/bench/ForkManyBench$$anon$6.apply')
f(10,395,12813,1,'kyo/bench/ForkManyBench$$anon$1.apply')
f(11,395,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(12,395,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(13,395,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(14,395,1,2,'kyo.bench.ForkManyBench$$anon$1$$Lambda$71+0x0000000800d4d800')
f(11,396,5167,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$1')
f(12,396,5167,1,'kyo/bench/ForkManyBench$$Lambda$62.0x0000000800d4b2f0.apply')
f(13,396,5167,1,'kyo/bench/ForkManyBench.$anonfun$2')
f(14,396,5167,1,'kyo/bench/ForkManyBench.repeat$2')
f(15,396,2334,1,'java/lang/invoke/LambdaForm$MH.0x0000000800d4cc00.linkToTargetMethod')
f(16,396,2334,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c400.newInvokeSpecial')
f(17,396,2334,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,396,2334,2,'kyo.bench.ForkManyBench$$Lambda$62+0x0000000800d4b2f0')
f(15,2730,2833,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$1')
f(16,2730,2833,2,'kyo.bench.ForkManyBench$$anon$1')
f(11,5563,7645,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(12,5563,7645,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,5563,7645,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(14,5563,7645,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(15,5563,1017,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(15,6580,5286,2,'kyo.concurrent.scheduler.IOTask')
f(15,11866,1317,1,'kyo/concurrent/fibers$Fiber$.promise')
f(16,11866,1317,2,'kyo.concurrent.fibers$Fiber')
f(15,13183,25,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(16,13183,25,1,'kyo/concurrent/scheduler/Worker.enqueueLocal')
f(17,13183,25,1,'kyo/concurrent/scheduler/Queue.offer')
f(18,13183,4,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,13183,4,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,13183,4,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,13183,4,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(22,13183,4,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d474b0')
f(18,13187,21,1,'kyo/concurrent/scheduler/Queue.tryModify')
f(19,13187,21,1,'scala/Function0.apply$mcZ$sp')
f(20,13187,21,1,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d474b0.apply')
f(21,13187,21,1,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1')
f(22,13187,21,1,'scala/collection/mutable/PriorityQueue.addOne')
f(23,13187,21,1,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize')
f(24,13187,21,1,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize')
f(25,13187,21,1,'scala/collection/mutable/ArrayBuffer$.scala$collection$mutable$ArrayBuffer$$ensureSize')
f(26,13187,3,2,'java.lang.Object[]')
f(26,13190,18,5,'java.lang.Object[]')
f(10,13208,2719,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$5')
f(11,13208,2718,2,'kyo.bench.ForkManyBench$$anon$6')
f(11,15926,1,1,'kyo/bench/ForkManyBench$$Lambda$63.0x0000000800d4b6c0.apply')
f(12,15926,1,1,'kyo/bench/ForkManyBench.$anonfun$8')
f(13,15926,1,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$4')
f(14,15926,1,2,'kyo.bench.ForkManyBench$$anon$5')
f(10,15927,2,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(11,15927,2,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(12,15927,2,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(13,15927,2,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(14,15927,1,2,'kyo.concurrent.scheduler.IOTask')
f(14,15928,1,1,'kyo/concurrent/fibers$Fiber$.promise')
f(15,15928,1,2,'kyo.concurrent.fibers$Fiber')
f(9,15929,2,1,'kyo/bench/ForkManyBench$$anon$7.apply')
f(10,15929,2,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$6')
f(11,15929,2,1,'kyo/bench/ForkManyBench$$Lambda$59.0x0000000800d4a680.apply')
f(12,15929,2,1,'kyo/bench/ForkManyBench.$anonfun$6')
f(13,15929,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(14,15929,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(15,15929,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(16,15929,1,2,'kyo.bench.ForkManyBench$$Lambda$63+0x0000000800d4b6c0')
f(13,15930,1,1,'kyo/bench/ForkManyBench.repeat$2')
f(14,15930,1,1,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$1')
f(15,15930,1,2,'kyo.bench.ForkManyBench$$anon$1')
f(9,15931,1,1,'kyo/bench/ForkManyBench$$anon$8.apply')
f(10,15931,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(11,15931,1,1,'kyo/concurrent/fibers$Fibers$$anon$31.apply')
f(12,15931,1,2,'kyo.concurrent.scheduler.IOPromise')
f(9,15932,3,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(10,15932,3,1,'kyo/concurrent/fibers$Fiber$Promise$$anon$26.apply')
f(11,15932,3,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$Promise$$anon$26$$_$loop$22')
f(12,15932,3,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(13,15932,3,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(14,15932,3,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(15,15932,3,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(16,15932,3,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(17,15932,3,1,'scala/runtime/function/JProcedure1.apply')
f(18,15932,3,1,'scala/runtime/function/JProcedure1.apply')
f(19,15932,3,1,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4ebe0.applyVoid')
f(20,15932,3,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(21,15932,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(22,15932,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(23,15932,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(24,15932,1,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(25,15932,1,2,'kyo.concurrent.scheduler.IOTask$$Lambda$69+0x0000000800d4f4d0')
f(21,15933,1,2,'kyo.concurrent.scheduler.IOTask')
f(21,15934,1,1,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1')
f(22,15934,1,2,'kyo.concurrent.scheduler.IOTask$$anon$4')
f(7,15935,1600,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,15935,1600,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,15935,1600,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,15935,1600,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,15935,1600,2,'kyo.concurrent.scheduler.Queue$$Lambda$56+0x0000000800d45000')
f(7,17535,176,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,17535,176,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,17535,176,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,17535,176,1,'scala/runtime/ObjectRef.create')
f(11,17535,176,2,'scala.runtime.ObjectRef')
f(1,17711,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17711,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17711,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17711,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17711,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17711,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17711,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17711,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17711,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17711,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,17711,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17711,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17711,5,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: 1280px}
</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(80);
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,487,3,'all')
f(1,0,9,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,9,3,'thread_native_entry(Thread*)')
f(3,0,9,4,'Thread::call_run()')
f(4,0,9,4,'JavaThread::thread_main_inner()')
f(5,0,9,4,'CompileBroker::compiler_thread_loop()')
f(6,0,9,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,9,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,9,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,4,4,'Compile::Code_Gen()')
f(10,0,1,4,'Matcher::match()')
f(11,0,1,4,'Arena::contains(void const*) const')
f(10,1,1,4,'PhaseCFG::do_global_code_motion()')
f(11,1,1,4,'PhaseCFG::global_code_motion()')
f(12,1,1,4,'PhaseCFG::schedule_late(VectorSet&, Node_Stack&)')
f(13,1,1,4,'Node_Backward_Iterator::next()')
f(10,2,2,4,'PhaseChaitin::Register_Allocate()')
f(11,2,2,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,2,2,4,'PhaseChaitin::interfere_with_live(unsigned int, IndexSet*) [clone .part.0]')
f(9,4,1,4,'Compile::Optimize()')
f(10,4,1,4,'PhaseRenumberLive::PhaseRenumberLive(PhaseGVN*, Unique_Node_List*, Unique_Node_List*, Phase::PhaseNumber)')
f(11,4,1,4,'PhaseRemoveUseless::PhaseRemoveUseless(PhaseGVN*, Unique_Node_List*, Phase::PhaseNumber)')
f(12,4,1,4,'Compile::identify_useful_nodes(Unique_Node_List&)')
f(9,5,1,4,'Compile::remove_useless_nodes(Unique_Node_List&)')
f(9,6,3,4,'ParseGenerator::generate(JVMState*)')
f(10,6,3,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,6,3,4,'Parse::do_all_blocks()')
f(12,6,3,4,'Parse::do_one_block()')
f(13,6,3,4,'Parse::do_call()')
f(14,6,3,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,6,2,4,'ParseGenerator::generate(JVMState*)')
f(16,6,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,6,2,4,'Parse::do_all_blocks()')
f(18,6,2,4,'Parse::do_one_block()')
f(19,6,2,4,'Parse::do_call()')
f(20,6,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,6,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,6,2,4,'ParseGenerator::generate(JVMState*)')
f(23,6,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,6,2,4,'Parse::do_all_blocks()')
f(25,6,2,4,'Parse::do_one_block()')
f(26,6,2,4,'Parse::do_call()')
f(27,6,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(28,6,2,4,'ParseGenerator::generate(JVMState*)')
f(29,6,2,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(30,6,2,4,'Parse::do_all_blocks()')
f(31,6,2,4,'Parse::do_one_block()')
f(32,6,2,4,'Parse::do_call()')
f(33,6,2,4,'PredictedCallGenerator::generate(JVMState*)')
f(34,6,1,4,'ParseGenerator::generate(JVMState*)')
f(35,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(36,6,1,4,'Parse::do_all_blocks()')
f(37,6,1,4,'Parse::do_one_block()')
f(38,6,1,4,'Parse::do_call()')
f(39,6,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(40,6,1,4,'ParseGenerator::generate(JVMState*)')
f(41,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(42,6,1,4,'Parse::do_all_blocks()')
f(43,6,1,4,'Parse::do_one_block()')
f(44,6,1,4,'Parse::do_call()')
f(45,6,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(46,6,1,4,'ParseGenerator::generate(JVMState*)')
f(47,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(48,6,1,4,'Parse::do_all_blocks()')
f(49,6,1,4,'Parse::do_one_block()')
f(50,6,1,4,'Parse::do_call()')
f(51,6,1,4,'ParseGenerator::generate(JVMState*)')
f(52,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(53,6,1,4,'Parse::do_all_blocks()')
f(54,6,1,4,'Parse::do_one_block()')
f(55,6,1,4,'Parse::do_call()')
f(56,6,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(57,6,1,4,'ParseGenerator::generate(JVMState*)')
f(58,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(59,6,1,4,'Parse::do_all_blocks()')
f(60,6,1,4,'Parse::do_one_block()')
f(61,6,1,4,'Parse::do_call()')
f(62,6,1,4,'ParseGenerator::generate(JVMState*)')
f(63,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(64,6,1,4,'Parse::do_all_blocks()')
f(65,6,1,4,'Parse::do_one_block()')
f(66,6,1,4,'Parse::do_call()')
f(67,6,1,4,'ParseGenerator::generate(JVMState*)')
f(68,6,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(69,6,1,4,'Parse::do_all_blocks()')
f(70,6,1,4,'Parse::do_one_block()')
f(71,6,1,4,'Parse::do_call()')
f(72,6,1,4,'LibraryIntrinsic::generate(JVMState*)')
f(73,6,1,4,'LibraryCallKit::inline_unsafe_load_store(BasicType, LibraryCallKit::LoadStoreKind, LibraryCallKit::AccessKind) [clone .part.0]')
f(74,6,1,4,'GraphKit::access_atomic_cmpxchg_bool_at(Node*, Node*, TypePtr const*, int, Node*, Node*, Type const*, BasicType, unsigned long)')
f(75,6,1,4,'BarrierSetC2::atomic_cmpxchg_bool_at(C2AtomicParseAccess&, Node*, Node*, Type const*) const')
f(76,6,1,4,'GraphKit::insert_mem_bar(int, Node*)')
f(77,6,1,4,'MemBarNode::make(Compile*, int, int, Node*)')
f(78,6,1,4,'MemBarNode::MemBarNode(Compile*, int, Node*)')
f(79,6,1,4,'Node::Node(unsigned int)')
f(34,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(35,7,1,4,'ParseGenerator::generate(JVMState*)')
f(36,7,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(37,7,1,4,'Parse::do_all_blocks()')
f(38,7,1,4,'Parse::do_one_block()')
f(39,7,1,4,'Parse::do_call()')
f(40,7,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(41,7,1,4,'GraphKit::type_check_receiver(Node*, ciKlass*, float, Node**)')
f(42,7,1,4,'Type::meet_helper(Type const*, bool) const')
f(15,8,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(16,8,1,4,'ParseGenerator::generate(JVMState*)')
f(17,8,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(18,8,1,4,'Parse::do_all_blocks()')
f(19,8,1,4,'Parse::do_one_block()')
f(20,8,1,4,'Parse::do_call()')
f(21,8,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(22,8,1,4,'ParseGenerator::generate(JVMState*)')
f(23,8,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(24,8,1,4,'Parse::do_all_blocks()')
f(25,8,1,4,'Parse::do_one_block()')
f(26,8,1,4,'Parse::do_call()')
f(27,8,1,4,'ParseGenerator::generate(JVMState*)')
f(28,8,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(29,8,1,4,'Parse::do_all_blocks()')
f(30,8,1,4,'Parse::do_one_block()')
f(31,8,1,4,'Parse::do_call()')
f(32,8,1,4,'ParseGenerator::generate(JVMState*)')
f(33,8,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(34,8,1,4,'Parse::do_all_blocks()')
f(35,8,1,4,'Parse::do_one_block()')
f(36,8,1,4,'Parse::do_call()')
f(37,8,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(38,8,1,4,'CallGenerator::for_inline(ciMethod*, float)')
f(1,9,15,3,'[not_walkable_Java]')
f(2,9,13,1,'I2C/C2I adapters')
f(3,9,1,4,'CompiledMethod::is_compiled() const')
f(3,10,1,4,'Method::from_compiled_entry_no_trampoline() const')
f(3,11,11,4,'SharedRuntime::fixup_callers_callsite(Method*, unsigned char*)')
f(4,11,5,4,'CodeCache::find_blob(void*)')
f(4,16,5,4,'CodeHeap::find_blob_unsafe(void*) const')
f(4,21,1,4,'nmethod::is_zombie() const')
f(2,22,2,3,'Interpreter')
f(1,24,1,3,'[unknown]')
f(2,24,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(1,25,64,3,'[unknown_Java]')
f(2,25,61,1,'I2C/C2I adapters')
f(2,86,2,3,'Interpreter')
f(2,88,1,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(1,89,398,1,'java/lang/Thread.run')
f(2,89,398,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,89,398,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,89,1,1,'java/util/concurrent/FutureTask.run')
f(5,89,1,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,89,1,1,'java/util/concurrent/FutureTask.run')
f(7,89,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,89,1,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,89,1,1,'java/lang/reflect/Method.invoke')
f(10,89,1,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,89,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,89,1,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,89,1,1,'kyo/bench/jmh_generated/ForkManyBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,89,1,1,'kyo/bench/jmh_generated/ForkManyBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,89,1,1,'kyo/bench/Bench.syncKyo')
f(16,89,1,1,'kyo/bench/Bench.runLoop$1')
f(17,89,1,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,89,1,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,89,1,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,89,1,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,89,1,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,89,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,89,1,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply')
f(24,89,1,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,89,1,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,89,1,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,89,1,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,89,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(29,89,1,1,'jdk/internal/misc/Unsafe.unpark')
f(30,89,1,3,'pthread_cond_signal')
f(31,89,1,5,'entry_SYSCALL_64_after_hwframe')
f(32,89,1,5,'do_syscall_64')
f(33,89,1,5,'__x64_sys_futex')
f(34,89,1,5,'do_futex')
f(35,89,1,5,'futex_wake')
f(36,89,1,5,'wake_up_q')
f(37,89,1,5,'_raw_spin_unlock_irqrestore')
f(4,90,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1f2b8.run')
f(5,90,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,90,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,90,1,1,'java/lang/Thread.sleep')
f(8,90,1,3,'[unknown]')
f(9,90,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(10,90,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,90,1,5,'do_syscall_64')
f(12,90,1,5,'__x64_sys_futex')
f(13,90,1,5,'do_futex')
f(14,90,1,5,'futex_wait')
f(15,90,1,5,'futex_wait_queue_me')
f(16,90,1,5,'schedule')
f(17,90,1,5,'__schedule')
f(18,90,1,5,'finish_task_switch.isra.0')
f(4,91,396,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d1fda8.run')
f(5,91,396,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,91,396,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,101,286,1,'kyo/concurrent/scheduler/IOTask.run',24,0,0)
f(8,102,1,1,'kyo/concurrent/scheduler/IOTask.curr')
f(8,103,284,1,'kyo/concurrent/scheduler/IOTask.eval',24,0,0)
f(9,116,4,1,'kyo/bench/ForkManyBench$$anon$3.apply')
f(10,116,4,2,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$_$transformLoop$2',4,0,0)
f(11,116,4,2,'kyo/bench/ForkManyBench$$Lambda$60.0x0000000800d4aa30.apply',4,0,0)
f(12,116,4,2,'kyo/bench/ForkManyBench.$anonfun$adapted$2',4,0,0)
f(13,116,4,2,'kyo/bench/ForkManyBench.$anonfun$5',4,0,0)
f(14,116,4,2,'scala/runtime/BoxesRunTime.boxToBoolean',4,0,0)
f(9,120,233,1,'kyo/bench/ForkManyBench$$anon$6.apply')
f(10,123,217,1,'kyo/bench/ForkManyBench$$anon$1.apply')
f(11,126,214,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply',44,0,0)
f(12,133,206,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2',36,0,0)
f(13,144,186,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84800.apply',17,0,0)
f(14,155,175,1,'kyo/concurrent/fibers$Fibers.$anonfun$4',6,1,0)
f(15,155,1,2,'kyo/concurrent/fibers$Fiber$.promise',1,0,0)
f(15,156,2,2,'kyo/concurrent/fibers$Fibers$$anon$32.<init>',2,0,0)
f(16,157,1,2,'kyo/ios$KyoIO.<init>',1,0,0)
f(15,158,3,2,'kyo/concurrent/scheduler/IOTask.<init>',3,0,0)
f(16,158,3,2,'kyo/concurrent/scheduler/IOPromise.<init>',3,0,0)
f(17,158,3,2,'kyo/concurrent/scheduler/IOPromise.<init>',3,0,0)
f(15,161,169,1,'kyo/concurrent/scheduler/Scheduler$.schedule',1,0,0)
f(16,161,169,1,'kyo/concurrent/scheduler/Worker.enqueueLocal',1,0,0)
f(17,161,169,1,'kyo/concurrent/scheduler/Queue.offer',1,0,0)
f(18,162,168,1,'kyo/concurrent/scheduler/Queue.tryModify')
f(19,162,168,1,'scala/Function0.apply$mcZ$sp')
f(20,162,168,1,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d474b0.apply')
f(21,162,168,1,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1')
f(22,162,168,1,'scala/collection/mutable/PriorityQueue.addOne')
f(23,168,42,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize',42,0,0)
f(24,168,42,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',42,0,0)
f(25,168,2,2,'scala/collection/mutable/ArrayBuffer.array',2,0,0)
f(25,170,40,2,'scala/collection/mutable/ArrayBuffer.array_$eq',40,0,0)
f(23,210,120,2,'scala/collection/mutable/PriorityQueue.fixUp',120,0,0)
f(24,227,25,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.lt',25,0,0)
f(25,244,8,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.lt',8,0,0)
f(24,252,73,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_swap',73,0,0)
f(25,316,9,2,'scala/collection/mutable/ArrayBuffer.array',9,0,0)
f(24,325,1,2,'scala/collection/mutable/PriorityQueue.ord',1,0,0)
f(24,326,4,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',4,0,0)
f(13,330,9,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',9,0,0)
f(14,332,7,2,'kyo/core$internal$KyoCont.<init>',7,0,0)
f(15,332,7,2,'kyo/ios$KyoIO.effect',7,0,0)
f(16,332,7,2,'kyo/ios$KyoIO.effect',7,0,0)
f(12,339,1,2,'kyo/concurrent/scheduler/IOTask.apply',1,0,0)
f(10,340,13,2,'kyo/bench/ForkManyBench.kyo$bench$ForkManyBench$$_$transformLoop$5',7,0,0)
f(11,341,12,2,'kyo/bench/ForkManyBench$$anon$6.<init>',6,0,0)
f(12,341,12,2,'kyo/core$internal$KyoCont.<init>',6,0,0)
f(13,345,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(13,346,5,6,'kyo/core$internal$KyoCont.value',0,5,0)
f(13,351,2,3,'vtable stub')
f(9,353,7,2,'kyo/concurrent/fibers$Fiber.state',7,0,0)
f(9,360,3,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,361,2,2,'kyo/concurrent/fibers$Fibers$$anon$32.apply',2,0,0)
f(9,363,7,1,'kyo/concurrent/scheduler/IOTask$.kyo$concurrent$scheduler$IOTask$$$avoidUnstableIf',1,0,0)
f(9,370,12,2,'kyo/concurrent/scheduler/IOTask.loop$8',7,0,0)
f(10,374,8,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',3,0,0)
f(11,374,8,2,'kyo/concurrent/scheduler/IOPromise.complete',3,0,0)
f(12,374,7,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',3,0,0)
f(13,374,7,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',3,0,0)
f(14,379,2,1,'java/lang/invoke/VarHandle.checkExactAccessMode')
f(12,381,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(13,381,1,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(14,381,1,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(15,381,1,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,381,1,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,381,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,381,1,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,381,1,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,381,1,1,'jdk/internal/misc/Unsafe.unpark')
f(21,381,1,3,'pthread_cond_signal')
f(22,381,1,5,'entry_SYSCALL_64_after_hwframe')
f(23,381,1,5,'do_syscall_64')
f(24,381,1,5,'__x64_sys_futex')
f(25,381,1,5,'do_futex')
f(26,381,1,5,'futex_wake')
f(27,381,1,5,'mark_wake_futex')
f(9,382,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(9,383,1,1,'kyo/ios$KyoIO.effect')
f(9,384,3,3,'vtable stub')
f(7,387,86,1,'kyo/concurrent/scheduler/Queue.poll',2,0,0)
f(8,388,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(9,388,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(8,390,83,0,'kyo/concurrent/scheduler/Queue.modify',0,0,52)
f(9,451,1,1,'I2C/C2I adapters')
f(9,452,1,4,'InterpreterRuntime::frequency_counter_overflow(JavaThread*, unsigned char*)')
f(10,452,1,4,'InterpreterRuntime::frequency_counter_overflow_inner(JavaThread*, unsigned char*)')
f(11,452,1,4,'CompilationPolicy::event(methodHandle const&, methodHandle const&, int, int, CompLevel, CompiledMethod*, JavaThread*)')
f(12,452,1,4,'CompilationPolicy::compile(methodHandle const&, int, CompLevel, JavaThread*)')
f(13,452,1,4,'CompileBroker::compile_method(methodHandle const&, int, int, methodHandle const&, int, CompileTask::CompileReason, JavaThread*)')
f(14,452,1,4,'DirectivesStack::release(DirectiveSet*)')
f(15,452,1,3,'__tls_get_addr')
f(9,453,5,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',3,0,0)
f(10,453,5,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',5,0,0)
f(11,453,3,2,'java/lang/invoke/VarHandle.checkExactAccessMode',3,0,0)
f(11,456,2,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',2,0,0)
f(9,458,1,1,'java/util/concurrent/atomic/AtomicBoolean.set')
f(9,459,14,2,'kyo/concurrent/scheduler/Queue$$Lambda$56.0x0000000800d45000.apply',8,0,0)
f(10,460,13,2,'kyo/concurrent/scheduler/Queue.poll$$anonfun$1',13,0,0)
f(11,465,1,2,'kyo/concurrent/scheduler/Queue.queue',1,0,0)
f(11,466,7,2,'scala/collection/mutable/PriorityQueue.dequeue',7,0,0)
f(12,468,2,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_size0_$eq',2,0,0)
f(12,470,3,2,'scala/collection/mutable/PriorityQueue.fixDown',3,0,0)
f(13,470,3,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.gteq',3,0,0)
f(14,470,3,2,'scala/math/Ordering.gteq$',3,0,0)
f(15,470,3,2,'scala/math/Ordering.gteq',3,0,0)
f(16,470,3,2,'kyo/concurrent/scheduler/IOTask$TaskOrdering$.compare',3,0,0)
f(7,473,4,2,'kyo/concurrent/scheduler/Scheduler$.idle',3,0,0)
f(8,473,3,2,'java/util/AbstractQueue.add',3,0,0)
f(9,473,3,2,'org/jctools/queues/MpmcUnboundedXaddArrayQueue.offer',3,0,0)
f(8,476,1,1,'kyo/concurrent/scheduler/Worker.park')
f(9,476,1,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,476,1,1,'jdk/internal/misc/Unsafe.park')
f(7,477,10,2,'kyo/concurrent/scheduler/Worker.stop$1',8,0,0)
f(8,484,3,2,'kyo/concurrent/scheduler/Scheduler$.stopWorker',1,0,0)
f(9,485,2,1,'java/util/concurrent/atomic/AtomicInteger.get')
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: 576px}
</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(36);
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,18289,3,'all')
f(1,0,1,2,'java.lang.String')
f(1,1,18283,1,'java/lang/Thread.run')
f(2,1,18283,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,1,18283,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,1,3494,1,'java/util/concurrent/FutureTask.run')
f(5,1,3494,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,1,3494,1,'java/util/concurrent/FutureTask.run')
f(7,1,3494,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,1,3494,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,1,3494,1,'java/lang/reflect/Method.invoke')
f(10,1,3494,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,1,3494,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,1,3494,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,1,3494,1,'kyo/bench/jmh_generated/InterruptBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,1,3494,1,'kyo/bench/jmh_generated/InterruptBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,1,3494,1,'kyo/bench/Bench.forkKyo')
f(16,1,265,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,1,265,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,1,265,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,1,265,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e530')
f(16,266,123,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,266,123,2,'kyo.bench.Bench$$anon$1')
f(16,389,2380,1,'kyo/bench/Bench.runLoop$2')
f(17,389,1161,1,'kyo/bench/Bench$$anon$1.apply')
f(18,389,38,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,389,38,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c829a8.apply')
f(20,389,38,1,'kyo/bench/Bench.$anonfun$2')
f(21,389,38,1,'kyo/concurrent/fibers$Fiber.block')
f(22,389,38,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,427,1123,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,427,1123,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,427,1123,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(21,427,1123,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,427,171,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,598,665,2,'kyo.concurrent.scheduler.IOTask')
f(22,1263,287,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,1263,287,2,'kyo.concurrent.fibers$Fiber')
f(17,1550,1219,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,1550,1219,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,1550,1219,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,1550,1219,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,1550,659,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,1550,659,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,1550,135,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,1685,524,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,1685,524,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,2209,163,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,2372,397,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,2372,397,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,2372,397,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,2769,726,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,2769,138,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,2769,138,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,2769,138,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,2769,138,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84000')
f(17,2907,372,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,2907,372,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,3279,216,1,'kyo/locals$Locals$.save')
f(18,3279,216,2,'kyo.locals$Locals$$anon$3')
f(4,3495,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e3d0.run')
f(5,3495,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,3495,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,3495,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,3495,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,3495,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,3495,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,3495,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,3513,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e5f8.run')
f(5,3513,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,3513,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,3513,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3513,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,3513,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3513,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$70+0x0000000800d4e000')
f(4,3531,14753,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23278.run')
f(5,3531,14753,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,3531,14753,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,3531,14028,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,3531,14028,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,3531,7087,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(10,3531,1947,1,'kyo/bench/InterruptBench$$anon$2.apply')
f(11,3531,336,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1')
f(12,3531,336,1,'kyo/bench/InterruptBench$$Lambda$57.0x0000000800d45460.apply')
f(13,3531,336,1,'kyo/bench/InterruptBench.$anonfun$2')
f(14,3531,336,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(15,3531,336,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(16,3531,336,2,'kyo.concurrent.fibers$Fiber$$anon$11')
f(11,3867,1611,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(12,3867,1611,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,3867,1611,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(14,3867,1611,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(15,3867,325,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(15,4192,872,2,'kyo.concurrent.scheduler.IOTask')
f(15,5064,414,1,'kyo/concurrent/fibers$Fiber$.promise')
f(16,5064,414,2,'kyo.concurrent.fibers$Fiber')
f(10,5478,1899,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(11,5478,1899,2,'kyo.bench.InterruptBench$$anon$3')
f(10,7377,1059,1,'kyo/concurrent/fibers$$anon$12.apply')
f(11,7377,732,1,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1')
f(12,7377,732,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$61.0x0000000800d494e8.apply')
f(13,7377,732,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$_$$anonfun$adapted$1')
f(14,7377,732,1,'kyo/concurrent/fibers$.$anonfun$3')
f(15,7377,357,2,'kyo.concurrent.fibers$Fiber')
f(15,7734,375,1,'kyo/concurrent/fibers$Fiber.join')
f(16,7734,375,1,'kyo/concurrent/fibers$Fibers.get')
f(17,7734,375,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(18,7734,375,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(11,8109,327,1,'kyo/concurrent/fibers$Fiber$$anon$13.apply')
f(12,8109,327,1,'kyo/concurrent/fibers$Fiber$$anon$13.apply')
f(13,8109,327,1,'kyo/concurrent/fibers$Fiber$$anon$13.loop$10')
f(14,8109,327,2,'kyo.concurrent.fibers$Fiber$$anon$13$$anon$14')
f(10,8436,2182,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(11,8436,2182,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(12,8436,501,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,8436,501,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,8436,501,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,8436,292,2,'kyo.concurrent.fibers$Fiber$$anon$11$$Lambda$60+0x0000000800d48fd8')
f(15,8728,209,2,'kyo.concurrent.fibers$Fiber$$anon$11$$Lambda$61+0x0000000800d494e8')
f(12,8937,516,2,'kyo.concurrent.scheduler.IOPromise')
f(12,9453,666,1,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1')
f(13,9453,666,2,'kyo.concurrent.fibers$$anon$12')
f(12,10119,499,1,'kyo/concurrent/fibers$Fiber.interrupt')
f(13,10119,499,2,'kyo.concurrent.fibers$Fiber$$anon$13')
f(9,10618,6,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,10618,6,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,10618,6,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e530.apply')
f(12,10618,6,1,'kyo/bench/Bench.$anonfun$1')
f(13,10618,6,1,'kyo/bench/InterruptBench.kyoBenchFiber')
f(14,10618,6,1,'kyo/bench/InterruptBench.iterate$2')
f(15,10618,4,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(16,10618,4,2,'kyo.bench.InterruptBench$$anon$3')
f(15,10622,2,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(16,10622,2,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(17,10622,2,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(9,10624,5247,1,'kyo/concurrent/scheduler/IOTask.finalize$1')
f(10,10624,5247,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$60.0x0000000800d48fd8.apply$mcV$sp')
f(11,10624,5247,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$apply$$anonfun$1')
f(12,10624,5247,1,'kyo/concurrent/fibers$.loop$9')
f(13,10624,5247,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(14,10624,5247,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(15,10624,5247,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(16,10624,5247,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(17,10624,5247,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(18,10624,5247,1,'scala/runtime/function/JProcedure1.apply')
f(19,10624,5247,1,'scala/runtime/function/JProcedure1.apply')
f(20,10624,5247,1,'kyo/concurrent/scheduler/IOTask$$Lambda$68.0x0000000800d4b7c8.applyVoid')
f(21,10624,5247,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(22,10624,878,2,'kyo.concurrent.scheduler.IOTask')
f(22,11502,899,1,'kyo/concurrent/scheduler/IOPromise.become')
f(23,11502,899,1,'kyo/concurrent/scheduler/IOPromise.loop$3')
f(24,11502,303,1,'kyo/concurrent/scheduler/IOPromise$Linked$.apply')
f(25,11502,303,2,'kyo.concurrent.scheduler.IOPromise$Linked')
f(24,11805,596,1,'kyo/concurrent/scheduler/IOPromise.merge')
f(25,11805,596,1,'kyo/concurrent/scheduler/IOPromise.loop$2')
f(26,11805,596,1,'kyo/concurrent/scheduler/IOPromise$Pending.merge')
f(27,11805,596,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$5')
f(22,12401,3470,1,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1')
f(23,12401,3470,1,'kyo/concurrent/scheduler/IOTask$$Lambda$69.0x0000000800d4bbd0.apply')
f(24,12401,3470,1,'kyo/concurrent/scheduler/IOTask.$anonfun$1')
f(25,12401,3470,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(26,12401,3470,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(27,12401,3470,1,'kyo/bench/InterruptBench$$Lambda$58.0x0000000800d44a30.apply')
f(28,12401,3470,1,'kyo/bench/InterruptBench.$anonfun$adapted$1')
f(29,12401,3470,1,'kyo/bench/InterruptBench.$anonfun$3')
f(30,12401,3470,1,'kyo/bench/InterruptBench.iterate$2')
f(31,12401,811,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,12401,387,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,12401,387,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,12401,387,2,'kyo.bench.InterruptBench$$Lambda$56+0x0000000800d47a98')
f(32,12788,424,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial')
f(33,12788,424,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,12788,424,2,'kyo.bench.InterruptBench$$Lambda$58+0x0000000800d44a30')
f(31,13212,709,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1')
f(32,13212,709,2,'kyo.bench.InterruptBench$$anon$2')
f(31,13921,601,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(32,13921,601,2,'kyo.bench.InterruptBench$$anon$3')
f(31,14522,1349,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(32,14522,427,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(33,14522,427,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(34,14522,427,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,14522,427,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84000')
f(32,14949,588,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(33,14949,588,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(32,15537,334,1,'kyo/locals$Locals$.save')
f(33,15537,334,2,'kyo.locals$Locals$$anon$3')
f(9,15871,797,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,15871,297,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,15871,297,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,15871,297,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,15871,297,2,'kyo.concurrent.scheduler.IOTask$$Lambda$62+0x0000000800d4a2d0')
f(10,16168,500,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,16168,500,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(9,16668,891,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,16668,450,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,16668,450,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,16668,450,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,16668,450,2,'kyo.concurrent.scheduler.IOTask$$Lambda$68+0x0000000800d4b7c8')
f(10,17118,441,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,17118,441,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(7,17559,725,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,17559,725,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,17559,725,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,17559,725,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,17559,725,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d47148')
f(1,18284,5,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,18284,5,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,18284,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,18284,5,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,18284,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,18284,5,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,18284,5,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,18284,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,18284,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,18284,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,18284,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,18284,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,18284,5,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: 720px}
</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(45);
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,483,3,'all')
f(1,0,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,3,3,'thread_native_entry(Thread*)')
f(3,0,3,4,'Thread::call_run()')
f(4,0,2,4,'JavaThread::thread_main_inner()')
f(5,0,2,4,'CompileBroker::compiler_thread_loop()')
f(6,0,2,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,2,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,2,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseChaitin::Register_Allocate()')
f(11,0,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,0,1,4,'JVMState::debug_start() const')
f(9,1,1,4,'Compile::Optimize()')
f(10,1,1,4,'PhaseIterGVN::optimize()')
f(11,1,1,4,'PhaseIterGVN::transform_old(Node*)')
f(12,1,1,4,'AddINode::Ideal(PhaseGVN*, bool)')
f(4,2,1,4,'VMThread::run()')
f(5,2,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,2,1,4,'SafepointSynchronize::begin()')
f(7,2,1,4,'SafepointSynchronize::do_cleanup_tasks()')
f(8,2,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(9,2,1,3,'sem_post')
f(10,2,1,5,'entry_SYSCALL_64_after_hwframe')
f(11,2,1,5,'do_syscall_64')
f(12,2,1,5,'__x64_sys_futex')
f(13,2,1,5,'do_futex')
f(14,2,1,5,'futex_wake')
f(15,2,1,5,'wake_up_q')
f(16,2,1,5,'_raw_spin_unlock_irqrestore')
f(1,3,8,3,'[unknown_Java]')
f(2,3,1,1,'kyo/bench/InterruptBench$$anon$2.apply')
f(2,4,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(2,5,1,1,'kyo/concurrent/scheduler/IOPromise.onComplete')
f(2,6,1,1,'kyo/concurrent/scheduler/IOTask$$Lambda$66.0x0000000800d4b3c0.applyVoid')
f(2,7,1,1,'kyo/concurrent/scheduler/IOTask.eval')
f(2,8,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(2,9,1,1,'kyo/ios$KyoIO.effect')
f(2,10,1,1,'scala/runtime/function/JProcedure1.apply')
f(1,11,472,1,'java/lang/Thread.run')
f(2,11,472,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,11,472,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,11,10,1,'java/util/concurrent/FutureTask.run')
f(5,11,10,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,11,10,1,'java/util/concurrent/FutureTask.run')
f(7,11,10,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,11,10,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,11,10,1,'java/lang/reflect/Method.invoke')
f(10,11,10,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,11,10,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,11,10,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,11,10,1,'kyo/bench/jmh_generated/InterruptBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,11,10,1,'kyo/bench/jmh_generated/InterruptBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,11,10,1,'kyo/bench/Bench.forkKyo')
f(16,11,10,1,'kyo/bench/Bench.runLoop$2',1,0,0)
f(17,11,3,1,'kyo/bench/Bench$$anon$1.apply')
f(18,11,3,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,11,3,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,11,3,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(21,11,3,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,11,3,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(23,11,3,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(24,11,3,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(25,11,3,1,'java/util/concurrent/locks/LockSupport.unpark')
f(26,11,3,1,'jdk/internal/misc/Unsafe.unpark')
f(27,11,3,3,'pthread_cond_signal')
f(28,11,3,5,'entry_SYSCALL_64_after_hwframe')
f(29,11,3,5,'do_syscall_64')
f(30,11,3,5,'__x64_sys_futex')
f(31,11,3,5,'do_futex')
f(32,11,3,5,'futex_wake')
f(33,11,1,5,'mark_wake_futex')
f(33,12,2,5,'wake_up_q')
f(34,12,2,5,'_raw_spin_unlock_irqrestore')
f(17,14,7,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(18,14,7,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply',1,0,0)
f(19,14,7,1,'kyo/concurrent/scheduler/IOPromise.block',1,0,0)
f(20,14,6,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,14,6,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,14,6,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,14,6,1,'java/util/concurrent/locks/LockSupport.park')
f(24,14,6,1,'jdk/internal/misc/Unsafe.park')
f(25,14,6,3,'[unknown]')
f(26,14,6,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,14,6,5,'entry_SYSCALL_64_after_hwframe')
f(28,14,6,5,'do_syscall_64')
f(29,14,5,5,'__x64_sys_futex')
f(30,14,5,5,'do_futex')
f(31,14,5,5,'futex_wait')
f(32,15,4,5,'futex_wait_queue_me')
f(33,15,4,5,'schedule')
f(34,15,4,5,'__schedule')
f(35,15,4,5,'finish_task_switch.isra.0')
f(29,19,1,5,'syscall_exit_to_user_mode')
f(30,19,1,5,'exit_to_user_mode_prepare')
f(31,19,1,5,'exit_to_user_mode_loop')
f(32,19,1,5,'__rseq_handle_notify_resume')
f(20,20,1,2,'kyo/concurrent/scheduler/Scheduler$.flush',1,0,0)
f(21,20,1,2,'kyo/concurrent/scheduler/Worker$.apply',1,0,0)
f(4,21,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e3d0.run')
f(5,21,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,21,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,21,1,1,'java/lang/Thread.sleep')
f(8,21,1,4,'JavaThread::sleep(long)')
f(4,22,461,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23278.run')
f(5,22,461,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,22,461,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,39,8,2,'kyo/concurrent/scheduler/IOTask.reenqueue',8,0,0)
f(8,39,8,2,'kyo/concurrent/scheduler/IOTask.curr',8,0,0)
f(7,47,368,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,51,1,2,'kyo/concurrent/scheduler/Coordinator$.tick',1,0,0)
f(8,52,7,2,'kyo/concurrent/scheduler/IOTask.curr',7,0,0)
f(8,59,355,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,59,145,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(10,67,45,1,'kyo/bench/InterruptBench$$anon$2.apply')
f(11,68,2,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1',2,0,0)
f(12,68,2,2,'kyo/bench/InterruptBench$$Lambda$57.0x0000000800d45950.apply',2,0,0)
f(13,68,2,2,'kyo/bench/InterruptBench.$anonfun$2',2,0,0)
f(14,68,2,2,'kyo/concurrent/fibers$Fiber.interruptAwait',2,0,0)
f(15,68,2,2,'kyo/concurrent/fibers$Fiber.interruptAwait',2,0,0)
f(11,70,42,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply',1,0,0)
f(12,70,41,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,75,25,2,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply',25,0,0)
f(14,76,24,2,'kyo/concurrent/fibers$Fibers.$anonfun$4',24,0,0)
f(15,82,2,2,'kyo/concurrent/fibers$Fibers$$anon$32.<init>',2,0,0)
f(16,82,2,2,'kyo/ios$KyoIO.<init>',2,0,0)
f(15,84,15,2,'kyo/concurrent/scheduler/IOTask.<init>',15,0,0)
f(16,89,10,2,'kyo/concurrent/scheduler/IOPromise.<init>',10,0,0)
f(17,94,1,2,'kyo/concurrent/scheduler/IOPromise$Pending$.apply',1,0,0)
f(17,95,4,2,'kyo/concurrent/scheduler/IOPromise.<init>',4,0,0)
f(18,95,4,2,'java/util/concurrent/atomic/AtomicReference.<init>',4,0,0)
f(19,97,2,2,'java/lang/Object.<init>',2,0,0)
f(15,99,1,2,'kyo/concurrent/scheduler/Scheduler$.schedule',1,0,0)
f(13,100,11,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',11,0,0)
f(14,107,4,2,'kyo/core$internal$KyoCont.<init>',4,0,0)
f(12,111,1,2,'kyo/locals$Locals$$anon$3.apply',1,0,0)
f(10,112,42,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',29,0,0)
f(11,131,23,2,'kyo/bench/InterruptBench$$anon$3.<init>',10,0,0)
f(12,132,22,2,'kyo/core$internal$KyoCont.<init>',9,0,0)
f(13,138,2,6,'kyo/core$internal$KyoCont.effect',0,2,0)
f(13,140,3,6,'kyo/core$internal$KyoCont.value',0,3,0)
f(13,143,5,6,'kyo/core$internal$KyoRoot.effect',0,5,0)
f(13,148,3,6,'kyo/core$internal$KyoRoot.value',0,3,0)
f(13,151,3,3,'vtable stub')
f(10,154,18,1,'kyo/concurrent/fibers$$anon$12.apply')
f(11,156,1,2,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1',1,0,0)
f(12,156,1,2,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$61.0x0000000800d49660.apply',1,0,0)
f(13,156,1,2,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$_$$anonfun$adapted$1',1,0,0)
f(14,156,1,2,'kyo/concurrent/fibers$.$anonfun$3',1,0,0)
f(15,156,1,2,'kyo/concurrent/fibers$Fiber.join',1,0,0)
f(16,156,1,2,'kyo/concurrent/fibers$Fiber.state',1,0,0)
f(11,157,15,2,'kyo/concurrent/fibers$Fiber$$anon$13.apply',15,0,0)
f(12,157,15,2,'kyo/concurrent/fibers$Fiber$$anon$13.apply',15,0,0)
f(13,158,14,2,'kyo/concurrent/fibers$Fiber$$anon$13.loop$10',14,0,0)
f(14,159,13,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',13,0,0)
f(15,159,13,2,'kyo/concurrent/scheduler/IOPromise.complete',13,0,0)
f(16,159,8,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',8,0,0)
f(17,159,8,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',8,0,0)
f(18,159,8,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',8,0,0)
f(16,167,5,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',5,0,0)
f(17,167,5,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',5,0,0)
f(10,172,26,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(11,174,24,2,'kyo/concurrent/fibers$Fiber$$anon$11.apply',22,0,0)
f(12,180,3,2,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1',3,0,0)
f(13,182,1,2,'kyo/concurrent/fibers$$anon$12.<init>',1,0,0)
f(14,182,1,2,'kyo/core$internal$KyoCont.<init>',1,0,0)
f(12,183,8,2,'kyo/concurrent/scheduler/IOPromise.<init>',8,0,0)
f(13,183,8,2,'kyo/concurrent/scheduler/IOPromise.<init>',8,0,0)
f(14,183,8,2,'java/util/concurrent/atomic/AtomicReference.<init>',8,0,0)
f(12,191,7,2,'kyo/concurrent/scheduler/IOTask.ensure',5,0,0)
f(13,192,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(14,192,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(15,192,1,4,'MemAllocator::allocate() const')
f(16,192,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(17,192,1,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,193,1,2,'kyo/concurrent/scheduler/IOTask.curr',1,0,0)
f(13,194,1,2,'kyo/concurrent/scheduler/IOTask.ensures',1,0,0)
f(13,195,1,2,'kyo/concurrent/scheduler/IOTask.ensures_$eq',1,0,0)
f(13,196,2,2,'scala/runtime/BoxesRunTime.equals',1,0,0)
f(14,196,2,2,'scala/runtime/BoxesRunTime.equals2',1,0,0)
f(15,197,1,1,'java/lang/Object.equals')
f(10,198,6,3,'vtable stub')
f(9,204,158,1,'kyo/concurrent/scheduler/IOTask.finalize$1',42,0,0)
f(10,204,158,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$60.0x0000000800d49150.apply$mcV$sp',42,0,0)
f(11,204,158,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$apply$$anonfun$1',42,0,0)
f(12,204,158,1,'kyo/concurrent/fibers$.loop$9',42,0,0)
f(13,204,117,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',1,0,0)
f(14,204,117,1,'kyo/concurrent/scheduler/IOPromise.complete',1,0,0)
f(15,205,115,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(16,205,115,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(17,205,115,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(18,205,115,1,'scala/runtime/function/JProcedure1.apply')
f(19,205,115,1,'scala/runtime/function/JProcedure1.apply')
f(20,206,114,1,'kyo/concurrent/scheduler/IOTask$$Lambda$66.0x0000000800d4b3c0.applyVoid')
f(21,206,114,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(22,212,15,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',15,0,0)
f(23,212,15,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',15,0,0)
f(24,225,2,2,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4b7c8.<init>',2,0,0)
f(22,227,10,2,'kyo/concurrent/scheduler/IOTask.<init>',10,0,0)
f(23,231,6,2,'kyo/concurrent/scheduler/IOPromise.<init>',6,0,0)
f(24,235,2,2,'kyo/concurrent/scheduler/IOPromise.<init>',2,0,0)
f(25,235,2,2,'java/util/concurrent/atomic/AtomicReference.<init>',2,0,0)
f(22,237,60,1,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1',8,0,0)
f(23,245,52,1,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4b7c8.apply')
f(24,245,52,2,'kyo/concurrent/scheduler/IOTask.$anonfun$1',33,0,0)
f(25,245,49,2,'kyo/bench/InterruptBench$$anon$3.apply',30,0,0)
f(26,247,42,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',28,0,0)
f(27,247,30,2,'kyo/bench/InterruptBench$$Lambda$58.0x0000000800d48000.apply',16,0,0)
f(28,248,29,2,'kyo/bench/InterruptBench.$anonfun$adapted$1',15,0,0)
f(29,248,29,2,'kyo/bench/InterruptBench.$anonfun$3',15,0,0)
f(30,249,28,2,'kyo/bench/InterruptBench.iterate$2',14,0,0)
f(31,249,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',3,0,0)
f(32,249,3,2,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial',3,0,0)
f(33,249,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',3,0,0)
f(31,252,5,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1',3,0,0)
f(32,253,2,1,'kyo/bench/InterruptBench$$Lambda$57.0x0000000800d45950.apply')
f(33,253,2,1,'kyo/bench/InterruptBench.$anonfun$2')
f(34,253,2,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(35,253,2,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(36,253,2,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(37,253,2,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(38,253,2,4,'MemAllocator::allocate() const')
f(39,253,2,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(40,253,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(41,253,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(42,253,1,4,'MutatorAllocRegion::retire(bool)')
f(43,253,1,4,'G1CollectedHeap::retire_mutator_alloc_region(HeapRegion*, unsigned long)')
f(44,253,1,4,'G1CollectionSet::add_eden_region(HeapRegion*)')
f(40,254,1,4,'ThreadLocalAllocBuffer::end_reserve()')
f(41,254,1,4,'CollectedHeap::tlab_alloc_reserve() const')
f(32,255,2,2,'kyo/bench/InterruptBench$$anon$2.<init>',2,0,0)
f(33,255,2,2,'kyo/core$internal$KyoCont.<init>',2,0,0)
f(31,257,10,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',4,0,0)
f(32,260,7,1,'kyo/bench/InterruptBench$$anon$3.<init>',1,0,0)
f(33,260,7,1,'kyo/core$internal$KyoCont.<init>',1,0,0)
f(34,261,6,6,'kyo/core$internal$KyoCont.value',0,6,0)
f(31,267,10,2,'kyo/concurrent/fibers$Fibers.forkFiber',4,0,0)
f(32,269,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(33,269,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(34,269,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(32,271,6,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(33,274,3,2,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply',3,0,0)
f(34,274,3,2,'kyo/concurrent/fibers$Fibers.$anonfun$4',3,0,0)
f(35,275,2,2,'kyo/concurrent/scheduler/IOTask.<init>',2,0,0)
f(36,275,2,2,'kyo/concurrent/scheduler/IOPromise.<init>',2,0,0)
f(37,275,2,2,'kyo/concurrent/scheduler/IOPromise.<init>',2,0,0)
f(38,275,2,2,'java/util/concurrent/atomic/AtomicReference.<init>',2,0,0)
f(27,277,12,2,'kyo/bench/InterruptBench$$anon$3.<init>',12,0,0)
f(28,277,12,2,'kyo/core$internal$KyoCont.<init>',12,0,0)
f(26,289,5,1,'kyo/core$internal$KyoRoot.apply')
f(25,294,3,2,'kyo/concurrent/scheduler/IOTask.st',3,0,0)
f(22,297,23,2,'kyo/concurrent/scheduler/Scheduler$.schedule',23,0,0)
f(23,297,23,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',23,0,0)
f(24,302,18,2,'kyo/concurrent/scheduler/Queue.offer',18,0,0)
f(25,302,7,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',7,0,0)
f(26,305,4,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',4,0,0)
f(27,305,4,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',4,0,0)
f(25,309,11,2,'kyo/concurrent/scheduler/Queue.tryModify',11,0,0)
f(26,310,10,2,'scala/Function0.apply$mcZ$sp',10,0,0)
f(27,310,10,2,'kyo/concurrent/scheduler/Queue$$Lambda$54.0x0000000800d43cd0.apply',10,0,0)
f(28,310,10,2,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1',10,0,0)
f(29,310,10,2,'scala/collection/mutable/PriorityQueue.addOne',10,0,0)
f(30,310,10,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize',10,0,0)
f(31,318,2,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',2,0,0)
f(32,318,2,2,'scala/collection/mutable/ArrayBuffer.array_$eq',2,0,0)
f(15,320,1,1,'kyo/concurrent/scheduler/IOPromise.onComplete')
f(13,321,41,2,'scala/runtime/BoxesRunTime.boxToBoolean',41,0,0)
f(9,362,7,2,'kyo/concurrent/scheduler/IOTask.loop$2',7,0,0)
f(10,366,3,2,'kyo/concurrent/scheduler/IOPromise$Pending.add',3,0,0)
f(9,369,10,2,'kyo/concurrent/scheduler/IOTask.loop$5',10,0,0)
f(10,370,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(11,370,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(12,370,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(10,372,7,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',7,0,0)
f(11,372,7,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',7,0,0)
f(12,372,7,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',7,0,0)
f(9,379,29,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,379,29,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',11,0,0)
f(11,379,29,2,'kyo/concurrent/scheduler/IOPromise.complete',11,0,0)
f(12,379,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(13,379,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(14,379,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(12,380,28,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',10,0,0)
f(13,380,28,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',10,0,0)
f(14,382,24,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run',6,0,0)
f(15,382,6,3,'itable stub')
f(15,388,8,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,388,8,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply',1,0,0)
f(17,388,8,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared',1,0,0)
f(18,388,7,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,388,7,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,388,7,1,'jdk/internal/misc/Unsafe.unpark')
f(21,389,6,3,'pthread_cond_signal')
f(22,389,6,5,'entry_SYSCALL_64_after_hwframe')
f(23,389,6,5,'do_syscall_64')
f(24,389,6,5,'__x64_sys_futex')
f(25,389,6,5,'do_futex')
f(26,389,6,5,'futex_wake')
f(27,389,6,5,'wake_up_q')
f(28,389,6,5,'_raw_spin_unlock_irqrestore')
f(18,395,1,2,'kyo/concurrent/scheduler/IOPromise$$anon$1.tryReleaseShared',1,0,0)
f(19,395,1,2,'java/util/concurrent/locks/AbstractQueuedSynchronizer.setState',1,0,0)
f(15,396,10,1,'scala/runtime/function/JProcedure1.apply')
f(16,403,3,1,'scala/runtime/function/JProcedure1.apply')
f(14,406,2,2,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$5.run',2,0,0)
f(9,408,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(9,409,5,3,'vtable stub')
f(8,414,1,2,'scala/runtime/BoxesRunTime.equals',1,0,0)
f(7,415,62,1,'kyo/concurrent/scheduler/Queue.poll',2,0,0)
f(8,415,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(9,415,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(10,415,2,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(8,417,60,1,'kyo/concurrent/scheduler/Queue.modify')
f(9,419,40,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',40,0,0)
f(10,436,23,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',23,0,0)
f(11,443,16,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',16,0,0)
f(12,450,9,2,'java/util/Objects.requireNonNull',9,0,0)
f(9,459,18,2,'kyo/concurrent/scheduler/Queue$$Lambda$59.0x0000000800d48c90.apply',18,0,0)
f(10,459,18,2,'kyo/concurrent/scheduler/Queue.addAndPoll$$anonfun$1',18,0,0)
f(11,461,16,2,'scala/collection/mutable/PriorityQueue.dequeue',16,0,0)
f(12,469,5,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_array',5,0,0)
f(12,474,3,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',3,0,0)
f(7,477,5,1,'kyo/concurrent/scheduler/Scheduler$.idle')
f(8,477,5,1,'kyo/concurrent/scheduler/Worker.park')
f(9,477,5,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,477,5,1,'jdk/internal/misc/Unsafe.park')
f(11,477,1,3,'Unsafe_Park')
f(12,477,1,4,'Parker::park(bool, long)')
f(11,478,4,3,'[unknown]')
f(12,478,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,479,2,5,'entry_SYSCALL_64_after_hwframe')
f(14,479,2,5,'do_syscall_64')
f(15,479,2,5,'__x64_sys_futex')
f(16,479,2,5,'do_futex')
f(17,479,2,5,'futex_wait')
f(18,479,2,5,'futex_wait_queue_me')
f(19,479,2,5,'schedule')
f(20,479,2,5,'__schedule')
f(21,479,2,5,'finish_task_switch.isra.0')
f(12,481,1,3,'_pthread_cleanup_push')
f(7,482,1,2,'kyo/concurrent/scheduler/Worker.stop$1',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: 576px}
</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(36);
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,17107,3,'all')
f(1,0,17100,1,'java/lang/Thread.run')
f(2,0,17100,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,17100,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,3339,1,'java/util/concurrent/FutureTask.run')
f(5,0,3339,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,3339,1,'java/util/concurrent/FutureTask.run')
f(7,0,3339,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,3339,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,3339,1,'java/lang/reflect/Method.invoke')
f(10,0,3339,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,3339,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,3339,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,3339,1,'kyo/bench/jmh_generated/InterruptBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,0,3337,1,'kyo/bench/jmh_generated/InterruptBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,0,3337,1,'kyo/bench/Bench.syncKyo')
f(16,0,1833,1,'kyo/bench/Bench.runLoop$1')
f(17,0,1214,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,0,1214,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,0,1214,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,0,1214,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,0,178,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,0,178,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,0,75,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,75,103,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,75,103,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,178,339,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,517,697,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,517,697,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,517,697,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(17,1214,619,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,1214,543,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,1214,543,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,1214,543,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,1214,419,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,1214,419,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,1214,419,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(24,1214,419,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,1214,64,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(25,1278,172,2,'kyo.concurrent.scheduler.IOTask')
f(25,1450,95,1,'kyo/concurrent/fibers$Fiber$.promise')
f(26,1450,95,2,'kyo.concurrent.fibers$Fiber')
f(25,1545,88,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,1545,88,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,1545,88,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,1545,88,1,'kyo/concurrent/scheduler/Queue.offer')
f(29,1545,88,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(30,1545,88,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(31,1545,88,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(32,1545,88,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(33,1545,88,2,'kyo.concurrent.scheduler.Queue$$Lambda$55+0x0000000800d43cd0')
f(21,1633,124,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(22,1633,124,1,'kyo/concurrent/fibers$Fibers$$Lambda$39.0x0000000800c829a8.apply')
f(23,1633,124,1,'kyo/concurrent/fibers$Fibers.$anonfun$5')
f(24,1633,124,1,'kyo/concurrent/fibers$Fiber.join')
f(25,1633,124,1,'kyo/concurrent/fibers$Fibers.get')
f(26,1633,124,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(27,1633,124,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(18,1757,76,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,1757,76,1,'kyo/concurrent/fibers$Fibers$$Lambda$40.0x0000000800c831a8.apply')
f(20,1757,76,1,'kyo/concurrent/fibers$Fibers.$anonfun$31')
f(21,1757,76,1,'kyo/concurrent/fibers$Fiber.block')
f(22,1757,76,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(16,1833,1504,1,'kyo/bench/InterruptBench.kyoBench')
f(17,1833,116,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,1833,116,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,1833,116,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,1833,116,2,'kyo.bench.InterruptBench$$Lambda$37+0x0000000800c3e530')
f(17,1949,779,1,'kyo/concurrent/fibers$Fibers.block')
f(18,1949,61,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,1949,61,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,1949,61,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,1949,61,2,'kyo.concurrent.fibers$Fibers$$Lambda$40+0x0000000800c831a8')
f(18,2010,92,1,'kyo/concurrent/fibers$Fibers.handler$3')
f(19,2010,92,2,'kyo.concurrent.fibers$Fibers$$anon$115')
f(18,2102,529,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$_$shallowHandleLoop$1')
f(19,2102,529,2,'kyo.concurrent.fibers$Fibers$$anon$116')
f(18,2631,97,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$26')
f(19,2631,97,2,'kyo.concurrent.fibers$Fibers$$anon$117')
f(17,2728,609,1,'kyo/concurrent/fibers$Fibers.fork')
f(18,2728,103,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(19,2728,103,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(20,2728,103,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(21,2728,103,2,'kyo.concurrent.fibers$Fibers$$Lambda$39+0x0000000800c829a8')
f(18,2831,356,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(19,2831,108,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(20,2831,108,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(21,2831,108,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(22,2831,108,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84000')
f(19,2939,159,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,2939,159,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(19,3098,89,1,'kyo/locals$Locals$.save')
f(20,3098,89,2,'kyo.locals$Locals$$anon$3')
f(18,3187,150,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$3')
f(19,3187,150,2,'kyo.concurrent.fibers$Fibers$$anon$34')
f(14,3337,1,1,'org/openjdk/jmh/results/BenchmarkTaskResult.add')
f(15,3337,1,1,'java/util/ArrayList.add')
f(16,3337,1,1,'java/util/ArrayList.add')
f(17,3337,1,1,'java/util/ArrayList.grow')
f(18,3337,1,1,'java/util/ArrayList.grow')
f(19,3337,1,2,'java.lang.Object[]')
f(14,3338,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,3338,1,1,'java/lang/StringBuilder.toString')
f(16,3338,1,1,'java/lang/StringLatin1.newString')
f(17,3338,1,1,'java/util/Arrays.copyOfRange')
f(18,3338,1,2,'byte[]')
f(4,3339,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e3d0.run')
f(5,3339,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,3339,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,3339,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,3339,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,3339,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,3339,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,3339,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,3357,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$51.0x0000000800d1e5f8.run')
f(5,3357,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,3357,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,3357,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,3357,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,3357,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,3357,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$69+0x0000000800d4ba20')
f(4,3375,13725,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d23278.run')
f(5,3375,13725,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,3375,13725,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,3375,13064,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,3375,13064,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,3375,6567,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(10,3375,1836,1,'kyo/bench/InterruptBench$$anon$2.apply')
f(11,3375,340,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1')
f(12,3375,340,1,'kyo/bench/InterruptBench$$Lambda$58.0x0000000800d45460.apply')
f(13,3375,340,1,'kyo/bench/InterruptBench.$anonfun$2')
f(14,3375,340,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(15,3375,340,1,'kyo/concurrent/fibers$Fiber.interruptAwait')
f(16,3375,340,2,'kyo.concurrent.fibers$Fiber$$anon$11')
f(11,3715,1496,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(12,3715,1496,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,3715,1496,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(14,3715,1496,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(15,3715,343,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(15,4058,780,2,'kyo.concurrent.scheduler.IOTask')
f(15,4838,373,1,'kyo/concurrent/fibers$Fiber$.promise')
f(16,4838,373,2,'kyo.concurrent.fibers$Fiber')
f(10,5211,1769,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(11,5211,1769,2,'kyo.bench.InterruptBench$$anon$3')
f(10,6980,973,1,'kyo/concurrent/fibers$$anon$12.apply')
f(11,6980,693,1,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1')
f(12,6980,693,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$62.0x0000000800d494e8.apply')
f(13,6980,693,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$_$$anonfun$adapted$1')
f(14,6980,693,1,'kyo/concurrent/fibers$.$anonfun$3')
f(15,6980,358,2,'kyo.concurrent.fibers$Fiber')
f(15,7338,335,1,'kyo/concurrent/fibers$Fiber.join')
f(16,7338,335,1,'kyo/concurrent/fibers$Fibers.get')
f(17,7338,335,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$suspendLoop$1')
f(18,7338,335,2,'kyo.concurrent.fibers$Fibers$$anon$30')
f(11,7673,280,1,'kyo/concurrent/fibers$Fiber$$anon$13.apply')
f(12,7673,280,1,'kyo/concurrent/fibers$Fiber$$anon$13.apply')
f(13,7673,280,1,'kyo/concurrent/fibers$Fiber$$anon$13.loop$10')
f(14,7673,280,2,'kyo.concurrent.fibers$Fiber$$anon$13$$anon$14')
f(10,7953,1989,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(11,7953,1989,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(12,7953,525,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(13,7953,525,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(14,7953,525,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(15,7953,283,2,'kyo.concurrent.fibers$Fiber$$anon$11$$Lambda$61+0x0000000800d48fd8')
f(15,8236,242,2,'kyo.concurrent.fibers$Fiber$$anon$11$$Lambda$62+0x0000000800d494e8')
f(12,8478,426,2,'kyo.concurrent.scheduler.IOPromise')
f(12,8904,557,1,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1')
f(13,8904,557,2,'kyo.concurrent.fibers$$anon$12')
f(12,9461,481,1,'kyo/concurrent/fibers$Fiber.interrupt')
f(13,9461,481,2,'kyo.concurrent.fibers$Fiber$$anon$13')
f(9,9942,5,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,9942,5,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,9942,5,1,'kyo/bench/InterruptBench$$Lambda$37.0x0000000800c3e530.apply')
f(12,9942,5,1,'kyo/bench/InterruptBench.kyoBench$$anonfun$1')
f(13,9942,5,1,'kyo/bench/InterruptBench.kyoBenchFiber')
f(14,9942,5,1,'kyo/bench/InterruptBench.iterate$2')
f(15,9942,4,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1')
f(16,9942,4,2,'kyo.bench.InterruptBench$$anon$2')
f(15,9946,1,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(16,9946,1,2,'kyo.bench.InterruptBench$$anon$3')
f(9,9947,4945,1,'kyo/concurrent/scheduler/IOTask.finalize$1')
f(10,9947,4945,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$61.0x0000000800d48fd8.apply$mcV$sp')
f(11,9947,4945,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$apply$$anonfun$1')
f(12,9947,4945,1,'kyo/concurrent/fibers$.loop$9')
f(13,9947,4945,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete')
f(14,9947,4945,1,'kyo/concurrent/scheduler/IOPromise.complete')
f(15,9947,4945,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush')
f(16,9947,4945,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7')
f(17,9947,4945,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run')
f(18,9947,4945,1,'scala/runtime/function/JProcedure1.apply')
f(19,9947,4945,1,'scala/runtime/function/JProcedure1.apply')
f(20,9947,4945,1,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4b248.applyVoid')
f(21,9947,4945,1,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1')
f(22,9947,874,2,'kyo.concurrent.scheduler.IOTask')
f(22,10821,827,1,'kyo/concurrent/scheduler/IOPromise.become')
f(23,10821,827,1,'kyo/concurrent/scheduler/IOPromise.loop$3')
f(24,10821,273,1,'kyo/concurrent/scheduler/IOPromise$Linked$.apply')
f(25,10821,273,2,'kyo.concurrent.scheduler.IOPromise$Linked')
f(24,11094,554,1,'kyo/concurrent/scheduler/IOPromise.merge')
f(25,11094,554,1,'kyo/concurrent/scheduler/IOPromise.loop$2')
f(26,11094,554,1,'kyo/concurrent/scheduler/IOPromise$Pending.merge')
f(27,11094,554,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$5')
f(22,11648,3244,1,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1')
f(23,11648,3244,1,'kyo/concurrent/scheduler/IOTask$$Lambda$68.0x0000000800d4b650.apply')
f(24,11648,3244,1,'kyo/concurrent/scheduler/IOTask.$anonfun$1')
f(25,11648,3244,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(26,11648,3244,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(27,11648,3244,1,'kyo/bench/InterruptBench$$Lambda$59.0x0000000800d44800.apply')
f(28,11648,3244,1,'kyo/bench/InterruptBench.$anonfun$adapted$1')
f(29,11648,3244,1,'kyo/bench/InterruptBench.$anonfun$3')
f(30,11648,3244,1,'kyo/bench/InterruptBench.iterate$2')
f(31,11648,659,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(32,11648,314,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(33,11648,314,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,11648,314,2,'kyo.bench.InterruptBench$$Lambda$57+0x0000000800d47a98')
f(32,11962,345,1,'java/lang/invoke/LambdaForm$DMH.0x0000000800d4c000.newInvokeSpecial')
f(33,11962,345,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(34,11962,345,2,'kyo.bench.InterruptBench$$Lambda$59+0x0000000800d44800')
f(31,12307,654,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1')
f(32,12307,654,2,'kyo.bench.InterruptBench$$anon$2')
f(31,12961,628,1,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2')
f(32,12961,628,2,'kyo.bench.InterruptBench$$anon$3')
f(31,13589,1303,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(32,13589,368,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(33,13589,368,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(34,13589,368,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(35,13589,368,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84000')
f(32,13957,592,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(33,13957,592,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(32,14549,343,1,'kyo/locals$Locals$.save')
f(33,14549,343,2,'kyo.locals$Locals$$anon$3')
f(9,14892,743,1,'kyo/concurrent/scheduler/IOTask.loop$2')
f(10,14892,319,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,14892,319,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,14892,319,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,14892,319,2,'kyo.concurrent.scheduler.IOTask$$Lambda$63+0x0000000800d4a2d0')
f(10,15211,424,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,15211,424,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(9,15635,804,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,15635,429,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(11,15635,429,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(12,15635,429,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(13,15635,429,2,'kyo.concurrent.scheduler.IOTask$$Lambda$67+0x0000000800d4b248')
f(10,16064,375,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(11,16064,375,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(7,16439,659,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,16439,659,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(9,16439,659,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(10,16439,659,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(11,16439,659,2,'kyo.concurrent.scheduler.Queue$$Lambda$56+0x0000000800d47148')
f(7,17098,2,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,17098,2,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,17098,2,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,17098,2,1,'scala/runtime/ObjectRef.create')
f(11,17098,2,2,'scala.runtime.ObjectRef')
f(1,17100,7,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,17100,7,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,17100,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,17100,7,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,17100,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,17100,7,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,17100,7,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,17100,1,5,'org.openjdk.jmh.runner.InfraControl')
f(8,17101,1,1,'org/openjdk/jmh/runner/InfraControl.<init>')
f(9,17101,1,1,'org/openjdk/jmh/runner/InfraControlL4.<init>')
f(10,17101,1,1,'org/openjdk/jmh/runner/InfraControlL3.<init>')
f(11,17101,1,1,'org/openjdk/jmh/runner/InfraControlL2.<init>')
f(12,17101,1,2,'java.util.concurrent.atomic.AtomicInteger')
f(8,17102,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,17102,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,17102,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,17102,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,17102,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,17102,5,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: 784px}
</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(49);
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,484,3,'all')
f(1,0,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,3,3,'thread_native_entry(Thread*)')
f(3,0,3,4,'Thread::call_run()')
f(4,0,2,4,'JavaThread::thread_main_inner()')
f(5,0,2,4,'CompileBroker::compiler_thread_loop()')
f(6,0,2,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,2,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,2,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Optimize()')
f(10,0,1,4,'Compile::final_graph_reshaping() [clone .part.0]')
f(11,0,1,4,'Compile::final_graph_reshaping_walk(Node_Stack&, Node*, Final_Reshape_Counts&)')
f(9,1,1,4,'ParseGenerator::generate(JVMState*)')
f(10,1,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(11,1,1,4,'Parse::do_all_blocks()')
f(12,1,1,4,'Parse::do_one_block()')
f(13,1,1,4,'Parse::do_call()')
f(14,1,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(15,1,1,4,'ParseGenerator::generate(JVMState*)')
f(16,1,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(17,1,1,4,'Parse::do_all_blocks()')
f(18,1,1,4,'Parse::do_one_block()')
f(19,1,1,4,'Parse::do_call()')
f(20,1,1,4,'PredictedCallGenerator::generate(JVMState*)')
f(21,1,1,4,'ParseGenerator::generate(JVMState*)')
f(22,1,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(23,1,1,4,'Parse::do_all_blocks()')
f(24,1,1,4,'Parse::do_one_block()')
f(25,1,1,4,'Parse::do_call()')
f(26,1,1,4,'ParseGenerator::generate(JVMState*)')
f(27,1,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(28,1,1,4,'Parse::do_all_blocks()')
f(29,1,1,4,'Parse::do_one_block()')
f(30,1,1,4,'Parse::do_call()')
f(31,1,1,4,'ParseGenerator::generate(JVMState*)')
f(32,1,1,4,'Parse::Parse(JVMState*, ciMethod*, float)')
f(33,1,1,4,'Parse::do_all_blocks()')
f(34,1,1,4,'Parse::do_one_block()')
f(35,1,1,4,'Parse::do_call()')
f(36,1,1,4,'Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float, ciKlass*, bool)')
f(37,1,1,4,'InlineTree::ok_to_inline(ciMethod*, JVMState*, ciCallProfile&, bool&)')
f(38,1,1,4,'ciMethod::get_flow_analysis()')
f(39,1,1,4,'ciTypeFlow::do_flow()')
f(40,1,1,4,'ciTypeFlow::flow_types()')
f(41,1,1,4,'ciTypeFlow::df_flow_types(ciTypeFlow::Block*, bool, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(42,1,1,4,'ciTypeFlow::flow_block(ciTypeFlow::Block*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)')
f(43,1,1,4,'ciTypeFlow::StateVector::apply_one_bytecode(ciBytecodeStream*)')
f(44,1,1,4,'ciTypeFlow::StateVector::do_invoke(ciBytecodeStream*, bool)')
f(45,1,1,4,'ciBytecodeStream::get_method(bool&, ciSignature**)')
f(46,1,1,4,'ciEnv::get_method_by_index_impl(constantPoolHandle const&, int, Bytecodes::Code, ciInstanceKlass*)')
f(47,1,1,4,'ciEnv::lookup_method(ciInstanceKlass*, ciKlass*, Symbol*, Symbol*, Bytecodes::Code, constantTag)')
f(48,1,1,4,'LinkResolver::linktime_resolve_virtual_method_or_null(LinkInfo const&)')
f(4,2,1,4,'VMThread::run()')
f(5,2,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,2,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,2,1,4,'VM_Operation::evaluate()')
f(8,2,1,4,'VM_G1CollectForAllocation::doit()')
f(9,2,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,2,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,2,1,4,'G1CollectedHeap::evacuate_initial_collection_set(G1ParScanThreadStateSet*, bool)')
f(12,2,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(13,2,1,3,'sem_post')
f(14,2,1,5,'entry_SYSCALL_64_after_hwframe')
f(15,2,1,5,'do_syscall_64')
f(16,2,1,5,'__x64_sys_futex')
f(17,2,1,5,'do_futex')
f(18,2,1,5,'futex_wake')
f(19,2,1,5,'wake_up_q')
f(20,2,1,5,'_raw_spin_unlock_irqrestore')
f(1,3,1,3,'[unknown]')
f(2,3,1,3,'/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
f(1,4,2,3,'[unknown_Java]')
f(2,4,1,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(2,5,1,6,'kyo/core$internal$KyoCont.effect',0,1,0)
f(1,6,478,1,'java/lang/Thread.run')
f(2,6,478,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,6,478,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,6,10,1,'java/util/concurrent/FutureTask.run')
f(5,6,10,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,6,10,1,'java/util/concurrent/FutureTask.run')
f(7,6,10,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,6,10,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,6,10,1,'java/lang/reflect/Method.invoke')
f(10,6,10,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,6,10,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,6,10,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,6,10,1,'kyo/bench/jmh_generated/InterruptBench_syncKyo_jmhTest.syncKyo_Throughput')
f(14,6,10,1,'kyo/bench/jmh_generated/InterruptBench_syncKyo_jmhTest.syncKyo_thrpt_jmhStub')
f(15,6,10,1,'kyo/bench/Bench.syncKyo')
f(16,6,10,1,'kyo/bench/Bench.runLoop$1')
f(17,6,3,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,6,3,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,6,3,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,6,3,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,6,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(22,6,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(23,6,1,4,'MemAllocator::allocate() const')
f(24,6,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(25,6,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(26,6,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(27,6,1,4,'G1Policy::preventive_collection_required(unsigned int)')
f(21,7,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,7,2,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,7,2,1,'java/util/concurrent/locks/LockSupport.park')
f(24,7,2,1,'jdk/internal/misc/Unsafe.park')
f(25,7,2,3,'[unknown]')
f(26,7,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(27,7,2,5,'entry_SYSCALL_64_after_hwframe')
f(28,7,2,5,'do_syscall_64')
f(29,7,1,5,'__x64_sys_futex')
f(30,7,1,5,'do_futex')
f(31,7,1,5,'futex_wait')
f(32,7,1,5,'futex_wait_queue_me')
f(33,7,1,5,'schedule')
f(34,7,1,5,'__schedule')
f(35,7,1,5,'finish_task_switch.isra.0')
f(29,8,1,5,'syscall_enter_from_user_mode')
f(17,9,7,1,'kyo/concurrent/fibers$Fibers$$anon$117.apply')
f(18,9,7,1,'kyo/concurrent/fibers$Fibers$$anon$116.apply')
f(19,9,7,1,'kyo/concurrent/fibers$Fibers$$anon$116.liftedTree3$1')
f(20,9,7,1,'kyo/concurrent/fibers$Fibers$$anon$34.apply')
f(21,9,7,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(22,9,7,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(23,9,7,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply')
f(24,9,7,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(25,9,7,1,'kyo/concurrent/scheduler/Scheduler$.schedule')
f(26,9,7,1,'kyo/concurrent/scheduler/Scheduler$.submit')
f(27,9,7,1,'kyo/concurrent/scheduler/Worker.enqueue')
f(28,9,7,1,'java/util/concurrent/locks/LockSupport.unpark')
f(29,9,7,1,'jdk/internal/misc/Unsafe.unpark')
f(30,9,1,3,'Unsafe_Unpark')
f(30,10,6,3,'pthread_cond_signal')
f(31,11,5,5,'entry_SYSCALL_64_after_hwframe')
f(32,11,5,5,'do_syscall_64')
f(33,11,5,5,'__x64_sys_futex')
f(34,11,5,5,'do_futex')
f(35,11,5,5,'futex_wake')
f(36,11,5,5,'wake_up_q')
f(37,11,5,5,'_raw_spin_unlock_irqrestore')
f(4,16,1,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e3d0.run')
f(5,16,1,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,16,1,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,16,1,1,'java/lang/Thread.sleep')
f(8,16,1,3,'JVM_Sleep')
f(9,16,1,4,'JavaThread::sleep(long)')
f(10,16,1,3,'pthread_cond_timedwait')
f(4,17,467,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$53.0x0000000800d23278.run')
f(5,17,467,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,17,467,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,28,17,2,'kyo/concurrent/scheduler/IOTask.reenqueue',17,0,0)
f(8,41,4,2,'scala/runtime/BoxesRunTime.equals',4,0,0)
f(7,45,364,1,'kyo/concurrent/scheduler/IOTask.run',4,0,0)
f(8,48,1,1,'jdk/internal/misc/Unsafe.park')
f(9,48,1,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(10,48,1,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',1,0,0)
f(11,48,1,2,'scala/runtime/BoxesRunTime.unboxToBoolean',1,0,0)
f(8,49,1,2,'kyo/concurrent/scheduler/IOTask.curr_$eq',1,0,0)
f(8,50,359,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,61,3,2,'kyo/bench/InterruptBench$$anon$1.apply',3,0,0)
f(10,61,3,2,'kyo/bench/InterruptBench$$anon$1.apply',3,0,0)
f(11,61,3,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$loop$2',3,0,0)
f(12,62,2,2,'kyo/bench/InterruptBench$$anon$1.<init>',2,0,0)
f(13,62,2,2,'kyo/ios$KyoIO.<init>',2,0,0)
f(14,63,1,2,'kyo/core$internal$Kyo.<init>',1,0,0)
f(9,64,164,1,'kyo/bench/InterruptBench$$anon$3.apply')
f(10,68,55,1,'kyo/bench/InterruptBench$$anon$2.apply')
f(11,69,5,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1',5,0,0)
f(12,69,5,2,'kyo/bench/InterruptBench$$Lambda$58.0x0000000800d45690.apply',5,0,0)
f(13,69,5,2,'kyo/bench/InterruptBench.$anonfun$2',5,0,0)
f(14,69,5,2,'kyo/concurrent/fibers$Fiber.interruptAwait',5,0,0)
f(15,69,5,2,'kyo/concurrent/fibers$Fiber.interruptAwait',5,0,0)
f(11,74,49,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply',1,0,0)
f(12,75,48,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(13,88,20,2,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply',20,0,0)
f(14,88,20,2,'kyo/concurrent/fibers$Fibers.$anonfun$4',20,0,0)
f(15,95,4,2,'kyo/concurrent/fibers$Fibers$$anon$32.<init>',4,0,0)
f(16,95,4,2,'kyo/ios$KyoIO.<init>',4,0,0)
f(15,99,5,2,'kyo/concurrent/scheduler/IOTask.<init>',5,0,0)
f(16,102,2,2,'kyo/concurrent/scheduler/IOPromise.<init>',2,0,0)
f(17,102,2,2,'kyo/concurrent/scheduler/IOPromise.<init>',2,0,0)
f(15,104,4,2,'kyo/concurrent/scheduler/Scheduler$.schedule',4,0,0)
f(13,108,15,2,'kyo/concurrent/fibers$Fibers$$anon$33.<init>',15,0,0)
f(14,119,4,2,'kyo/core$internal$KyoCont.<init>',4,0,0)
f(10,123,51,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',38,0,0)
f(11,144,30,2,'kyo/bench/InterruptBench$$anon$3.<init>',17,0,0)
f(12,145,29,2,'kyo/core$internal$KyoCont.<init>',16,0,0)
f(13,155,5,6,'kyo/core$internal$KyoCont.effect',0,5,0)
f(13,160,1,6,'kyo/core$internal$KyoCont.value',0,1,0)
f(13,161,3,6,'kyo/core$internal$KyoRoot.effect',0,3,0)
f(13,164,3,6,'kyo/core$internal$KyoRoot.value',0,3,0)
f(13,167,1,1,'kyo/ios$KyoIO.value')
f(13,168,6,3,'vtable stub')
f(10,174,19,1,'kyo/concurrent/fibers$$anon$12.apply')
f(11,176,17,2,'kyo/concurrent/fibers$Fiber$$anon$13.apply',17,0,0)
f(12,176,17,2,'kyo/concurrent/fibers$Fiber$$anon$13.apply',17,0,0)
f(13,177,16,2,'kyo/concurrent/fibers$Fiber$$anon$13.loop$10',16,0,0)
f(14,178,15,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',15,0,0)
f(15,178,15,2,'kyo/concurrent/scheduler/IOPromise.complete',15,0,0)
f(16,178,10,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',10,0,0)
f(17,178,10,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',10,0,0)
f(18,178,10,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',10,0,0)
f(16,188,5,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',5,0,0)
f(17,188,5,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',5,0,0)
f(10,193,30,1,'kyo/concurrent/fibers$Fiber$$anon$11.apply')
f(11,196,27,2,'kyo/concurrent/fibers$Fiber$$anon$11.apply',20,0,0)
f(12,198,3,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(13,198,3,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(14,198,3,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',2,0,0)
f(15,200,1,4,'OptoRuntime::new_instance_C(Klass*, JavaThread*)')
f(16,200,1,4,'InstanceKlass::allocate_instance(JavaThread*)')
f(17,200,1,4,'MemAllocator::allocate() const')
f(18,200,1,4,'MemAllocator::allocate_inside_tlab_slow(MemAllocator::Allocation&) const')
f(19,200,1,4,'G1CollectedHeap::allocate_new_tlab(unsigned long, unsigned long, unsigned long*)')
f(20,200,1,4,'G1CollectedHeap::attempt_allocation_slow(unsigned long)')
f(21,200,1,4,'G1AllocRegion::new_alloc_region_and_allocate(unsigned long, bool)')
f(22,200,1,4,'G1CollectedHeap::new_mutator_alloc_region(unsigned long, bool, unsigned int)')
f(23,200,1,4,'G1RemSetTrackingPolicy::update_at_allocate(HeapRegion*)')
f(24,200,1,4,'G1FromCardCache::clear(unsigned int)')
f(12,201,3,2,'kyo/concurrent/fibers$Fiber$$anon$11.kyo$concurrent$fibers$Fiber$$anon$11$$_$transformLoop$1',3,0,0)
f(12,204,2,2,'kyo/concurrent/fibers$Fiber.interrupt',2,0,0)
f(13,205,1,2,'kyo/concurrent/fibers$Fiber.state',1,0,0)
f(12,206,7,2,'kyo/concurrent/scheduler/IOPromise.<init>',7,0,0)
f(13,206,7,2,'kyo/concurrent/scheduler/IOPromise.<init>',7,0,0)
f(14,206,7,2,'java/util/concurrent/atomic/AtomicReference.<init>',7,0,0)
f(12,213,10,2,'kyo/concurrent/scheduler/IOTask.ensure',4,0,0)
f(13,213,2,2,'kyo/concurrent/scheduler/IOTask.curr',2,0,0)
f(13,215,2,2,'kyo/concurrent/scheduler/IOTask.ensures',2,0,0)
f(13,217,6,1,'scala/runtime/BoxesRunTime.equals')
f(14,217,6,1,'scala/runtime/BoxesRunTime.equals2')
f(15,217,6,1,'java/lang/Object.equals')
f(10,223,5,3,'vtable stub')
f(11,227,1,5,'asm_sysvec_hyperv_stimer0')
f(12,227,1,5,'sysvec_hyperv_stimer0')
f(13,227,1,5,'irq_exit_rcu')
f(14,227,1,5,'__irq_exit_rcu')
f(15,227,1,5,'__softirqentry_text_start')
f(16,227,1,5,'run_rebalance_domains')
f(17,227,1,5,'update_blocked_averages')
f(9,228,126,1,'kyo/concurrent/scheduler/IOTask.finalize$1',30,0,0)
f(10,228,126,1,'kyo/concurrent/fibers$Fiber$$anon$11$$Lambda$61.0x0000000800d49150.apply$mcV$sp',30,0,0)
f(11,228,126,1,'kyo/concurrent/fibers$.kyo$concurrent$fibers$Fiber$$anon$11$$_$apply$$anonfun$1',30,0,0)
f(12,228,126,1,'kyo/concurrent/fibers$.loop$9',30,0,0)
f(13,228,99,1,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',3,0,0)
f(14,228,99,1,'kyo/concurrent/scheduler/IOPromise.complete',3,0,0)
f(15,229,96,1,'kyo/concurrent/scheduler/IOPromise$Pending.flush',2,0,0)
f(16,229,96,1,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',2,0,0)
f(17,229,96,1,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run',2,0,0)
f(18,231,94,1,'scala/runtime/function/JProcedure1.apply')
f(19,234,91,1,'scala/runtime/function/JProcedure1.apply')
f(20,234,91,2,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4b3c0.applyVoid',64,0,0)
f(21,234,91,2,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1',64,0,0)
f(22,242,1,2,'kyo/concurrent/scheduler/IOTask.<init>',1,0,0)
f(22,243,77,2,'kyo/concurrent/scheduler/IOTask.kyo$concurrent$scheduler$IOTask$$_$_$transformLoop$1',50,0,0)
f(23,251,69,2,'kyo/concurrent/scheduler/IOTask$$Lambda$68.0x0000000800d4b7c8.apply',42,0,0)
f(24,251,69,2,'kyo/concurrent/scheduler/IOTask.$anonfun$1',42,0,0)
f(25,255,65,2,'kyo/bench/InterruptBench$$anon$3.apply',38,0,0)
f(26,257,61,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',36,0,0)
f(27,258,32,1,'kyo/bench/InterruptBench$$Lambda$59.0x0000000800d48230.apply',7,0,0)
f(28,262,28,1,'kyo/bench/InterruptBench.$anonfun$adapted$1',3,0,0)
f(29,262,25,1,'kyo/bench/InterruptBench.$anonfun$3')
f(30,262,25,1,'kyo/bench/InterruptBench.iterate$2')
f(31,262,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(32,262,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(33,262,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(31,263,9,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$_$transformLoop$1',9,0,0)
f(32,271,1,2,'kyo/bench/InterruptBench$$anon$2.<init>',1,0,0)
f(31,272,12,2,'kyo/bench/InterruptBench.kyo$bench$InterruptBench$$_$transformLoop$2',9,0,0)
f(32,274,10,2,'kyo/bench/InterruptBench$$anon$3.<init>',7,0,0)
f(33,274,10,2,'kyo/core$internal$KyoCont.<init>',7,0,0)
f(34,281,3,6,'kyo/core$internal$KyoCont.value',0,3,0)
f(31,284,3,2,'kyo/concurrent/fibers$Fibers.forkFiber',1,0,0)
f(32,284,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(33,284,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(34,284,1,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',1,0,0)
f(32,285,2,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(33,286,1,2,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84000.apply',1,0,0)
f(29,287,3,2,'scala/runtime/BoxesRunTime.unboxToBoolean',3,0,0)
f(27,290,24,2,'kyo/bench/InterruptBench$$anon$3.<init>',24,0,0)
f(28,298,16,2,'kyo/core$internal$KyoCont.<init>',16,0,0)
f(27,314,4,2,'scala/runtime/BoxesRunTime.unboxToBoolean',4,0,0)
f(26,318,2,1,'kyo/core$internal$KyoRoot.apply')
f(22,320,5,2,'kyo/concurrent/scheduler/Scheduler$.schedule',5,0,0)
f(23,320,5,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',5,0,0)
f(24,320,5,2,'kyo/concurrent/scheduler/Queue.offer',5,0,0)
f(25,320,5,2,'kyo/concurrent/scheduler/Queue.tryModify',5,0,0)
f(26,320,2,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',2,0,0)
f(26,322,3,2,'scala/Function0.apply$mcZ$sp',3,0,0)
f(27,322,3,2,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d43cd0.apply',3,0,0)
f(28,322,3,2,'kyo/concurrent/scheduler/Queue.offer$$anonfun$1',3,0,0)
f(29,322,1,2,'kyo/concurrent/scheduler/Queue.items_$eq',1,0,0)
f(29,323,2,2,'scala/collection/mutable/PriorityQueue.addOne',2,0,0)
f(30,323,2,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_ensureAdditionalSize',2,0,0)
f(31,323,2,2,'scala/collection/mutable/ArrayBuffer.ensureAdditionalSize',2,0,0)
f(32,324,1,2,'scala/collection/mutable/ArrayBuffer.array_$eq',1,0,0)
f(15,325,2,1,'kyo/concurrent/scheduler/IOPromise.onComplete')
f(13,327,27,2,'scala/runtime/BoxesRunTime.boxToBoolean',27,0,0)
f(9,354,14,1,'kyo/concurrent/scheduler/IOTask.loop$5')
f(10,354,9,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',9,0,0)
f(11,354,9,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',9,0,0)
f(12,354,9,2,'java/lang/invoke/DirectMethodHandle.allocateInstance',9,0,0)
f(10,363,1,2,'java/util/concurrent/atomic/AtomicReference.compareAndSet',1,0,0)
f(11,363,1,2,'java/lang/invoke/VarHandleGuards.guard_LLL_Z',1,0,0)
f(12,363,1,2,'java/lang/invoke/VarHandleReferences$FieldInstanceReadWrite.compareAndSet',1,0,0)
f(10,364,4,2,'kyo/concurrent/scheduler/Scheduler$.schedule',4,0,0)
f(11,364,4,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',4,0,0)
f(12,364,4,2,'kyo/concurrent/scheduler/Queue.offer',4,0,0)
f(13,364,2,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',2,0,0)
f(14,364,2,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',2,0,0)
f(13,366,2,2,'kyo/concurrent/scheduler/Queue.tryModify',2,0,0)
f(14,366,2,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',2,0,0)
f(15,366,2,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',2,0,0)
f(16,367,1,2,'java/lang/invoke/VarForm.getMemberName',1,0,0)
f(17,367,1,2,'java/lang/invoke/VarForm.getMemberNameOrNull',1,0,0)
f(9,368,27,1,'kyo/concurrent/scheduler/IOTask.loop$8')
f(10,368,27,2,'kyo/concurrent/scheduler/IOPromise.kyo$concurrent$scheduler$IOPromise$$inline$complete',15,0,0)
f(11,368,27,2,'kyo/concurrent/scheduler/IOPromise.complete',15,0,0)
f(12,368,27,2,'kyo/concurrent/scheduler/IOPromise$Pending.flush',15,0,0)
f(13,368,27,2,'kyo/concurrent/scheduler/IOPromise$Pending.loop$7',15,0,0)
f(14,370,25,2,'kyo/concurrent/scheduler/IOPromise$Pending$$anon$3.run',13,0,0)
f(15,372,11,3,'itable stub')
f(15,383,4,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(16,383,4,1,'kyo/concurrent/scheduler/IOPromise$$anon$1.apply')
f(17,383,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.releaseShared')
f(18,383,4,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.signalNext')
f(19,383,4,1,'java/util/concurrent/locks/LockSupport.unpark')
f(20,383,4,1,'jdk/internal/misc/Unsafe.unpark')
f(21,383,4,3,'pthread_cond_signal')
f(22,384,3,5,'entry_SYSCALL_64_after_hwframe')
f(23,384,3,5,'do_syscall_64')
f(24,384,3,5,'__x64_sys_futex')
f(25,384,3,5,'do_futex')
f(26,384,3,5,'futex_wake')
f(27,384,3,5,'wake_up_q')
f(28,384,3,5,'_raw_spin_unlock_irqrestore')
f(15,387,8,1,'scala/runtime/function/JProcedure1.apply')
f(16,389,6,1,'scala/runtime/function/JProcedure1.apply')
f(17,389,6,2,'kyo/concurrent/scheduler/IOTask$$Lambda$67.0x0000000800d4b3c0.applyVoid',6,0,0)
f(18,390,5,2,'kyo/concurrent/scheduler/IOTask.loop$5$$anonfun$1',5,0,0)
f(19,390,1,2,'java/lang/invoke/Invokers$Holder.linkToTargetMethod',1,0,0)
f(20,390,1,2,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial',1,0,0)
f(19,391,4,2,'kyo/concurrent/scheduler/Scheduler$.schedule',4,0,0)
f(20,391,4,2,'kyo/concurrent/scheduler/Worker.enqueueLocal',4,0,0)
f(21,391,4,2,'kyo/concurrent/scheduler/Queue.offer',4,0,0)
f(22,391,4,2,'kyo/concurrent/scheduler/Queue.tryModify',4,0,0)
f(23,391,4,2,'scala/Function0.apply$mcZ$sp',4,0,0)
f(24,391,4,2,'kyo/concurrent/scheduler/Queue$$Lambda$55.0x0000000800d43cd0.apply',4,0,0)
f(9,395,9,6,'kyo/core$internal$KyoCont.effect',0,9,0)
f(9,404,1,2,'kyo/core$internal$KyoCont.value',1,0,0)
f(9,405,1,1,'scala/runtime/function/JProcedure1.apply')
f(10,405,1,1,'scala/runtime/function/JProcedure1.apply')
f(9,406,3,3,'vtable stub')
f(7,409,50,1,'kyo/concurrent/scheduler/Queue.poll')
f(8,409,50,1,'kyo/concurrent/scheduler/Queue.modify')
f(9,411,27,2,'java/util/concurrent/atomic/AtomicBoolean.compareAndSet',27,0,0)
f(10,419,19,2,'java/lang/invoke/VarHandleGuards.guard_LII_Z',19,0,0)
f(11,431,7,2,'java/lang/invoke/VarHandleInts$FieldInstanceReadWrite.compareAndSet',7,0,0)
f(12,432,6,2,'java/util/Objects.requireNonNull',6,0,0)
f(9,438,21,2,'kyo/concurrent/scheduler/Queue$$Lambda$60.0x0000000800d48c90.apply',21,0,0)
f(10,438,21,2,'kyo/concurrent/scheduler/Queue.addAndPoll$$anonfun$1',21,0,0)
f(11,443,16,2,'scala/collection/mutable/PriorityQueue.dequeue',16,0,0)
f(12,451,6,2,'scala/collection/mutable/PriorityQueue$ResizableArrayAccess.p_array',6,0,0)
f(12,457,2,2,'scala/collection/mutable/PriorityQueue.scala$collection$mutable$PriorityQueue$$resarr',2,0,0)
f(7,459,3,2,'kyo/concurrent/scheduler/Scheduler$.idle',1,0,0)
f(8,459,1,2,'kyo/concurrent/scheduler/Worker.load',1,0,0)
f(9,459,1,2,'kyo/concurrent/scheduler/Queue.size',1,0,0)
f(10,459,1,2,'kyo/concurrent/scheduler/Queue.items',1,0,0)
f(8,460,2,1,'kyo/concurrent/scheduler/Worker.park')
f(9,460,2,1,'java/util/concurrent/locks/LockSupport.parkNanos')
f(10,460,2,1,'jdk/internal/misc/Unsafe.park')
f(11,460,2,3,'[unknown]')
f(12,460,2,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(13,460,2,5,'entry_SYSCALL_64_after_hwframe')
f(14,460,2,5,'do_syscall_64')
f(15,460,2,5,'__x64_sys_futex')
f(16,460,2,5,'do_futex')
f(17,460,2,5,'futex_wait')
f(18,460,1,5,'futex_wait_queue_me')
f(19,460,1,5,'schedule')
f(20,460,1,5,'__schedule')
f(21,460,1,5,'finish_task_switch.isra.0')
f(18,461,1,5,'hrtimer_init_sleeper')
f(19,461,1,5,'__hrtimer_init')
f(7,462,13,2,'kyo/concurrent/scheduler/Scheduler$.steal',13,0,0)
f(8,466,9,2,'kyo/concurrent/scheduler/Scheduler$.randomWorker',9,0,0)
f(9,471,4,2,'java/util/concurrent/CopyOnWriteArrayList.size',4,0,0)
f(7,475,9,2,'kyo/concurrent/scheduler/Worker.stop$1',9,0,0)
search();
</script></body></html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<style>
body {margin: 0; padding: 10px; background-color: #ffffff}
h1 {margin: 5px 0 0 0; font-size: 18px; font-weight: normal; text-align: center}
header {margin: -24px 0 5px 0; line-height: 24px}
button {font: 12px sans-serif; cursor: pointer}
p {margin: 5px 0 5px 0}
a {color: #0366d6}
#hl {position: absolute; display: none; overflow: hidden; white-space: nowrap; pointer-events: none; background-color: #ffffe0; outline: 1px solid #ffc000; height: 15px}
#hl span {padding: 0 3px 0 3px}
#status {overflow: hidden; white-space: nowrap}
#match {overflow: hidden; white-space: nowrap; display: none; float: right; text-align: right}
#reset {cursor: pointer}
#canvas {width: 100%; height: 400px}
</style>
</head>
<body style='font: 12px Verdana, sans-serif'>
<h1>Allocation profile</h1>
<header style='text-align: left'><button id='reverse' title='Reverse'>&#x1f53b;</button>&nbsp;&nbsp;<button id='search' title='Search'>&#x1f50d;</button></header>
<header style='text-align: right'>Produced by <a href='https://github.com/jvm-profiling-tools/async-profiler'>async-profiler</a></header>
<canvas id='canvas'></canvas>
<div id='hl'><span></span></div>
<p id='match'>Matched: <span id='matchval'></span> <span id='reset' title='Clear'>&#x274c;</span></p>
<p id='status'>&nbsp;</p>
<script>
// Copyright 2020 Andrei Pangin
// Licensed under the Apache License, Version 2.0.
'use strict';
var root, rootLevel, px, pattern;
var reverse = false;
const levels = Array(25);
for (let h = 0; h < levels.length; h++) {
levels[h] = [];
}
const canvas = document.getElementById('canvas');
const c = canvas.getContext('2d');
const hl = document.getElementById('hl');
const status = document.getElementById('status');
const canvasWidth = canvas.offsetWidth;
const canvasHeight = canvas.offsetHeight;
canvas.style.width = canvasWidth + 'px';
canvas.width = canvasWidth * (devicePixelRatio || 1);
canvas.height = canvasHeight * (devicePixelRatio || 1);
if (devicePixelRatio) c.scale(devicePixelRatio, devicePixelRatio);
c.font = document.body.style.font;
const palette = [
[0xb2e1b2, 20, 20, 20],
[0x50e150, 30, 30, 30],
[0x50cccc, 30, 30, 30],
[0xe15a5a, 30, 40, 40],
[0xc8c83c, 30, 30, 10],
[0xe17d00, 30, 30, 0],
[0xcce880, 20, 20, 20],
];
function getColor(p) {
const v = Math.random();
return '#' + (p[0] + ((p[1] * v) << 16 | (p[2] * v) << 8 | (p[3] * v))).toString(16);
}
function f(level, left, width, type, title, inln, c1, int) {
levels[level].push({left: left, width: width, color: getColor(palette[type]), title: title,
details: (int ? ', int=' + int : '') + (c1 ? ', c1=' + c1 : '') + (inln ? ', inln=' + inln : '')
});
}
function samples(n) {
return n === 1 ? '1 sample' : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ' samples';
}
function pct(a, b) {
return a >= b ? '100' : (100 * a / b).toFixed(2);
}
function findFrame(frames, x) {
let left = 0;
let right = frames.length - 1;
while (left <= right) {
const mid = (left + right) >>> 1;
const f = frames[mid];
if (f.left > x) {
right = mid - 1;
} else if (f.left + f.width <= x) {
left = mid + 1;
} else {
return f;
}
}
if (frames[left] && (frames[left].left - x) * px < 0.5) return frames[left];
if (frames[right] && (x - (frames[right].left + frames[right].width)) * px < 0.5) return frames[right];
return null;
}
function search(r) {
if (r === true && (r = prompt('Enter regexp to search:', '')) === null) {
return;
}
pattern = r ? RegExp(r) : undefined;
const matched = render(root, rootLevel);
document.getElementById('matchval').textContent = pct(matched, root.width) + '%';
document.getElementById('match').style.display = r ? 'inherit' : 'none';
}
function render(newRoot, newLevel) {
if (root) {
c.fillStyle = '#ffffff';
c.fillRect(0, 0, canvasWidth, canvasHeight);
}
root = newRoot || levels[0][0];
rootLevel = newLevel || 0;
px = canvasWidth / root.width;
const x0 = root.left;
const x1 = x0 + root.width;
const marked = [];
function mark(f) {
return marked[f.left] >= f.width || (marked[f.left] = f.width);
}
function totalMarked() {
let total = 0;
let left = 0;
Object.keys(marked).sort(function(a, b) { return a - b; }).forEach(function(x) {
if (+x >= left) {
total += marked[x];
left = +x + marked[x];
}
});
return total;
}
function drawFrame(f, y, alpha) {
if (f.left < x1 && f.left + f.width > x0) {
c.fillStyle = pattern && f.title.match(pattern) && mark(f) ? '#ee00ee' : f.color;
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
if (f.width * px >= 21) {
const chars = Math.floor(f.width * px / 7);
const title = f.title.length <= chars ? f.title : f.title.substring(0, chars - 2) + '..';
c.fillStyle = '#000000';
c.fillText(title, Math.max(f.left - x0, 0) * px + 3, y + 12, f.width * px - 6);
}
if (alpha) {
c.fillStyle = 'rgba(255, 255, 255, 0.5)';
c.fillRect((f.left - x0) * px, y, f.width * px, 15);
}
}
}
for (let h = 0; h < levels.length; h++) {
const y = reverse ? h * 16 : canvasHeight - (h + 1) * 16;
const frames = levels[h];
for (let i = 0; i < frames.length; i++) {
drawFrame(frames[i], y, h < rootLevel);
}
}
return totalMarked();
}
canvas.onmousemove = function() {
const h = Math.floor((reverse ? event.offsetY : (canvasHeight - event.offsetY)) / 16);
if (h >= 0 && h < levels.length) {
const f = findFrame(levels[h], event.offsetX / px + root.left);
if (f) {
if (f != root) getSelection().removeAllRanges();
hl.style.left = (Math.max(f.left - root.left, 0) * px + canvas.offsetLeft) + 'px';
hl.style.width = (Math.min(f.width, root.width) * px) + 'px';
hl.style.top = ((reverse ? h * 16 : canvasHeight - (h + 1) * 16) + canvas.offsetTop) + 'px';
hl.firstChild.textContent = f.title;
hl.style.display = 'block';
canvas.title = f.title + '\n(' + samples(f.width) + f.details + ', ' + pct(f.width, levels[0][0].width) + '%)';
canvas.style.cursor = 'pointer';
canvas.onclick = function() {
if (f != root) {
render(f, h);
canvas.onmousemove();
}
};
status.textContent = 'Function: ' + canvas.title;
return;
}
}
canvas.onmouseout();
}
canvas.onmouseout = function() {
hl.style.display = 'none';
status.textContent = '\xa0';
canvas.title = '';
canvas.style.cursor = '';
canvas.onclick = '';
}
canvas.ondblclick = function() {
getSelection().selectAllChildren(hl);
}
document.getElementById('reverse').onclick = function() {
reverse = !reverse;
render();
}
document.getElementById('search').onclick = function() {
search(true);
}
document.getElementById('reset').onclick = function() {
search(false);
}
window.onkeydown = function() {
if (event.ctrlKey && event.keyCode === 70) {
event.preventDefault();
search(true);
} else if (event.keyCode === 27) {
search(false);
}
}
f(0,0,23676,3,'all')
f(1,0,23668,1,'java/lang/Thread.run')
f(2,0,23668,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,0,23668,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,0,5137,1,'java/util/concurrent/FutureTask.run')
f(5,0,5137,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,0,5137,1,'java/util/concurrent/FutureTask.run')
f(7,0,5137,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,0,5137,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,0,5137,1,'java/lang/reflect/Method.invoke')
f(10,0,5137,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,0,5137,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,0,5137,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,0,5137,1,'kyo/bench/jmh_generated/NarrowBindBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,0,5136,1,'kyo/bench/jmh_generated/NarrowBindBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,0,5136,1,'kyo/bench/Bench.forkKyo')
f(16,0,333,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,0,333,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,0,333,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(19,0,83,1,'jdk/internal/misc/Unsafe.allocateInstance')
f(20,0,83,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e9f8')
f(19,83,250,2,'kyo.bench.Bench$$Lambda$37+0x0000000800c3e9f8')
f(16,333,455,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(17,333,455,2,'kyo.bench.Bench$$anon$1')
f(16,788,3394,1,'kyo/bench/Bench.runLoop$2')
f(17,788,1489,1,'kyo/bench/Bench$$anon$1.apply')
f(18,788,69,1,'kyo/bench/Bench.kyo$bench$Bench$$_$_$transformLoop$1')
f(19,788,69,1,'kyo/bench/Bench$$Lambda$39.0x0000000800c82da8.apply')
f(20,788,69,1,'kyo/bench/Bench.$anonfun$2')
f(21,788,69,1,'kyo/concurrent/fibers$Fiber.block')
f(22,788,69,2,'kyo.concurrent.fibers$Fiber$$anon$10')
f(18,857,1420,1,'kyo/concurrent/fibers$Fibers$$anon$33.apply')
f(19,857,1420,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(20,857,1420,1,'kyo/concurrent/fibers$Fibers$$Lambda$38.0x0000000800c84200.apply')
f(21,857,1420,1,'kyo/concurrent/fibers$Fibers.$anonfun$4')
f(22,857,154,2,'kyo.concurrent.fibers$Fibers$$anon$32')
f(22,1011,877,2,'kyo.concurrent.scheduler.IOTask')
f(22,1888,389,1,'kyo/concurrent/fibers$Fiber$.promise')
f(23,1888,389,2,'kyo.concurrent.fibers$Fiber')
f(17,2277,1905,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(18,2277,1905,1,'kyo/concurrent/fibers$Fiber$$anon$10.apply')
f(19,2277,1905,1,'kyo/concurrent/scheduler/IOPromise.block')
f(20,2277,1905,1,'kyo/concurrent/scheduler/IOPromise.loop$4')
f(21,2277,694,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(22,2277,694,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(23,2277,264,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode')
f(23,2541,430,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.tryInitializeHead')
f(24,2541,430,2,'java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode')
f(21,2971,497,2,'kyo.concurrent.scheduler.IOPromise$$anon$1')
f(21,3468,714,1,'kyo/concurrent/scheduler/IOPromise.loop$5')
f(22,3468,714,1,'kyo/concurrent/scheduler/IOPromise$Pending.add')
f(23,3468,714,2,'kyo.concurrent.scheduler.IOPromise$Pending$$anon$3')
f(16,4182,954,1,'kyo/concurrent/fibers$Fibers.forkFiber')
f(17,4182,428,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(18,4182,428,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(19,4182,428,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(20,4182,428,2,'kyo.concurrent.fibers$Fibers$$Lambda$38+0x0000000800c84200')
f(17,4610,462,1,'kyo/concurrent/fibers$Fibers.kyo$concurrent$fibers$Fibers$$_$transformLoop$2')
f(18,4610,462,2,'kyo.concurrent.fibers$Fibers$$anon$33')
f(17,5072,64,1,'kyo/locals$Locals$.save')
f(18,5072,64,2,'kyo.locals$Locals$$anon$3')
f(14,5136,1,1,'org/openjdk/jmh/results/ThroughputResult.<init>')
f(15,5136,1,2,'java.lang.StringBuilder')
f(4,5137,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$49.0x0000000800d1e3d0.run')
f(5,5137,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$1')
f(6,5137,18,1,'kyo/concurrent/scheduler/Coordinator$.update')
f(7,5137,18,1,'java/util/concurrent/ThreadPoolExecutor.execute')
f(8,5137,18,1,'java/util/concurrent/SynchronousQueue.offer')
f(9,5137,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.transfer')
f(10,5137,18,1,'java/util/concurrent/SynchronousQueue$TransferStack.snode')
f(11,5137,18,2,'java.util.concurrent.SynchronousQueue$TransferStack$SNode')
f(4,5155,18,1,'kyo/concurrent/scheduler/Coordinator$$$Lambda$50.0x0000000800d1e5f8.run')
f(5,5155,18,1,'kyo/concurrent/scheduler/Coordinator$.$init$$$anonfun$2')
f(6,5155,18,1,'kyo/concurrent/scheduler/Scheduler$.cycle')
f(7,5155,18,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(8,5155,18,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(9,5155,18,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(10,5155,18,2,'kyo.concurrent.scheduler.Scheduler$$$Lambda$59+0x0000000800d48b78')
f(4,5173,18495,1,'kyo/concurrent/scheduler/Scheduler$$$Lambda$52.0x0000000800d23278.run')
f(5,5173,18495,1,'kyo/concurrent/scheduler/Scheduler$.startWorkers$$anonfun$1')
f(6,5173,18495,1,'kyo/concurrent/scheduler/Worker.runWorker')
f(7,5173,18493,1,'kyo/concurrent/scheduler/IOTask.run')
f(8,5173,18493,1,'kyo/concurrent/scheduler/IOTask.eval')
f(9,5173,18300,1,'kyo/bench/NarrowBindBench$$anon$2.apply')
f(10,5173,18300,1,'kyo/bench/NarrowBindBench.kyo$bench$NarrowBindBench$$_$transformLoop$1')
f(11,5173,18300,1,'kyo/bench/NarrowBindBench$$Lambda$57.0x0000000800d45830.apply')
f(12,5173,18300,1,'kyo/bench/NarrowBindBench.$anonfun$adapted$1')
f(13,5173,18300,1,'kyo/bench/NarrowBindBench.$anonfun$1')
f(14,5173,18300,1,'kyo/bench/NarrowBindBench.loop$1')
f(15,5173,2668,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,5173,2668,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,5173,2668,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,5173,2668,2,'kyo.bench.NarrowBindBench$$Lambda$57+0x0000000800d45830')
f(15,7841,7786,2,'kyo.bench.NarrowBindBench$$anon$1')
f(15,15627,7846,1,'kyo/bench/NarrowBindBench.kyo$bench$NarrowBindBench$$_$transformLoop$1')
f(16,15627,7846,2,'kyo.bench.NarrowBindBench$$anon$2')
f(9,23473,1,1,'kyo/bench/NarrowBindBench$$anon$5.apply')
f(10,23473,1,1,'kyo/bench/NarrowBindBench.kyo$bench$NarrowBindBench$$_$transformLoop$2')
f(11,23473,1,1,'kyo/bench/NarrowBindBench$$Lambda$56.0x0000000800d45000.apply')
f(12,23473,1,1,'kyo/bench/NarrowBindBench.$anonfun$adapted$2')
f(13,23473,1,1,'kyo/bench/NarrowBindBench.$anonfun$2')
f(14,23473,1,1,'kyo/bench/NarrowBindBench.loop$1')
f(15,23473,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(16,23473,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(17,23473,1,1,'java/lang/invoke/DirectMethodHandle.allocateInstance')
f(18,23473,1,2,'kyo.bench.NarrowBindBench$$Lambda$57+0x0000000800d45830')
f(9,23474,192,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(10,23474,192,1,'kyo/concurrent/fibers$Fibers$$anon$32.apply')
f(11,23474,192,1,'kyo/bench/Bench$$Lambda$37.0x0000000800c3e9f8.apply')
f(12,23474,192,1,'kyo/bench/Bench.$anonfun$1')
f(13,23474,192,1,'kyo/bench/Bench.kyoBenchFiber')
f(14,23474,192,1,'kyo/bench/NarrowBindBench.kyoBench')
f(15,23474,191,2,'kyo.bench.NarrowBindBench$$anon$4')
f(15,23665,1,1,'kyo/bench/NarrowBindBench.kyo$bench$NarrowBindBench$$_$transformLoop$2')
f(16,23665,1,2,'kyo.bench.NarrowBindBench$$anon$5')
f(7,23666,2,1,'kyo/concurrent/scheduler/Scheduler$.steal')
f(8,23666,2,1,'kyo/concurrent/scheduler/Worker.steal')
f(9,23666,2,1,'kyo/concurrent/scheduler/Queue.steal')
f(10,23666,2,1,'scala/runtime/ObjectRef.create')
f(11,23666,2,2,'scala.runtime.ObjectRef')
f(1,23668,8,1,'org/openjdk/jmh/runner/ForkedMain.main')
f(2,23668,8,1,'org/openjdk/jmh/runner/ForkedRunner.run')
f(3,23668,8,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmarksForked')
f(4,23668,8,1,'org/openjdk/jmh/runner/BaseRunner.doSingle')
f(5,23668,8,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(6,23668,8,1,'org/openjdk/jmh/runner/BaseRunner.runBenchmark')
f(7,23668,8,1,'org/openjdk/jmh/runner/BenchmarkHandler.runIteration')
f(8,23668,3,2,'org.openjdk.jmh.runner.InfraControl')
f(8,23671,5,1,'org/openjdk/jmh/runner/InfraControl.awaitWarmdownReady')
f(9,23671,5,1,'org/openjdk/jmh/runner/InfraControlL2.awaitWarmdownReady')
f(10,23671,5,1,'java/util/concurrent/CountDownLatch.await')
f(11,23671,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireSharedInterruptibly')
f(12,23671,5,1,'java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire')
f(13,23671,5,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: 576px}
</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(36);
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,3,3,'/usr/lib/x86_64-linux-gnu/libc.so.6')
f(2,0,3,3,'thread_native_entry(Thread*)')
f(3,0,3,4,'Thread::call_run()')
f(4,0,2,4,'JavaThread::thread_main_inner()')
f(5,0,2,4,'CompileBroker::compiler_thread_loop()')
f(6,0,2,4,'CompileBroker::invoke_compiler_on_method(CompileTask*)')
f(7,0,2,4,'C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)')
f(8,0,2,4,'Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, bool, DirectiveSet*)')
f(9,0,1,4,'Compile::Code_Gen()')
f(10,0,1,4,'PhaseChaitin::Register_Allocate()')
f(11,0,1,4,'PhaseChaitin::build_ifg_physical(ResourceArea*)')
f(12,0,1,4,'Node::is_block_proj() const')
f(9,1,1,4,'Compile::Optimize()')
f(10,1,1,4,'PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)')
f(11,1,1,4,'PhaseIdealLoop::build_and_optimize(LoopOptsMode)')
f(12,1,1,4,'PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)')
f(4,2,1,4,'VMThread::run()')
f(5,2,1,4,'VMThread::inner_execute(VM_Operation*)')
f(6,2,1,4,'VMThread::evaluate_operation(VM_Operation*)')
f(7,2,1,4,'VM_Operation::evaluate()')
f(8,2,1,4,'VM_G1CollectForAllocation::doit()')
f(9,2,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint(double)')
f(10,2,1,4,'G1CollectedHeap::do_collection_pause_at_safepoint_helper(double)')
f(11,2,1,4,'G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo&, G1RedirtyCardsQueueSet*, G1ParScanThreadStateSet*)')
f(12,2,1,4,'G1CollectedHeap::post_evacuate_cleanup_2(PreservedMarksSet*, G1RedirtyCardsQueueSet*, G1EvacuationInfo*, unsigned long const*)')
f(13,2,1,4,'WorkGang::run_task(AbstractGangTask*, unsigned int, bool)')
f(14,2,1,3,'sem_post')
f(15,2,1,5,'entry_SYSCALL_64_after_hwframe')
f(16,2,1,5,'do_syscall_64')
f(17,2,1,5,'__x64_sys_futex')
f(18,2,1,5,'do_futex')
f(19,2,1,5,'futex_wake')
f(20,2,1,5,'wake_up_q')
f(21,2,1,5,'_raw_spin_unlock_irqrestore')
f(1,3,1,3,'[unknown_Java]')
f(2,3,1,1,'jdk/internal/misc/Unsafe.unpark')
f(1,4,458,1,'java/lang/Thread.run')
f(2,4,458,1,'java/util/concurrent/ThreadPoolExecutor$Worker.run')
f(3,4,458,1,'java/util/concurrent/ThreadPoolExecutor.runWorker')
f(4,4,22,1,'java/util/concurrent/FutureTask.run')
f(5,4,22,1,'java/util/concurrent/Executors$RunnableAdapter.call')
f(6,4,22,1,'java/util/concurrent/FutureTask.run')
f(7,4,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(8,4,22,1,'org/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask.call')
f(9,4,22,1,'java/lang/reflect/Method.invoke')
f(10,4,22,1,'jdk/internal/reflect/DelegatingMethodAccessorImpl.invoke')
f(11,4,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke')
f(12,4,22,1,'jdk/internal/reflect/NativeMethodAccessorImpl.invoke0')
f(13,4,22,1,'kyo/bench/jmh_generated/NarrowBindBench_forkKyo_jmhTest.forkKyo_Throughput')
f(14,4,22,1,'kyo/bench/jmh_generated/NarrowBindBench_forkKyo_jmhTest.forkKyo_thrpt_jmhStub')
f(15,4,22,1,'kyo/bench/Bench.forkKyo')
f(16,4,1,1,'java/lang/invoke/Invokers$Holder.linkToTargetMethod')
f(17,4,1,1,'java/lang/invoke/DirectMethodHandle$Holder.newInvokeSpecial')
f(18,4,1,1,'java/lang/invoke/DirectMeth
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