]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: improve obj.ProgInfo struct layout
authorDave Cheney <dave@cheney.net>
Thu, 8 Oct 2015 09:14:03 +0000 (20:14 +1100)
committerDave Cheney <dave@cheney.net>
Thu, 8 Oct 2015 20:57:54 +0000 (20:57 +0000)
obj.ProgInfo is a field inside obj.Prog, which is currently 320 bytes
on 64bit platforms. By moving the Flags field below the other fields
the size of obj.Prog drops into the 288 byte size class, a saving of
32 bytes per value allocated on the heap.

Change-Id: If8bb12f45328996d7df1d0bac9d1c019d2af73bd
Reviewed-on: https://go-review.googlesource.com/15522
Run-TryBot: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/internal/obj/link.go

index 4d6f7d7bdbce4300604fef4dbcf28eb3c068c337..3a1faa2edfcb33ce922545936d4d847dff4442b5 100644 (file)
@@ -247,10 +247,10 @@ func (p *Prog) From3Offset() int64 {
 // by clients such as the compiler. The exact meaning of this
 // data is up to the client and is not interpreted by the cmd/internal/obj/... packages.
 type ProgInfo struct {
-       Flags    uint32   // flag bits
        Reguse   uint64   // registers implicitly used by this instruction
        Regset   uint64   // registers implicitly set by this instruction
        Regindex uint64   // registers used by addressing mode
+       Flags    uint32   // flag bits
        _        struct{} // to prevent unkeyed literals
 }