• Austin Clements's avatar
    cmd/compile: compute register liveness maps · 61158c16
    Austin Clements authored
    This extends the liveness analysis to track registers containing live
    pointers. We do this by tracking bitmaps for live pointer registers
    in parallel with bitmaps for stack variables.
    
    This does not yet do anything with these liveness maps, though they do
    appear in the debug output for -live=2.
    
    We'll optimize this in later CLs:
    
    name        old time/op       new time/op       delta
    Template          193ms ± 5%        195ms ± 2%    ~     (p=0.050 n=9+9)
    Unicode          97.7ms ± 2%       98.4ms ± 2%    ~     (p=0.315 n=9+10)
    GoTypes           674ms ± 2%        685ms ± 1%  +1.72%  (p=0.001 n=9+9)
    Compiler          3.21s ± 1%        3.28s ± 1%  +2.28%  (p=0.000 n=10+9)
    SSA               7.70s ± 1%        7.79s ± 1%  +1.07%  (p=0.015 n=10+10)
    Flate             130ms ± 3%        133ms ± 2%  +2.19%  (p=0.003 n=10+10)
    GoParser          159ms ± 3%        161ms ± 2%  +1.51%  (p=0.019 n=10+10)
    Reflect           444ms ± 1%        450ms ± 1%  +1.43%  (p=0.000 n=9+10)
    Tar               181ms ± 2%        183ms ± 2%  +1.45%  (p=0.010 n=10+9)
    XML               230ms ± 1%        234ms ± 1%  +1.56%  (p=0.000 n=8+9)
    [Geo mean]        405ms             411ms       +1.48%
    
    No effect on binary size because we're not yet emitting the register
    maps.
    
    For #24543.
    
    Change-Id: Ieb022f0aea89c0ea9a6f035195bce2f0e67dbae4
    Reviewed-on: https://go-review.googlesource.com/109352
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    61158c16
fmt_test.go 24.9 KB