]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: Delete Link.Symmorestack
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Thu, 23 Apr 2015 02:38:05 +0000 (14:38 +1200)
committerMinux Ma <minux@golang.org>
Wed, 29 Apr 2015 03:32:28 +0000 (03:32 +0000)
This started out as trying to remove Bool2int calls, which it does a bit, but
mostly it ended up being removing the Link.Symmorestack array which seemed a
pointless bit of caching.

Change-Id: I91a51eb08cb4b08f3f9f093b575306499267b67a
Reviewed-on: https://go-review.googlesource.com/9239
Reviewed-by: Minux Ma <minux@golang.org>
Run-TryBot: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/internal/obj/arm/obj5.go
src/cmd/internal/obj/arm64/obj7.go
src/cmd/internal/obj/link.go
src/cmd/internal/obj/ppc64/obj9.go
src/cmd/internal/obj/x86/obj6.go

index 0960647af2edead15e24f9606654b367ebcbda67..2d3e537ca04eb791ce2b1270b2a22dcf1df040d4 100644 (file)
@@ -180,11 +180,6 @@ func linkcase(casep *obj.Prog) {
 func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
        autosize := int32(0)
 
-       if ctxt.Symmorestack[0] == nil {
-               ctxt.Symmorestack[0] = obj.Linklookup(ctxt, "runtime.morestack", 0)
-               ctxt.Symmorestack[1] = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
-       }
-
        ctxt.Cursym = cursym
 
        if cursym.Text == nil || cursym.Text.Link == nil {
@@ -367,7 +362,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                        }
 
                        if p.From3.Offset&obj.NOSPLIT == 0 {
-                               p = stacksplit(ctxt, p, autosize, cursym.Text.From3.Offset&obj.NEEDCTXT == 0) // emit split check
+                               p = stacksplit(ctxt, p, autosize) // emit split check
                        }
 
                        // MOVW.W               R14,$-autosize(SP)
@@ -718,7 +713,7 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) {
        }
 }
 
-func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.Prog {
+func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32) *obj.Prog {
        // MOVW                 g_stackguard(g), R1
        p = obj.Appendp(ctxt, p)
 
@@ -828,8 +823,10 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.
        p.To.Type = obj.TYPE_BRANCH
        if ctxt.Cursym.Cfunc != 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
+       } else if ctxt.Cursym.Text.From3.Offset&obj.NEEDCTXT == 0 {
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
        } else {
-               p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack", 0)
        }
 
        // BLS  start
index 09fb6d60834c9a1c4712aa7adff00c00784c1a6e..6fe13ea3cb9335c38f53a173269a030e69ee2dc9 100644 (file)
@@ -49,7 +49,7 @@ var complements = []int16{
        ACMNW: ACMPW,
 }
 
-func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.Prog {
+func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32) *obj.Prog {
        // MOV  g_stackguard(g), R1
        p = obj.Appendp(ctxt, p)
 
@@ -186,8 +186,10 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.P
        p.To.Type = obj.TYPE_BRANCH
        if ctxt.Cursym.Cfunc != 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
+       } else if ctxt.Cursym.Text.From3.Offset&obj.NEEDCTXT == 0 {
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
        } else {
-               p.To.Sym = ctxt.Symmorestack[noctxt]
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack", 0)
        }
 
        // B    start
@@ -465,11 +467,6 @@ loop:
 }
 
 func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
-       if ctxt.Symmorestack[0] == nil {
-               ctxt.Symmorestack[0] = obj.Linklookup(ctxt, "runtime.morestack", 0)
-               ctxt.Symmorestack[1] = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
-       }
-
        ctxt.Cursym = cursym
 
        if cursym.Text == nil || cursym.Text.Link == nil {
@@ -583,7 +580,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                        }
 
                        if !(p.From3.Offset&obj.NOSPLIT != 0) {
-                               p = stacksplit(ctxt, p, ctxt.Autosize, obj.Bool2int(cursym.Text.From3.Offset&obj.NEEDCTXT == 0)) // emit split check
+                               p = stacksplit(ctxt, p, ctxt.Autosize) // emit split check
                        }
 
                        aoffset = ctxt.Autosize
index a0add7bf1f62f22b2fce7e44659ce9f66cd3e5bb..9f5e87b4c3550f5800e5a8ffb21818a7adcd3e35 100644 (file)
@@ -472,7 +472,6 @@ type Link struct {
        Sym_divu           *LSym
        Sym_mod            *LSym
        Sym_modu           *LSym
-       Symmorestack       [2]*LSym
        Tlsg               *LSym
        Plan9privates      *LSym
        Curp               *Prog
index 87a46ca9fb03274f1d1d322bcfe76b1f747787de..4de04a7406de9deefd610e444cf5596ecf33e1e6 100644 (file)
@@ -115,11 +115,6 @@ func progedit(ctxt *obj.Link, p *obj.Prog) {
 }
 
 func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
-       if ctxt.Symmorestack[0] == nil {
-               ctxt.Symmorestack[0] = obj.Linklookup(ctxt, "runtime.morestack", 0)
-               ctxt.Symmorestack[1] = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
-       }
-
        // TODO(minux): add morestack short-cuts with small fixed frame-size.
        ctxt.Cursym = cursym
 
@@ -328,7 +323,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                        p.To.Offset = int64(autosize) - 8
 
                        if p.From3.Offset&obj.NOSPLIT == 0 {
-                               p = stacksplit(ctxt, p, autosize, cursym.Text.From3.Offset&obj.NEEDCTXT == 0) // emit split check
+                               p = stacksplit(ctxt, p, autosize) // emit split check
                        }
 
                        q = p
@@ -628,7 +623,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                q = p;
        }
 */
-func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.Prog {
+func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32) *obj.Prog {
        // MOVD g_stackguard(g), R3
        p = obj.Appendp(ctxt, p)
 
@@ -757,8 +752,10 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.
        p.To.Type = obj.TYPE_BRANCH
        if ctxt.Cursym.Cfunc != 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
+       } else if ctxt.Cursym.Text.From3.Offset&obj.NEEDCTXT == 0 {
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
        } else {
-               p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack", 0)
        }
 
        // BR   start
index 549738bae137801535c62b8f35679fd806b27e65..743a48a4944bd09b8b650dcae5cde6a95644050a 100644 (file)
@@ -449,10 +449,6 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
        if ctxt.Tlsg == nil {
                ctxt.Tlsg = obj.Linklookup(ctxt, "runtime.tlsg", 0)
        }
-       if ctxt.Symmorestack[0] == nil {
-               ctxt.Symmorestack[0] = obj.Linklookup(ctxt, "runtime.morestack", 0)
-               ctxt.Symmorestack[1] = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
-       }
 
        if ctxt.Headtype == obj.Hplan9 && ctxt.Plan9privates == nil {
                ctxt.Plan9privates = obj.Linklookup(ctxt, "_privates", 0)
@@ -514,7 +510,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
 
        var q *obj.Prog
        if cursym.Text.From3.Offset&obj.NOSPLIT == 0 {
-               p = stacksplit(ctxt, p, autoffset, int32(textarg), cursym.Text.From3.Offset&obj.NEEDCTXT == 0, &q) // emit split check
+               p = stacksplit(ctxt, p, autoffset, int32(textarg), &q) // emit split check
        }
 
        if autoffset != 0 {
@@ -871,7 +867,7 @@ func load_g_cx(ctxt *obj.Link, p *obj.Prog) *obj.Prog {
 // Returns last new instruction.
 // On return, *jmpok is the instruction that should jump
 // to the stack frame allocation if no split is needed.
-func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noctxt bool, jmpok **obj.Prog) *obj.Prog {
+func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, jmpok **obj.Prog) *obj.Prog {
        cmp := ACMPQ
        lea := ALEAQ
        mov := AMOVQ
@@ -997,8 +993,10 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, noc
        p.To.Type = obj.TYPE_BRANCH
        if ctxt.Cursym.Cfunc != 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
+       } else if ctxt.Cursym.Text.From3.Offset&obj.NEEDCTXT == 0 {
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
        } else {
-               p.To.Sym = ctxt.Symmorestack[obj.Bool2int(noctxt)]
+               p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack", 0)
        }
 
        p = obj.Appendp(ctxt, p)