]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/x86: minor optimization
authorRuss Cox <rsc@golang.org>
Fri, 13 Mar 2015 15:58:13 +0000 (11:58 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 17 Mar 2015 01:21:20 +0000 (01:21 +0000)
- avoid copy in range ytab
- add fast path to prefixof

Change-Id: I88aa9d91a0abe80d253f7c3bca950b4613297499
Reviewed-on: https://go-review.googlesource.com/7628
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
src/cmd/internal/obj/x86/asm6.go

index 3bcec5de64a3dd4c94337a0450b43482d27bb6d2..4842bd623844816ab849eb34a14efae898b7725b 100644 (file)
@@ -1903,6 +1903,9 @@ func instinit() {
 }
 
 func prefixof(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) int {
+       if a.Reg < REG_CS && a.Index < REG_CS { // fast path
+               return 0
+       }
        if a.Type == obj.TYPE_MEM && a.Name == obj.NAME_NONE {
                switch a.Reg {
                case REG_CS:
@@ -2985,8 +2988,8 @@ func doasm(ctxt *obj.Link, p *obj.Prog) {
        var r *obj.Reloc
        var rel obj.Reloc
        var v int64
-       var yt ytab
-       for _, yt = range o.ytab {
+       for i := range o.ytab {
+               yt := &o.ytab[i]
                if ycover[ft+int(yt.from)] != 0 && ycover[f3t+int(yt.from3)] != 0 && ycover[tt+int(yt.to)] != 0 {
                        switch o.prefix {
                        case Px1: /* first option valid only in 32-bit mode */