• Rick Hudson's avatar
    [dev.garbage] runtime: logic that uses count trailing zero (ctz) · 44fe90d0
    Rick Hudson authored
    Most (all?) processors that Go supports supply a hardware
    instruction that takes a byte and returns the number
    of zeros trailing the first 1 encountered, or 8
    if no ones are found. This is the index within the
    byte of the first 1 encountered. CTZ should improve the
    performance of the nextFreeIndex function.
    
    Since nextFreeIndex wants the next unmarked (0) bit
    a bit-wise complement is needed before calling ctz.
    Furthermore unmarked bits associated with previously
    allocated objects need to be ignored. Instead of writing
    a 1 as we allocate the code masks all bits less than the
    freeindex after loading the byte.
    
    While this CL does not actual execute a CTZ instruction
    it supplies a ctz function with the appropiate signature
    along with the logic to execute it.
    
    Change-Id: I5c55ce0ed48ca22c21c4dd9f969b0819b4eadaa7
    Reviewed-on: https://go-review.googlesource.com/20169Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    Reviewed-by: 's avatarAustin Clements <austin@google.com>
    44fe90d0
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang.org/x/net/http2/hpack Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...