cmd/compile: track pragmas in lexer rather than global variables

By using a Pragma bit set (8 bits) rather than 8 booleans, also
reduce Func type size by 8 bytes (208B -> 200B on 64bit platforms,
116B -> 108B on 32bit platforms).

Change-Id: Ibb7e1f8c418a0b5bc6ff813cbdde7bc6f0013b5a
Reviewed-on: https://go-review.googlesource.com/19966
Reviewed-by: Dave Cheney <dave@cheney.net>
This commit is contained in:
Robert Griesemer 2016-02-26 13:32:28 -08:00
parent 071e43a958
commit 3c0fae5306
10 changed files with 50 additions and 67 deletions

View file

@ -781,7 +781,7 @@ var sys_wbptr *Node
func cgen_wbptr(n, res *Node) {
if Curfn != nil {
if Curfn.Func.Nowritebarrier {
if Curfn.Func.Pragma&Nowritebarrier != 0 {
Yyerror("write barrier prohibited")
}
if Curfn.Func.WBLineno == 0 {
@ -831,7 +831,7 @@ func cgen_wbptr(n, res *Node) {
func cgen_wbfat(n, res *Node) {
if Curfn != nil {
if Curfn.Func.Nowritebarrier {
if Curfn.Func.Pragma&Nowritebarrier != 0 {
Yyerror("write barrier prohibited")
}
if Curfn.Func.WBLineno == 0 {