• Daniel Martí's avatar
    cmd/compile/internal/syntax: use stringer for operators and tokens · c8791538
    Daniel Martí authored
    With its new -linecomment flag, it is now possible to use stringer on
    values whose strings aren't valid identifiers. This is the case with
    tokens and operators in Go.
    
    Operator alredy had inline comments with each operator's string
    representation; only minor modifications were needed. The inline
    comments were added to each of the token names, using the same strategy.
    
    Comments that were previously inline or part of the string arrays were
    moved to the line immediately before the name they correspond to.
    
    Finally, declare tokStrFast as a function that uses the generated arrays
    directly. Avoiding the branch and strconv call means that we avoid a
    performance regression in the scanner, perhaps due to the lack of
    mid-stack inlining.
    
    Performance is not affected. Measured with 'go test -run StdLib -fast'
    on an X1 Carbon Gen2 (i5-4300U @ 1.90GHz, 8GB RAM, SSD), the best of 5
    runs before and after the changes are:
    
    	parsed 1709399 lines (3763 files) in 1.707402159s (1001169 lines/s)
    	allocated 449.282Mb (263.137Mb/s)
    
    	parsed 1709329 lines (3765 files) in 1.706663154s (1001562 lines/s)
    	allocated 449.290Mb (263.256Mb/s)
    
    Change-Id: Idcc4f83393fcadd6579700e3602c09496ea2625b
    Reviewed-on: https://go-review.googlesource.com/95357Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    c8791538
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...
plugin 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 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...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash 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...