1. 14 Apr, 2016 24 commits
  2. 13 Apr, 2016 16 commits
    • Robert Griesemer's avatar
      cmd/compile: don't export unneeded OAS, OASWB nodes · 6e5027a3
      Robert Griesemer authored
      Also:
      - "rewrite" node Op in exporter for some nodes instead of importer
      - more comments
      
      Change-Id: I809e6754d14987b28f1da9379951ffa2e690c2a7
      Reviewed-on: https://go-review.googlesource.com/22008Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6e5027a3
    • Lynn Boger's avatar
      syscall: fix epoll_event struct for ppc64le/ppc64 · 44f80f6d
      Lynn Boger authored
      The existing epoll_event structure used by many of
      the epoll_* syscalls was defined incorrectly
      for use with ppc64le & ppc64 in the syscall
      directory.  This resulted in the caller getting
      incorrect information on return from these
      syscalls.  This caused failures in fsnotify as
      well as builds with upstream Docker.  The
      structure is defined correctly in gccgo.
      
      This adds a pad field that is expected for
      these syscalls on ppc64le, ppc64.
      Fixes #15135
      
      Change-Id: If7e8ea9eb1d1ca5182c8dc0f935b334127341ffd
      Reviewed-on: https://go-review.googlesource.com/21582Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      44f80f6d
    • David Crawshaw's avatar
      cmd/compile, etc: use name for type pkgPath · f120936d
      David Crawshaw authored
      By replacing the *string used to represent pkgPath with a
      reflect.name everywhere, the embedded *string for package paths
      inside the reflect.name can be replaced by an offset, nameOff.
      This reduces the number of pointers in the type information.
      
      This also moves all reflect.name types into the same section, making
      it possible to use nameOff more widely in later CLs.
      
      No significant binary size change for normal binaries, but:
      
      linux/amd64 PIE:
      	cmd/go: -440KB (3.7%)
      	jujud:  -2.6MB (3.2%)
      
      For #6853.
      
      Change-Id: I3890b132a784a1090b1b72b32febfe0bea77eaee
      Reviewed-on: https://go-review.googlesource.com/21395
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      f120936d
    • Brad Fitzpatrick's avatar
      runtime: rename os1_darwin.go to os_darwin.go · 73e2ad20
      Brad Fitzpatrick authored
      Change-Id: If0e0bc5a85101db1e70faaab168fc2d12024eb93
      Reviewed-on: https://go-review.googlesource.com/22005Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      73e2ad20
    • Brad Fitzpatrick's avatar
      runtime: merge the darwin os*.go files together · d9712aa8
      Brad Fitzpatrick authored
      Merge them together into os1_darwin.go. A future CL will rename it.
      
      Change-Id: Ia4380d3296ebd5ce210908ce3582ff184566f692
      Reviewed-on: https://go-review.googlesource.com/22004
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      d9712aa8
    • David Crawshaw's avatar
      cmd/link: handle long symbol names · 79048df2
      David Crawshaw authored
      Fixes #15104.
      
      Change-Id: I9ddfbbf39ef0a873b703ee3e04fbb7d1192f5f39
      Reviewed-on: https://go-review.googlesource.com/21581
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      79048df2
    • Todd Neal's avatar
      cmd/compile: sort partitions by dom to speed up cse · 3ea7cfab
      Todd Neal authored
      We do two O(n) scans of all values in an eqclass when computing
      substitutions for CSE.
      
      In unfortunate cases, like those found in #15112, we can have a large
      eqclass composed of values found in blocks none of whom dominate the
      other.  This leads to O(n^2) behavior. The elements are removed one at a
      time, with O(n) scans each time.
      
      This CL removes the linear scan by sorting the eqclass so that dominant
      values will be sorted first.  As long as we also ensure we don't disturb
      the sort order, then we no longer need to scan for the maximally
      dominant value.
      
      For the code in issue #15112:
      
      Before:
      real    1m26.094s
      user    1m30.776s
      sys     0m1.125s
      
      Aefter:
      real    0m52.099s
      user    0m56.829s
      sys     0m1.092s
      
      Updates #15112
      
      Change-Id: Ic4f8680ed172e716232436d31963209c146ef850
      Reviewed-on: https://go-review.googlesource.com/21981Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      Run-TryBot: Todd Neal <todd@tneal.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3ea7cfab
    • Austin Clements's avatar
      runtime/internal/atomic: rename Storep1 to StorepNoWB · 4721ea6a
      Austin Clements authored
      Make it clear that the point of this function stores a pointer
      *without* a write barrier.
      
      sed -i -e 's/Storep1/StorepNoWB/' $(git grep -l Storep1)
      
      Updates #15270.
      
      Change-Id: Ifad7e17815e51a738070655fe3b178afdadaecf6
      Reviewed-on: https://go-review.googlesource.com/21994Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarMichael Matloob <matloob@golang.org>
      4721ea6a
    • Dmitry Vyukov's avatar
      cmd/pprof/internal/profile: always subtract 1 from PCs · da6205b6
      Dmitry Vyukov authored
      Go runtime never emits PCs that are not a return address
      (except for cpu profiler).
      
      Change-Id: I08d9dc5c7c71e23f34f2f0c16f8baeeb4f64fcd6
      Reviewed-on: https://go-review.googlesource.com/21735Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      da6205b6
    • Robert Griesemer's avatar
      cmd/compile, go/importer: minor cleanups · eb79f21c
      Robert Griesemer authored
      Change-Id: Ic7a1fb0dbbf108052c970a4a830269a5673df7df
      Reviewed-on: https://go-review.googlesource.com/21963Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      eb79f21c
    • Robert Griesemer's avatar
      cmd/compile: move more compiler specifics into compiler specific export section · 7d0d1222
      Robert Griesemer authored
      Instead of indicating with each function signature if it has an inlineable
      body, collect all functions in order and export function bodies with function
      index in platform-specific section.
      
      Moves this compiler specific information out of the platform-independent
      export data section, and removes an int value for all functions w/o body.
      Also simplifies the code a bit.
      
      Change-Id: I8b2d7299dbe81f2706be49ecfb9d9f7da85fd854
      Reviewed-on: https://go-review.googlesource.com/21939Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      7d0d1222
    • Austin Clements's avatar
      runtime/internal/atomic: remove write barrier from Storep1 on s390x · d8e8fc29
      Austin Clements authored
      atomic.Storep1 is not supposed to invoke a write barrier (that's what
      atomicstorep is for), but currently does on s390x. This causes a panic
      in runtime.mapzero when it tries to use atomic.Storep1 to store what's
      actually a scalar.
      
      Fix this by eliminating the write barrier from atomic.Storep1 on
      s390x. Also add some documentation to atomicstorep to explain the
      difference between these.
      
      Fixes #15270.
      
      Change-Id: I291846732d82f090a218df3ef6351180aff54e81
      Reviewed-on: https://go-review.googlesource.com/21993Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: default avatarMichael Munday <munday@ca.ibm.com>
      d8e8fc29
    • David Chase's avatar
      cmd/compile: move spills to loop exits when easy. · 6b85a45e
      David Chase authored
      For call-free inner loops.
      
      Revised statistics:
        85 inner loop spills sunk
       341 inner loop spills remaining
      1162 inner loop spills that were candidates for sinking
           ended up completely register allocated
       119 inner loop spills could have been sunk were used in
           "shuffling" at the bottom of the loop.
         1 inner loop spill not sunk because the register assigned
           changed between def and exit,
      
       Understanding how to make an inner loop definition not be
       a candidate for from-memory shuffling (to force the shuffle
       code to choose some other value) should pick up some of the
       119 other spills disqualified for this reason.
      
       Modified the stats printing based on feedback from Austin.
      
      Change-Id: If3fb9b5d5a028f42ccc36c4e3d9e0da39db5ca60
      Reviewed-on: https://go-review.googlesource.com/21037Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6b85a45e
    • Lynn Boger's avatar
      runtime: improve memmove performance ppc64,ppc64le · c4807d4c
      Lynn Boger authored
      This change improves the performance of memmove
      on ppc64 & ppc64le mainly for moves >=32 bytes.
      In addition, the test to detect backward moves
       was enhanced to avoid backward moves if source
      and dest were in different types of storage, since
      backward moves might not always be efficient.
      
      Fixes #14507
      
      The following shows some of the improvements from the test
      in the runtime package:
      
      BenchmarkMemmove32                   4229.56      4717.13      1.12x
      BenchmarkMemmove64                   6156.03      7810.42      1.27x
      BenchmarkMemmove128                  7521.69      12468.54     1.66x
      BenchmarkMemmove256                  6729.90      18260.33     2.71x
      BenchmarkMemmove512                  8521.59      18033.81     2.12x
      BenchmarkMemmove1024                 9760.92      25762.61     2.64x
      BenchmarkMemmove2048                 10241.00     29584.94     2.89x
      BenchmarkMemmove4096                 10399.37     31882.31     3.07x
      
      BenchmarkMemmoveUnalignedDst16       1943.69      2258.33      1.16x
      BenchmarkMemmoveUnalignedDst32       3885.08      3965.81      1.02x
      BenchmarkMemmoveUnalignedDst64       5121.63      6965.54      1.36x
      BenchmarkMemmoveUnalignedDst128      7212.34      11372.68     1.58x
      BenchmarkMemmoveUnalignedDst256      6564.52      16913.59     2.58x
      BenchmarkMemmoveUnalignedDst512      8364.35      17782.57     2.13x
      BenchmarkMemmoveUnalignedDst1024     9539.87      24914.72     2.61x
      BenchmarkMemmoveUnalignedDst2048     9199.23      21235.11     2.31x
      BenchmarkMemmoveUnalignedDst4096     10077.39     25231.99     2.50x
      
      BenchmarkMemmoveUnalignedSrc32       3249.83      3742.52      1.15x
      BenchmarkMemmoveUnalignedSrc64       5562.35      6627.96      1.19x
      BenchmarkMemmoveUnalignedSrc128      6023.98      10200.84     1.69x
      BenchmarkMemmoveUnalignedSrc256      6921.83      15258.43     2.20x
      BenchmarkMemmoveUnalignedSrc512      8593.13      16541.97     1.93x
      BenchmarkMemmoveUnalignedSrc1024     9730.95      22927.84     2.36x
      BenchmarkMemmoveUnalignedSrc2048     9793.28      21537.73     2.20x
      BenchmarkMemmoveUnalignedSrc4096     10132.96     26295.06     2.60x
      
      Change-Id: I73af59970d4c97c728deabb9708b31ec7e01bdf2
      Reviewed-on: https://go-review.googlesource.com/21990Reviewed-by: default avatarBill O'Farrell <billotosyr@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c4807d4c
    • David Crawshaw's avatar
      cmd/link: use a switch for name prefix switching · 66afbf10
      David Crawshaw authored
      Minor cleanup.
      
      Change-Id: I7574f58a7e55c2bb798ebe9c7c98d36b8c258fb8
      Reviewed-on: https://go-review.googlesource.com/21982
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      66afbf10
    • David Crawshaw's avatar
      cmd/compile, etc: store method tables as offsets · 7d469179
      David Crawshaw authored
      This CL introduces the typeOff type and a lookup method of the same
      name that can turn a typeOff offset into an *rtype.
      
      In a typical Go binary (built with buildmode=exe, pie, c-archive, or
      c-shared), there is one moduledata and all typeOff values are offsets
      relative to firstmoduledata.types. This makes computing the pointer
      cheap in typical programs.
      
      With buildmode=shared (and one day, buildmode=plugin) there are
      multiple modules whose relative offset is determined at runtime.
      We identify a type in the general case by the pair of the original
      *rtype that references it and its typeOff value. We determine
      the module from the original pointer, and then use the typeOff from
      there to compute the final *rtype.
      
      To ensure there is only one *rtype representing each type, the
      runtime initializes a typemap for each module, using any identical
      type from an earlier module when resolving that offset. This means
      that types computed from an offset match the type mapped by the
      pointer dynamic relocations.
      
      A series of followup CLs will replace other *rtype values with typeOff
      (and name/*string with nameOff).
      
      For types created at runtime by reflect, type offsets are treated as
      global IDs and reference into a reflect offset map kept by the runtime.
      
      darwin/amd64:
      	cmd/go:  -57KB (0.6%)
      	jujud:  -557KB (0.8%)
      
      linux/amd64 PIE:
      	cmd/go: -361KB (3.0%)
      	jujud:  -3.5MB (4.2%)
      
      For #6853.
      
      Change-Id: Icf096fd884a0a0cb9f280f46f7a26c70a9006c96
      Reviewed-on: https://go-review.googlesource.com/21285Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      7d469179