1. 10 Feb, 2017 11 commits
    • Michael Munday's avatar
      cmd/{asm,internal/obj/s390x}, math: remove emulated float instructions · a5246168
      Michael Munday authored
      The s390x port was based on the ppc64 port and, because of the way the
      port was done, inherited some instructions from it. ppc64 supports
      3-operand (4-operand for FMADD etc.) floating point instructions
      but s390x doesn't (the destination register is always an input) and
      so these were emulated.
      
      There is a bug in the emulation of FMADD whereby if the destination
      register is also a source for the multiplication it will be
      clobbered. This doesn't break any assembly code in the std lib but
      could affect future work.
      
      To fix this I have gone through the floating point instructions and
      removed all unnecessary 3-/4-operand emulation. The compiler doesn't
      need it and assembly writers don't need it, it's just a source of
      bugs.
      
      I've also deleted the FNMADD family of emulated instructions. They
      aren't used anywhere.
      
      Change-Id: Ic07cedcf141a6a3b43a0c84895460f6cfbf56c04
      Reviewed-on: https://go-review.googlesource.com/33350
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      a5246168
    • Alberto Donizetti's avatar
      math: check overflow in amd64 Exp implementation · f44e5870
      Alberto Donizetti authored
      Unlike the pure go implementation used by every other architecture,
      the amd64 asm implementation of Exp does not fail early if the
      argument is known to overflow. Make it fail early.
      
      Cost of the check is < 1ns (on an old Sandy Bridge machine):
      
      name   old time/op  new time/op  delta
      Exp-4  18.3ns ± 1%  18.7ns ± 1%  +2.08%  (p=0.000 n=18+20)
      
      Fixes #14932
      Fixes #18912
      
      Change-Id: I04b3f9b4ee853822cbdc97feade726fbe2907289
      Reviewed-on: https://go-review.googlesource.com/36271
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f44e5870
    • Tuo Shan's avatar
      encoding/json: clarify documention for Unmarshal into a pointer. · 4fafc843
      Tuo Shan authored
      Fixes #18730.
      
      Change-Id: If3ef28e62f7e449d4c8dc1dfd78f7d6f5a87ed26
      Reviewed-on: https://go-review.googlesource.com/36478Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      4fafc843
    • Daniel Theophanes's avatar
      database/sql: ensure driverConns are closed if not returned to pool · a335c344
      Daniel Theophanes authored
      Previously if a connection was requested but timed out during the
      request and when acquiring the db.Lock the connection request
      is fulfilled and the request is unable to be returned to the
      connection pool, then then driver connection would not be closed.
      
      No tests were added or modified because I was unable to determine
      how to trigger this situation without something invasive.
      
      Change-Id: I9d4dc680e3fdcf63d79d212174a5b8b313f363f1
      Reviewed-on: https://go-review.googlesource.com/36641Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      a335c344
    • Russ Cox's avatar
      runtime/pprof: merge internal/protopprof into pprof package · 9a754439
      Russ Cox authored
      These are very tightly coupled, and internal/protopprof is small.
      There's no point to having a separate package.
      
      Change-Id: I2c8aa49c9e18a7128657bf2b05323860151b5606
      Reviewed-on: https://go-review.googlesource.com/36711
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9a754439
    • Nigel Tao's avatar
      image: fix the overlap check in Rectangle.Intersect. · 3a209281
      Nigel Tao authored
      This is a re-roll of a previous commit,
      a855da29, which was rolled back in
      14347ee4.
      
      It was rolled back because it broke a unit test in image/gif. The
      image/gif code was fixed by 9ef65dbe
      "image/gif: fix frame-inside-image bounds checking".
      
      The original commit message:
      
      image: fix the overlap check in Rectangle.Intersect.
      
      The doc comment for Rectangle.Intersect clearly states, "If the two
      rectangles do not overlap then the zero rectangle will be returned."
      Prior to this fix, calling Intersect on adjacent but non-overlapping
      rectangles would return an empty but non-zero rectangle.
      
      The fix essentially changes
      if r.Min.X > r.Max.X || r.Min.Y > r.Max.Y { etc }
      to
      if r.Min.X >= r.Max.X || r.Min.Y >= r.Max.Y { etc }
      (note that the > signs have become >= signs), but changing that line to:
      if r.Empty() { etc }
      seems clearer (and equivalent).
      
      Change-Id: I2e3af1f1686064a573b2e513b39246fe60c03631
      Reviewed-on: https://go-review.googlesource.com/36734Reviewed-by: 's avatarRob Pike <r@golang.org>
      Run-TryBot: Nigel Tao <nigeltao@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3a209281
    • Josh Bleecher Snyder's avatar
      cmd/compile: use constants directly for fast map access calls · 5faba305
      Josh Bleecher Snyder authored
      CL 35554 taught order.go to use static variables
      for constants that needed to be addressable for runtime routines.
      However, there is one class of runtime routines that
      do not actually need an addressable value: fast map access routines.
      This CL teaches order.go to avoid using static variables
      for addressability in those cases.
      Instead, it avoids introducing a temp at all,
      which the backend would just have to optimize away.
      
      Fixes #19015.
      
      Change-Id: I5ef780c604fac3fb48dabb23a344435e283cb832
      Reviewed-on: https://go-review.googlesource.com/36693Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      5faba305
    • Nigel Tao's avatar
      image/gif: fix frame-inside-image bounds checking. · 9ef65dbe
      Nigel Tao authored
      The semantics of the Go image.Rectangle type is that the In and
      Intersects methods treat empty rectangles specially. There are multiple
      valid representations of an empty image.Rectangle. One of them is the
      zero image.Rectangle but there are others. They're obviously not all
      equal in the == sense, so we shouldn't use != to check GIF's semantics.
      
      This change will allow us to re-roll
      a855da29 "image: fix the overlap check
      in Rectangle.Intersect" which was rolled back in
      14347ee4.
      
      Change-Id: Ie1a0d092510a7bb6170e61adbf334b21361ff9e6
      Reviewed-on: https://go-review.googlesource.com/36639
      Run-TryBot: Nigel Tao <nigeltao@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      9ef65dbe
    • Nathan Caza's avatar
      net/http: improve handling of errors in Dir.Open · ee60d39a
      Nathan Caza authored
      The current implementation fails to produce an "IsNotExist" error on some
      platforms (unix) for certain situations where it would be expected. This causes
      downstream consumers, like FileServer, to emit 500 errors instead of a 404 for
      some non-existant paths on certain platforms but not others.
      
      As an example, os.Open("/index.html/foo") on a unix-type system will return
      syscall.ENOTDIR, which os.IsNotExist cannot return true for (because the
      error code is ambiguous without context). On windows, this same example
      would result in os.IsNotExist returning true -- since the returned error is
      specific.
      
      This change alters Dir.Open to look up the tree for an "IsPermission" or
      "IsNotExist" error to return, or a non-directory, returning os.ErrNotExist in
      the last case. For all other error scenarios, the original error is returned.
      This ensures that downstream code, like FileServer, receive errors that behave
      the same across all platforms.
      
      Fixes #18984
      
      Change-Id: Id7d16591c24cd96afddb6d8ae135ac78da42ed37
      Reviewed-on: https://go-review.googlesource.com/36635Reviewed-by: 's avatarYasuhiro MATSUMOTO <mattn.jp@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ee60d39a
    • Robert Griesemer's avatar
      spec: refer to "not defined type" rather than "unnamed type" in conversions · 866f63e8
      Robert Griesemer authored
      We missed this in https://golang.org/cl/36213.
      Thanks to Chris Hines for pointing it out.
      
      For #18130.
      
      Change-Id: I6279ab19966c4391c4b4458b21fd2527d3f949dd
      Reviewed-on: https://go-review.googlesource.com/36691Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      866f63e8
    • Robert Griesemer's avatar
      cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests · 3fd3171c
      Robert Griesemer authored
      The gcCompat mode was introduced to match the new parser's node position
      setup exactly with the positions used by the original parser. Some of the
      gcCompat adjustments were required to satisfy syntax error test cases,
      and the rest were required to make toolstash cmp pass.
      
      This change removes the former gcCompat adjustments and instead adjusts
      the respective test cases as necessary. In some cases this makes the error
      lines consistent with the ones reported by gccgo.
      
      Where it has changed, the position associated with a given syntactic construct
      is the position (line/col number) of the left-most token belonging to the
      construct.
      
      Change-Id: I5b60c00c5999a895c4d6d6e9b383c6405ccf725c
      Reviewed-on: https://go-review.googlesource.com/36695
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      3fd3171c
  2. 09 Feb, 2017 25 commits
  3. 08 Feb, 2017 4 commits