• Josh Bleecher Snyder's avatar
    runtime: refactor evacuate x/y handling · 77a9cb9b
    Josh Bleecher Snyder authored
    This change unifies the x and y cases.
    
    It shrinks evacuate's machine code by ~25% and its stack size by ~15%.
    
    It also eliminates a critical branch.
    Whether an entry should go to x or y is designed to be unpredictable.
    As a result, half of the branch predictions for useX were wrong.
    Mispredicting that branch can easily incur an expensive cache miss.
    Switching to an xy array allows elimination of that branch,
    which in turn reduces cache misses.
    
    Change-Id: Ie9cef53744b96c724c377ac0985b487fc50b49b1
    Reviewed-on: https://go-review.googlesource.com/54653
    Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    77a9cb9b
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...