]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: simplify readonly sym checks in writebarrier pass
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 28 Apr 2020 17:20:55 +0000 (10:20 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 28 Apr 2020 19:49:53 +0000 (19:49 +0000)
CL 220499 started marking readonly syms as SRODATA earlier,
so we can use that in the writebarrier pass now.

Passes toolstash-check.

Change-Id: Ic4d49714b8bffbe03c8e9a75ca96df4475bae732
Reviewed-on: https://go-review.googlesource.com/c/go/+/230559
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/ssa/writebarrier.go

index cebfbb8c9d341b6f4555765b7cd23bbad61eabaa..c7fb0594759b00d19ef5b6b3aa6938e652cd652c 100644 (file)
@@ -7,9 +7,9 @@ package ssa
 import (
        "cmd/compile/internal/types"
        "cmd/internal/obj"
+       "cmd/internal/objabi"
        "cmd/internal/src"
        "fmt"
-       "strings"
 )
 
 // A ZeroRegion records parts of an object which are known to be zero.
@@ -565,8 +565,7 @@ func IsReadOnlyGlobalAddr(v *Value) bool {
                // Nil pointers are read only. See issue 33438.
                return true
        }
-       // See TODO in OpAddr case in IsSanitizerSafeAddr below.
-       if v.Op == OpAddr && strings.HasPrefix(v.Aux.(*obj.LSym).Name, `""..stmp_`) {
+       if v.Op == OpAddr && v.Aux.(*obj.LSym).Type == objabi.SRODATA {
                return true
        }
        return false
@@ -614,15 +613,7 @@ func IsSanitizerSafeAddr(v *Value) bool {
                // read-only once initialized.
                return true
        case OpAddr:
-               sym := v.Aux.(*obj.LSym)
-               // TODO(mdempsky): Find a cleaner way to
-               // detect this. It would be nice if we could
-               // test sym.Type==objabi.SRODATA, but we don't
-               // initialize sym.Type until after function
-               // compilation.
-               if strings.HasPrefix(sym.Name, `""..stmp_`) {
-                       return true
-               }
+               return v.Aux.(*obj.LSym).Type == objabi.SRODATA
        }
        return false
 }