mirror of
https://github.com/golang/go.git
synced 2026-06-27 03:11:23 +00:00
runtime: remove duplicated code in no scan slow path
In the no scan reuse path, goto the postMallocgc call in the end rather
than duplicating it. This only has an effect in the no scan slow path
function, but adds some noise to the generated files: we put
nextFree/nextFreeFast into a block so that there are no new variables we
jump over. Also the label has a goto before it so the compiler doesn't
complain if we don't use the label, and a nop statement after it so that
the call to postMallocgc doesn't appear in a labeledstatement, but is
instead in a block, where mkmalloc expects it.
goos: linux
goarch: amd64
pkg: runtime
cpu: Intel(R) Xeon(R) Platinum 8481C CPU @ 2.70GHz
│ baseline │ experiment │
│ sec/op │ sec/op vs base │
Mallocgc/scan=noscan/size=1/kind=new-88 4.701n ± 0% 4.695n ± 0% -0.14% (p=0.049 n=10)
Mallocgc/scan=noscan/size=1/kind=mallocgc-88 6.976n ± 0% 6.953n ± 0% -0.33% (p=0.000 n=10)
Mallocgc/scan=noscan/size=2/kind=new-88 5.113n ± 0% 5.074n ± 0% -0.75% (p=0.000 n=10)
Mallocgc/scan=noscan/size=2/kind=mallocgc-88 6.646n ± 0% 6.611n ± 0% -0.54% (p=0.000 n=10)
Mallocgc/scan=noscan/size=3/kind=new-88 6.304n ± 8% 6.271n ± 1% -0.53% (p=0.000 n=10)
Mallocgc/scan=noscan/size=3/kind=mallocgc-88 7.528n ± 0% 7.479n ± 0% -0.65% (p=0.000 n=10)
Mallocgc/scan=noscan/size=4/kind=new-88 6.556n ± 0% 6.496n ± 0% -0.92% (p=0.000 n=10)
Mallocgc/scan=noscan/size=4/kind=mallocgc-88 7.901n ± 0% 7.841n ± 0% -0.76% (p=0.000 n=10)
Mallocgc/scan=noscan/size=5/kind=new-88 7.778n ± 1% 7.707n ± 1% -0.92% (p=0.008 n=10)
Mallocgc/scan=noscan/size=5/kind=mallocgc-88 9.588n ± 2% 9.046n ± 0% -5.65% (p=0.000 n=10)
Mallocgc/scan=noscan/size=6/kind=new-88 9.366n ± 0% 9.280n ± 0% -0.91% (p=0.000 n=10)
Mallocgc/scan=noscan/size=6/kind=mallocgc-88 10.80n ± 0% 10.70n ± 0% -0.97% (p=0.000 n=10)
Mallocgc/scan=noscan/size=7/kind=new-88 9.737n ± 0% 9.642n ± 0% -0.98% (p=0.000 n=10)
Mallocgc/scan=noscan/size=7/kind=mallocgc-88 11.01n ± 0% 10.92n ± 0% -0.82% (p=0.000 n=10)
Mallocgc/scan=noscan/size=8/kind=new-88 9.149n ± 0% 9.081n ± 0% -0.74% (p=0.000 n=10)
Mallocgc/scan=noscan/size=8/kind=mallocgc-88 10.51n ± 0% 10.45n ± 1% -0.57% (p=0.000 n=10)
Mallocgc/scan=noscan/size=9/kind=new-88 15.12n ± 1% 14.38n ± 1% -4.89% (p=0.000 n=10)
Mallocgc/scan=noscan/size=9/kind=mallocgc-88 16.14n ± 4% 15.90n ± 0% -1.52% (p=0.000 n=10)
Mallocgc/scan=noscan/size=10/kind=new-88 14.34n ± 1% 14.13n ± 1% -1.46% (p=0.000 n=10)
Mallocgc/scan=noscan/size=10/kind=mallocgc-88 15.56n ± 1% 15.38n ± 0% -1.16% (p=0.000 n=10)
Mallocgc/scan=noscan/size=11/kind=new-88 14.53n ± 0% 14.29n ± 0% -1.62% (p=0.000 n=10)
Mallocgc/scan=noscan/size=11/kind=mallocgc-88 15.97n ± 0% 15.84n ± 0% -0.81% (p=0.000 n=10)
Mallocgc/scan=noscan/size=12/kind=new-88 14.31n ± 1% 14.05n ± 1% -1.82% (p=0.000 n=10)
Mallocgc/scan=noscan/size=12/kind=mallocgc-88 15.55n ± 0% 15.32n ± 0% -1.51% (p=0.000 n=10)
Mallocgc/scan=noscan/size=13/kind=new-88 14.59n ± 0% 14.33n ± 0% -1.78% (p=0.000 n=10)
Mallocgc/scan=noscan/size=13/kind=mallocgc-88 16.09n ± 0% 15.80n ± 1% -1.83% (p=0.000 n=10)
Mallocgc/scan=noscan/size=14/kind=new-88 14.59n ± 0% 14.11n ± 1% -3.26% (p=0.000 n=10)
Mallocgc/scan=noscan/size=14/kind=mallocgc-88 15.74n ± 1% 15.30n ± 1% -2.86% (p=0.000 n=10)
Mallocgc/scan=noscan/size=15/kind=new-88 14.59n ± 1% 14.44n ± 1% -0.99% (p=0.000 n=10)
Mallocgc/scan=noscan/size=15/kind=mallocgc-88 16.03n ± 1% 15.85n ± 0% -1.12% (p=0.000 n=10)
Mallocgc/scan=noscan/size=16/kind=new-88 13.35n ± 0% 13.15n ± 0% -1.50% (p=0.000 n=10)
Mallocgc/scan=noscan/size=16/kind=mallocgc-88 14.52n ± 0% 14.28n ± 0% -1.62% (p=0.000 n=10)
Mallocgc/scan=noscan/size=24/kind=new-88 16.06n ± 0% 15.86n ± 1% -1.25% (p=0.000 n=10)
Mallocgc/scan=noscan/size=24/kind=mallocgc-88 17.36n ± 1% 17.11n ± 1% -1.41% (p=0.000 n=10)
Mallocgc/scan=noscan/size=32/kind=new-88 18.87n ± 1% 18.38n ± 1% -2.60% (p=0.000 n=10)
Mallocgc/scan=noscan/size=32/kind=mallocgc-88 20.04n ± 0% 19.76n ± 1% -1.40% (p=0.000 n=10)
Mallocgc/scan=noscan/size=48/kind=new-88 24.79n ± 1% 24.33n ± 1% -1.86% (p=0.000 n=10)
Mallocgc/scan=noscan/size=48/kind=mallocgc-88 25.49n ± 1% 25.07n ± 1% -1.61% (p=0.000 n=10)
Mallocgc/scan=noscan/size=64/kind=new-88 31.02n ± 1% 30.30n ± 1% -2.34% (p=0.000 n=10)
Mallocgc/scan=noscan/size=64/kind=mallocgc-88 31.75n ± 1% 31.09n ± 1% -2.09% (p=0.000 n=10)
Mallocgc/scan=noscan/size=80/kind=new-88 37.26n ± 1% 36.43n ± 0% -2.23% (p=0.000 n=10)
Mallocgc/scan=noscan/size=80/kind=mallocgc-88 37.57n ± 1% 36.49n ± 1% -2.87% (p=0.000 n=10)
Mallocgc/scan=noscan/size=96/kind=new-88 43.11n ± 1% 42.17n ± 1% -2.18% (p=0.000 n=10)
Mallocgc/scan=noscan/size=96/kind=mallocgc-88 44.12n ± 1% 42.95n ± 1% -2.65% (p=0.000 n=10)
Mallocgc/scan=noscan/size=112/kind=new-88 50.54n ± 1% 48.53n ± 1% -3.99% (p=0.000 n=10)
Mallocgc/scan=noscan/size=112/kind=mallocgc-88 50.53n ± 2% 48.51n ± 1% -4.01% (p=0.000 n=10)
Mallocgc/scan=noscan/size=128/kind=new-88 56.10n ± 1% 54.55n ± 1% -2.76% (p=0.000 n=10)
Mallocgc/scan=noscan/size=128/kind=mallocgc-88 56.66n ± 1% 54.72n ± 1% -3.42% (p=0.000 n=10)
Mallocgc/scan=noscan/size=144/kind=new-88 64.96n ± 1% 63.57n ± 1% -2.15% (p=0.000 n=10)
Mallocgc/scan=noscan/size=144/kind=mallocgc-88 64.61n ± 1% 63.43n ± 1% -1.83% (p=0.000 n=10)
Mallocgc/scan=noscan/size=160/kind=new-88 71.78n ± 1% 70.39n ± 1% -1.94% (p=0.000 n=10)
Mallocgc/scan=noscan/size=160/kind=mallocgc-88 71.64n ± 1% 69.60n ± 1% -2.85% (p=0.000 n=10)
Mallocgc/scan=noscan/size=176/kind=new-88 79.03n ± 1% 77.52n ± 1% -1.92% (p=0.000 n=10)
Mallocgc/scan=noscan/size=176/kind=mallocgc-88 78.59n ± 1% 77.16n ± 1% -1.83% (p=0.000 n=10)
Mallocgc/scan=noscan/size=192/kind=new-88 83.71n ± 1% 82.55n ± 1% -1.39% (p=0.005 n=10)
Mallocgc/scan=noscan/size=192/kind=mallocgc-88 83.21n ± 1% 82.48n ± 1% -0.88% (p=0.002 n=10)
Mallocgc/scan=noscan/size=208/kind=new-88 92.03n ± 1% 90.84n ± 1% -1.29% (p=0.002 n=10)
Mallocgc/scan=noscan/size=208/kind=mallocgc-88 91.67n ± 1% 90.78n ± 2% -0.97% (p=0.015 n=10)
Mallocgc/scan=noscan/size=224/kind=new-88 96.05n ± 1% 96.22n ± 1% ~ (p=0.529 n=10)
Mallocgc/scan=noscan/size=224/kind=mallocgc-88 96.02n ± 1% 94.05n ± 2% -2.05% (p=0.001 n=10)
Mallocgc/scan=noscan/size=240/kind=new-88 103.9n ± 1% 102.9n ± 2% ~ (p=0.060 n=10)
Mallocgc/scan=noscan/size=240/kind=mallocgc-88 104.0n ± 0% 102.9n ± 1% -1.15% (p=0.000 n=10)
Mallocgc/scan=noscan/size=256/kind=new-88 111.2n ± 1% 109.0n ± 1% -1.98% (p=0.000 n=10)
Mallocgc/scan=noscan/size=256/kind=mallocgc-88 110.2n ± 1% 109.1n ± 1% -1.00% (p=0.002 n=10)
Mallocgc/scan=noscan/size=288/kind=new-88 122.2n ± 1% 120.7n ± 2% -1.19% (p=0.000 n=10)
Mallocgc/scan=noscan/size=288/kind=mallocgc-88 121.0n ± 1% 119.4n ± 1% -1.40% (p=0.001 n=10)
Mallocgc/scan=noscan/size=320/kind=new-88 135.2n ± 1% 132.8n ± 1% -1.74% (p=0.000 n=10)
Mallocgc/scan=noscan/size=320/kind=mallocgc-88 133.8n ± 1% 132.9n ± 1% -0.64% (p=0.011 n=10)
Mallocgc/scan=noscan/size=352/kind=new-88 151.9n ± 1% 151.1n ± 1% -0.56% (p=0.008 n=10)
Mallocgc/scan=noscan/size=352/kind=mallocgc-88 151.1n ± 1% 151.3n ± 1% ~ (p=0.424 n=10)
Mallocgc/scan=noscan/size=384/kind=new-88 159.4n ± 1% 157.5n ± 1% -1.22% (p=0.000 n=10)
Mallocgc/scan=noscan/size=384/kind=mallocgc-88 158.3n ± 1% 157.8n ± 2% ~ (p=0.148 n=10)
Mallocgc/scan=noscan/size=416/kind=new-88 174.0n ± 1% 172.2n ± 2% ~ (p=0.305 n=10)
Mallocgc/scan=noscan/size=416/kind=mallocgc-88 174.7n ± 1% 173.3n ± 1% -0.80% (p=0.022 n=10)
Mallocgc/scan=noscan/size=448/kind=new-88 183.0n ± 1% 182.3n ± 1% ~ (p=0.110 n=10)
Mallocgc/scan=noscan/size=448/kind=mallocgc-88 182.7n ± 1% 180.4n ± 1% -1.23% (p=0.007 n=10)
Mallocgc/scan=noscan/size=480/kind=new-88 205.5n ± 1% 204.6n ± 1% ~ (p=0.101 n=10)
Mallocgc/scan=noscan/size=480/kind=mallocgc-88 204.4n ± 1% 205.0n ± 1% ~ (p=0.077 n=10)
Mallocgc/scan=noscan/size=512/kind=new-88 218.4n ± 1% 217.6n ± 1% ~ (p=0.643 n=10)
Mallocgc/scan=noscan/size=512/kind=mallocgc-88 217.6n ± 1% 215.5n ± 1% -0.97% (p=0.004 n=10)
Mallocgc/scan=scan/size=8/kind=new-88 10.93n ± 0% 10.88n ± 0% -0.41% (p=0.006 n=10)
Mallocgc/scan=scan/size=8/kind=mallocgc-88 11.94n ± 0% 11.85n ± 0% -0.75% (p=0.000 n=10)
Mallocgc/scan=scan/size=16/kind=new-88 14.81n ± 1% 15.03n ± 1% +1.49% (p=0.000 n=10)
Mallocgc/scan=scan/size=16/kind=mallocgc-88 16.12n ± 0% 16.05n ± 1% -0.37% (p=0.003 n=10)
Mallocgc/scan=scan/size=24/kind=new-88 18.23n ± 1% 18.23n ± 1% ~ (p=0.954 n=10)
Mallocgc/scan=scan/size=24/kind=mallocgc-88 19.46n ± 0% 19.30n ± 1% -0.80% (p=0.014 n=10)
Mallocgc/scan=scan/size=32/kind=new-88 20.48n ± 0% 20.22n ± 0% -1.25% (p=0.000 n=10)
Mallocgc/scan=scan/size=32/kind=mallocgc-88 21.72n ± 1% 21.47n ± 1% -1.13% (p=0.000 n=10)
Mallocgc/scan=scan/size=48/kind=new-88 26.56n ± 1% 26.03n ± 0% -2.01% (p=0.000 n=10)
Mallocgc/scan=scan/size=48/kind=mallocgc-88 27.96n ± 1% 27.61n ± 1% -1.25% (p=0.000 n=10)
Mallocgc/scan=scan/size=64/kind=new-88 31.95n ± 1% 31.37n ± 1% -1.83% (p=0.001 n=10)
Mallocgc/scan=scan/size=64/kind=mallocgc-88 32.48n ± 2% 32.16n ± 1% -1.00% (p=0.005 n=10)
Mallocgc/scan=scan/size=80/kind=new-88 39.54n ± 2% 38.49n ± 1% -2.64% (p=0.000 n=10)
Mallocgc/scan=scan/size=80/kind=mallocgc-88 40.04n ± 2% 39.25n ± 1% -1.99% (p=0.000 n=10)
Mallocgc/scan=scan/size=96/kind=new-88 44.99n ± 1% 44.51n ± 1% -1.07% (p=0.025 n=10)
Mallocgc/scan=scan/size=96/kind=mallocgc-88 45.75n ± 1% 45.28n ± 2% -1.05% (p=0.003 n=10)
Mallocgc/scan=scan/size=112/kind=new-88 52.31n ± 2% 50.68n ± 1% -3.12% (p=0.000 n=10)
Mallocgc/scan=scan/size=112/kind=mallocgc-88 51.62n ± 1% 50.62n ± 1% -1.93% (p=0.000 n=10)
Mallocgc/scan=scan/size=128/kind=new-88 56.66n ± 1% 56.33n ± 1% ~ (p=0.052 n=10)
Mallocgc/scan=scan/size=128/kind=mallocgc-88 57.20n ± 1% 56.30n ± 1% -1.57% (p=0.000 n=10)
Mallocgc/scan=scan/size=144/kind=new-88 68.48n ± 2% 67.41n ± 2% -1.57% (p=0.003 n=10)
Mallocgc/scan=scan/size=144/kind=mallocgc-88 67.55n ± 1% 66.06n ± 1% -2.21% (p=0.000 n=10)
Mallocgc/scan=scan/size=160/kind=new-88 75.42n ± 1% 73.86n ± 2% -2.07% (p=0.000 n=10)
Mallocgc/scan=scan/size=160/kind=mallocgc-88 74.39n ± 1% 73.36n ± 1% -1.38% (p=0.003 n=10)
Mallocgc/scan=scan/size=176/kind=new-88 80.22n ± 1% 79.15n ± 1% -1.34% (p=0.008 n=10)
Mallocgc/scan=scan/size=176/kind=mallocgc-88 79.47n ± 1% 79.03n ± 2% ~ (p=0.110 n=10)
Mallocgc/scan=scan/size=192/kind=new-88 86.95n ± 1% 85.90n ± 1% -1.21% (p=0.034 n=10)
Mallocgc/scan=scan/size=192/kind=mallocgc-88 85.85n ± 1% 85.34n ± 1% -0.59% (p=0.004 n=10)
Mallocgc/scan=scan/size=208/kind=new-88 92.53n ± 1% 92.22n ± 1% ~ (p=0.105 n=10)
Mallocgc/scan=scan/size=208/kind=mallocgc-88 92.27n ± 1% 92.41n ± 2% ~ (p=0.912 n=10)
Mallocgc/scan=scan/size=224/kind=new-88 101.0n ± 1% 102.4n ± 1% +1.34% (p=0.006 n=10)
Mallocgc/scan=scan/size=224/kind=mallocgc-88 99.61n ± 1% 99.37n ± 1% ~ (p=0.393 n=10)
Mallocgc/scan=scan/size=240/kind=new-88 104.7n ± 1% 105.5n ± 1% ~ (p=0.100 n=10)
Mallocgc/scan=scan/size=240/kind=mallocgc-88 104.4n ± 1% 105.0n ± 1% ~ (p=0.403 n=10)
Mallocgc/scan=scan/size=256/kind=new-88 110.2n ± 1% 110.6n ± 1% ~ (p=0.362 n=10)
Mallocgc/scan=scan/size=256/kind=mallocgc-88 110.2n ± 1% 110.5n ± 1% ~ (p=0.592 n=10)
Mallocgc/scan=scan/size=288/kind=new-88 127.4n ± 2% 127.0n ± 1% ~ (p=0.492 n=10)
Mallocgc/scan=scan/size=288/kind=mallocgc-88 126.4n ± 1% 126.3n ± 1% ~ (p=0.755 n=10)
Mallocgc/scan=scan/size=320/kind=new-88 140.4n ± 1% 139.8n ± 1% ~ (p=0.361 n=10)
Mallocgc/scan=scan/size=320/kind=mallocgc-88 141.1n ± 1% 140.9n ± 1% ~ (p=0.927 n=10)
Mallocgc/scan=scan/size=352/kind=new-88 152.6n ± 1% 152.6n ± 1% ~ (p=0.927 n=10)
Mallocgc/scan=scan/size=352/kind=mallocgc-88 152.9n ± 1% 151.8n ± 1% ~ (p=0.066 n=10)
Mallocgc/scan=scan/size=384/kind=new-88 168.2n ± 1% 165.6n ± 1% -1.58% (p=0.002 n=10)
Mallocgc/scan=scan/size=384/kind=mallocgc-88 166.8n ± 1% 165.3n ± 1% -0.93% (p=0.018 n=10)
Mallocgc/scan=scan/size=416/kind=new-88 174.6n ± 1% 173.8n ± 1% ~ (p=0.101 n=10)
Mallocgc/scan=scan/size=416/kind=mallocgc-88 174.4n ± 1% 173.7n ± 1% ~ (p=0.424 n=10)
Mallocgc/scan=scan/size=448/kind=new-88 194.5n ± 1% 195.7n ± 1% +0.59% (p=0.012 n=10)
Mallocgc/scan=scan/size=448/kind=mallocgc-88 194.0n ± 1% 194.6n ± 1% ~ (p=0.286 n=10)
Mallocgc/scan=scan/size=480/kind=new-88 204.3n ± 1% 204.0n ± 1% ~ (p=0.810 n=10)
Mallocgc/scan=scan/size=480/kind=mallocgc-88 204.1n ± 1% 203.8n ± 0% ~ (p=0.616 n=10)
Mallocgc/scan=scan/size=512/kind=new-88 217.8n ± 1% 217.0n ± 1% ~ (p=0.210 n=10)
Mallocgc/scan=scan/size=512/kind=mallocgc-88 218.7n ± 1% 215.4n ± 1% -1.51% (p=0.000 n=10)
Mallocgc/scan=scanslice/size=8-88 13.33n ± 0% 13.20n ± 0% -0.98% (p=0.000 n=10)
Mallocgc/scan=scanslice/size=16-88 22.67n ± 0% 22.55n ± 0% -0.53% (p=0.000 n=10)
Mallocgc/scan=scanslice/size=24-88 25.52n ± 0% 25.37n ± 0% -0.61% (p=0.000 n=10)
Mallocgc/scan=scanslice/size=32-88 27.77n ± 0% 27.83n ± 1% ~ (p=0.382 n=10)
Mallocgc/scan=scanslice/size=48-88 33.97n ± 0% 33.80n ± 1% ~ (p=0.085 n=10)
Mallocgc/scan=scanslice/size=64-88 38.23n ± 1% 37.95n ± 1% -0.73% (p=0.050 n=10)
Mallocgc/scan=scanslice/size=80-88 45.38n ± 0% 45.17n ± 1% -0.47% (p=0.004 n=10)
Mallocgc/scan=scanslice/size=96-88 50.79n ± 0% 50.56n ± 0% ~ (p=0.063 n=10)
Mallocgc/scan=scanslice/size=112-88 55.70n ± 1% 55.92n ± 1% ~ (p=0.424 n=10)
Mallocgc/scan=scanslice/size=128-88 60.19n ± 1% 59.73n ± 1% ~ (p=0.060 n=10)
Mallocgc/scan=scanslice/size=144-88 69.30n ± 1% 67.95n ± 1% -1.94% (p=0.000 n=10)
Mallocgc/scan=scanslice/size=160-88 74.91n ± 1% 74.58n ± 1% ~ (p=0.052 n=10)
Mallocgc/scan=scanslice/size=176-88 80.61n ± 1% 79.55n ± 1% -1.31% (p=0.004 n=10)
Mallocgc/scan=scanslice/size=192-88 87.58n ± 1% 86.90n ± 1% ~ (p=0.105 n=10)
Mallocgc/scan=scanslice/size=208-88 93.00n ± 1% 92.48n ± 1% -0.55% (p=0.022 n=10)
Mallocgc/scan=scanslice/size=224-88 101.15n ± 1% 99.08n ± 1% -2.05% (p=0.001 n=10)
Mallocgc/scan=scanslice/size=240-88 105.3n ± 1% 104.0n ± 1% -1.19% (p=0.002 n=10)
Mallocgc/scan=scanslice/size=256-88 110.2n ± 1% 110.2n ± 1% ~ (p=0.810 n=10)
Mallocgc/scan=scanslice/size=288-88 127.4n ± 1% 127.0n ± 1% ~ (p=0.446 n=10)
Mallocgc/scan=scanslice/size=320-88 142.6n ± 2% 141.2n ± 2% ~ (p=0.072 n=10)
Mallocgc/scan=scanslice/size=352-88 153.8n ± 1% 152.3n ± 1% -0.98% (p=0.005 n=10)
Mallocgc/scan=scanslice/size=384-88 168.0n ± 1% 166.4n ± 1% ~ (p=0.060 n=10)
Mallocgc/scan=scanslice/size=416-88 175.1n ± 2% 174.3n ± 1% ~ (p=0.127 n=10)
Mallocgc/scan=scanslice/size=448-88 196.5n ± 1% 196.4n ± 1% ~ (p=0.754 n=10)
Mallocgc/scan=scanslice/size=480-88 204.0n ± 2% 204.3n ± 1% ~ (p=0.446 n=10)
Mallocgc/scan=scanslice/size=512-88 218.2n ± 1% 217.4n ± 1% ~ (p=0.423 n=10)
geomean 50.01n 49.45n -1.11%
For #79286
Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64_c2s16-perf_vs_parent,gotip-linux-amd64_c3h88-perf_vs_parent,gotip-linux-arm64_c4ah72-perf_vs_parent,gotip-linux-arm64_c4as16-perf_vs_parent
Change-Id: Ie5fe8007733ae94556792146d1cd7c666a6a6964
Reviewed-on: https://go-review.googlesource.com/c/go/+/779220
Reviewed-by: Michael Matloob <matloob@google.com>
TryBot-Bypass: Michael Matloob <matloob@google.com>
Commit-Queue: Michael Matloob <matloob@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
2f0459745c
commit
c410b4944e
3 changed files with 543 additions and 376 deletions
|
|
@ -361,6 +361,8 @@ func inline(config generatorConfig) []byte {
|
|||
}
|
||||
}
|
||||
|
||||
stamped = cleanLabels(stamped)
|
||||
|
||||
out.Write(mustFormatNode(fset, stamped))
|
||||
out.WriteString("\n\n")
|
||||
}
|
||||
|
|
@ -459,6 +461,14 @@ func foldIfCondition(node ast.Node, from, to string) ast.Node {
|
|||
}
|
||||
case *ast.IfStmt:
|
||||
if v, ok := boolLit(n.Cond); ok {
|
||||
if cursor.Index() < 0 {
|
||||
replacement := ast.Node(&ast.EmptyStmt{})
|
||||
if v {
|
||||
replacement = n.Body
|
||||
}
|
||||
cursor.Replace(replacement)
|
||||
break
|
||||
}
|
||||
if v {
|
||||
for _, stmt := range n.Body.List {
|
||||
cursor.InsertBefore(stmt)
|
||||
|
|
@ -473,12 +483,50 @@ func foldIfCondition(node ast.Node, from, to string) ast.Node {
|
|||
}
|
||||
cursor.Delete()
|
||||
}
|
||||
case *ast.LabeledStmt:
|
||||
// This case isn't necessary but it moves the code
|
||||
// out of the block so that it looks cleaner.
|
||||
if inner, ok := n.Stmt.(*ast.BlockStmt); ok {
|
||||
if len(inner.List) == 0 {
|
||||
cursor.Delete()
|
||||
break
|
||||
}
|
||||
list := inner.List
|
||||
n.Stmt = list[0]
|
||||
for i := len(list) - 1; i > 0; i-- {
|
||||
cursor.InsertAfter(list[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
return astutil.Apply(node, nil, handleIfs)
|
||||
}
|
||||
|
||||
func cleanLabels(node ast.Node) ast.Node {
|
||||
found := map[string]bool{}
|
||||
ast.Inspect(node, func(node ast.Node) bool {
|
||||
if branch, ok := node.(*ast.BranchStmt); ok {
|
||||
if branch.Label != nil {
|
||||
found[branch.Label.Name] = true
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
return astutil.Apply(node, nil, func(cursor *astutil.Cursor) bool {
|
||||
if lstmt, ok := cursor.Node().(*ast.LabeledStmt); ok {
|
||||
if !found[lstmt.Label.Name] {
|
||||
if _, ok := lstmt.Stmt.(*ast.EmptyStmt); ok {
|
||||
cursor.Delete()
|
||||
} else {
|
||||
cursor.Replace(lstmt.Stmt)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
// reports whether this is a non-grouped constant decl named 'name'.
|
||||
func isNamedConstDecl(node ast.Node, name string) bool {
|
||||
declStmt, ok := node.(*ast.DeclStmt)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -202,31 +202,32 @@ func smallStub(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
|
|||
const spc = spanClass(sizeclass<<1) | spanClass(noscanint_)
|
||||
span := c.alloc[spc]
|
||||
|
||||
var v gclinkptr
|
||||
var x unsafe.Pointer
|
||||
if isNoScan_ {
|
||||
// First, check for a reusable object.
|
||||
if runtimeFreegcEnabled && c.hasReusableNoscan(spc) {
|
||||
// We have a reusable object, use it.
|
||||
x := mallocgcSmallNoscanReuse(c, span, spc, elemsize, needzero)
|
||||
x = mallocgcSmallNoscanReuse(c, span, spc, elemsize, needzero)
|
||||
mp.mallocing = 0
|
||||
releasem(mp)
|
||||
|
||||
// TODO(thepudds): note that the generated return path is essentially duplicated
|
||||
// by the generator. For example, see the two postMallocgcDebug calls and
|
||||
// related duplicated code on the return path currently in the generated
|
||||
// mallocgcSmallNoScanSC2 function. One set of those correspond to this
|
||||
// return here. We might be able to de-duplicate the generated return path
|
||||
// by updating the generator, perhaps by jumping to a shared return or similar.
|
||||
postMallocgc(x, typ, size, elemsize)
|
||||
|
||||
if isSlowPath_ {
|
||||
// postMallocgc only does anything in the slow path.
|
||||
goto post
|
||||
}
|
||||
return x
|
||||
}
|
||||
}
|
||||
|
||||
v := nextFreeFastStub(span, elemsize)
|
||||
if v == 0 {
|
||||
v, span, checkGCTrigger = c.nextFree(spc)
|
||||
// This is in a block so that the goto above doesn't jump past the
|
||||
// definition of nextFreeFastResult that's introduced when nextFreeFastStub
|
||||
// is inlined.
|
||||
{
|
||||
v = nextFreeFastStub(span, elemsize)
|
||||
if v == 0 {
|
||||
v, span, checkGCTrigger = c.nextFree(spc)
|
||||
}
|
||||
x = unsafe.Pointer(v)
|
||||
}
|
||||
x := unsafe.Pointer(v)
|
||||
if isNoScan_ {
|
||||
if needzero && span.needzero != 0 {
|
||||
memclrNoHeapPointers(x, elemsize)
|
||||
|
|
@ -296,7 +297,10 @@ func smallStub(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
|
|||
}
|
||||
}
|
||||
|
||||
postMallocgc(x, typ, size, elemsize)
|
||||
post:
|
||||
if isSlowPath_ {
|
||||
postMallocgc(x, typ, size, elemsize)
|
||||
}
|
||||
|
||||
return x
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue