mirror of
https://github.com/golang/go
synced 2024-11-12 04:30:22 -07:00
cmd/compile: lazily initialize litbuf
Instead of eagerly creating strings like "literal 2.01" for every lexed number in case we need to mention it in an error message, defer this work to (*parser).syntax_error. name old allocs/op new allocs/op delta Template 482k ± 0% 482k ± 0% -0.12% (p=0.000 n=9+10) GoTypes 1.35M ± 0% 1.35M ± 0% -0.04% (p=0.015 n=10+10) Compiler 5.45M ± 0% 5.44M ± 0% -0.12% (p=0.000 n=9+8) Change-Id: I333b3c80e583864914412fb38f8c0b7f1d8c8821 Reviewed-on: https://go-review.googlesource.com/22480 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
19912e1d0a
commit
8d075beeef
@ -755,7 +755,7 @@ func (l *lexer) number(c rune) {
|
||||
}
|
||||
|
||||
done:
|
||||
litbuf = "literal " + str
|
||||
litbuf = "" // lazily initialized in (*parser).syntax_error
|
||||
l.nlsemi = true
|
||||
l.tok = LLITERAL
|
||||
}
|
||||
|
@ -102,6 +102,9 @@ func (p *parser) syntax_error(msg string) {
|
||||
tok = "name"
|
||||
}
|
||||
case LLITERAL:
|
||||
if litbuf == "" {
|
||||
litbuf = "literal " + lexbuf.String()
|
||||
}
|
||||
tok = litbuf
|
||||
case LOPER:
|
||||
tok = goopnames[p.op]
|
||||
|
Loading…
Reference in New Issue
Block a user