PosTable src.PosTable
InlTree InlTree // global inlining tree used by gc/inl.go
Imports []string
- Plan9privates *LSym
DiagFunc func(string, ...interface{})
DebugInfo func(fn *LSym, curfn interface{}) []*dwarf.Var // if non-nil, curfn is a *gc.Node
Errors int
"strings"
)
+var (
+ plan9privates *obj.LSym
+ deferreturn *obj.LSym
+)
+
// Instruction layout.
const (
n := 0
var c int32
errors := ctxt.Errors
- var deferreturn *obj.LSym
- if ctxt.Headtype == obj.Hnacl {
- deferreturn = ctxt.Lookup("runtime.deferreturn", 0)
- }
for {
loop := int32(0)
for i := range s.R {
return
}
+ switch ctxt.Headtype {
+ case obj.Hplan9:
+ plan9privates = ctxt.Lookup("_privates", 0)
+ case obj.Hnacl:
+ deferreturn = ctxt.Lookup("runtime.deferreturn", 0)
+ }
+
for i := 1; optab[i].as != 0; i++ {
c := optab[i].as
if opindex[c&obj.AMask] != nil {
asmbuf.asmand(ctxt, cursym, p, &pp.From, &p.To)
}
case obj.Hplan9:
- if ctxt.Plan9privates == nil {
- ctxt.Plan9privates = ctxt.Lookup("_privates", 0)
- }
pp.From = obj.Addr{}
pp.From.Type = obj.TYPE_MEM
pp.From.Name = obj.NAME_EXTERN
- pp.From.Sym = ctxt.Plan9privates
+ pp.From.Sym = plan9privates
pp.From.Offset = 0
pp.From.Index = REG_NONE
asmbuf.Put1(0x8B)
asmbuf.PutInt32(0)
case obj.Hplan9:
- if ctxt.Plan9privates == nil {
- ctxt.Plan9privates = ctxt.Lookup("_privates", 0)
- }
pp.From = obj.Addr{}
pp.From.Type = obj.TYPE_MEM
pp.From.Name = obj.NAME_EXTERN
- pp.From.Sym = ctxt.Plan9privates
+ pp.From.Sym = plan9privates
pp.From.Offset = 0
pp.From.Index = REG_NONE
asmbuf.rexflag |= Pw
}
func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
- if ctxt.Headtype == obj.Hplan9 && ctxt.Plan9privates == nil {
- ctxt.Plan9privates = ctxt.Lookup("_privates", 0)
- }
-
if cursym.Text == nil || cursym.Text.Link == nil {
return
}