1. 12 Oct, 2018 7 commits
  2. 11 Oct, 2018 17 commits
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: remove OCMPIFACE/OCMPSTR placeholders · a0d6420d
      Matthew Dempsky authored
      Change-Id: If05f6146a1fd97f61fc71629c5c29df43220d0c8
      Reviewed-on: https://go-review.googlesource.com/c/141638Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      a0d6420d
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: remove OCMPIFACE and OCMPSTR · 28fbbf41
      Matthew Dempsky authored
      Interface and string comparisons don't need separate Ops any more than
      struct or array comparisons do.
      
      Removing them requires shuffling some code around in walk (and a
      little in order), but overall allows simplifying things a bit.
      
      Passes toolstash-check.
      
      Change-Id: I084b8a6c089b768dc76d220379f4daed8a35db15
      Reviewed-on: https://go-review.googlesource.com/c/141637
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      28fbbf41
    • Robert Griesemer's avatar
      go/scanner: don't return token.INVALID for ".." sequence · f64fd66f
      Robert Griesemer authored
      Per the spec, "...the next token is the longest sequence of characters
      that form a valid token." Thus, encountering a ".." sequence should
      return two token.PERIOD tokens rather than a single token.ILLEGAL.
      
      Fixes #28112.
      
      Change-Id: Iba5da841f40036e53f48f9be23f933f362e67f5e
      Reviewed-on: https://go-review.googlesource.com/c/141337Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
      f64fd66f
    • Ian Davis's avatar
      cmd/vet: detect non-pointer arguments for unmarshal and decode · 7fb60eb1
      Ian Davis authored
      Checks usage of Unmarshal and Decode functions in json, gob and
      xml packages to detect attempts to decode into non-pointer types.
      
      Fixes #27564
      
      Change-Id: I07bbd5be82d61834ffde9af9937329d7fb1f05d0
      Reviewed-on: https://go-review.googlesource.com/c/139997
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      7fb60eb1
    • Robert Griesemer's avatar
      go/types: use correct receiver types for embedded interface methods · 76f57845
      Robert Griesemer authored
      Interface methods don't declare a receiver (it's implicit), but after
      type-checking the respective *types.Func objects are marked as methods
      by having a receiver. For interface methods, the receiver base type used
      to be the interface that declared the method in the first place, even if
      the method also appeared in other interfaces via embedding. A change in
      the computation of method sets for interfaces for Go1.10 changed that
      inadvertently, with the consequence that sometimes a method's receiver
      type ended up being an interface into which the method was embedded.
      The exact behavior also depended on file type-checking order, and because
      files are sometimes sorted by name, the behavior depended on file names.
      
      This didn't matter for type-checking (the typechecker doesn't need the
      receiver), but it matters for clients, and for printing of methods.
      
      This change fixes interface method receivers at the end of type-checking
      when we have all relevant information.
      
      Fixes #28005.
      
      Change-Id: I96c120fb0e517d7f8a14b8530f0273674569d5ea
      Reviewed-on: https://go-review.googlesource.com/c/141358Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      76f57845
    • Russ Cox's avatar
      regexp: fix BenchmarkMatch_onepass_regex · 872a5479
      Russ Cox authored
      This benchmark - in contrast to all other benchmarks - was
      running the regexp match on 1-byte substrings of the input
      instead of the entire input. Worse, it was doing so by preallocating
      a slice of slices of every 1-byte substring. Needless to say,
      this does not accurately reflect what happens when the regexp
      matcher is given a large input.
      
      Change-Id: Icd5b95f0e43f554a6b93164916745941366e03d6
      Reviewed-on: https://go-review.googlesource.com/c/139778
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      872a5479
    • Russ Cox's avatar
      regexp: simplify BenchmarkCompileOnepass · e2d70b8b
      Russ Cox authored
      One benchmark is fine.
      Having one per test case is overkill.
      
      Change-Id: Id4ce789484dab1e79026bdd23cbcd63b2eaceb3f
      Reviewed-on: https://go-review.googlesource.com/c/139777
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e2d70b8b
    • Florian's avatar
      doc: add link to the Go Discord forum · 689321e1
      Florian authored
      I've linked the  gophers discord. It's a well administered discord which already got many members, but it was never officially linked. For many people it's a quality proof if a discord is linked on the official page. I think there are much more people out there, who would prefer to use discord instead of slack or irc.
      
      The discord already got many users without even being promoted, so it's very likely there are many people who are interested in a discord, but they don't want to use unofficial discords. This discord shouldn't be seen as a competitor for the slack, it's a platform for those, who don't want to use slack.
      
      Change-Id: Ib1ee7173f394b810f5cccf67b498485ecbf8a7db
      GitHub-Last-Rev: 286ebad994a52f55b685deeda8a86cfac4a9964b
      GitHub-Pull-Request: golang/go#24176
      Reviewed-on: https://go-review.googlesource.com/c/97718Reviewed-by: 's avatarAndrew Bonventre <andybons@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      689321e1
    • Clément Chigot's avatar
      os: add AIX operating system · 835f983d
      Clément Chigot authored
      This commit adds AIX operating system to os package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: Ieb9a2b3ac5b9abd3b5ab68eb732c17b6256d624d
      Reviewed-on: https://go-review.googlesource.com/c/138725Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      835f983d
    • David Chase's avatar
      cmd/compile: repair display of values & blocks in prog column · 69c5830c
      David Chase authored
      This restores the printing of vXX and bYY in the left-hand
      edge of the last column of ssa.html, where the generated
      progs appear.
      
      Change-Id: I81ab9b2fa5ae28e6e5de1b77665cfbed8d14e000
      Reviewed-on: https://go-review.googlesource.com/c/141277
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarYury Smolsky <yury@smolsky.by>
      69c5830c
    • Ben Shi's avatar
      test/codegen: add more arm64 test cases · bac6a292
      Ben Shi authored
      This CL adds 3 combined load test cases for arm64.
      
      Change-Id: I2c67308c40fd8a18f9f2d16c6d12911dcdc583e2
      Reviewed-on: https://go-review.googlesource.com/c/140700
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      bac6a292
    • Clément Chigot's avatar
      path/filepath: add AIX operating system · 1d0e94b1
      Clément Chigot authored
      This commit adds AIX operating system to path/filepath package
      for ppc64 architecture.
      
      Updates: #25893
      
      Change-Id: Iea551236d334705a58a446c8992b20adcfe4159b
      Reviewed-on: https://go-review.googlesource.com/c/138726Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      1d0e94b1
    • Carlos Eduardo Seo's avatar
      cmd/compile: intrinsify TrailingZeros16, OnesCount{8,16} for ppc64x · 23578f9d
      Carlos Eduardo Seo authored
      This change implements TrailingZeros16, OnesCount8 and OnesCount16
      as intrinsics for ppc64x.
      
      benchmark                       old ns/op     new ns/op     delta
      BenchmarkTrailingZeros16-40     2.16          1.61          -25.46%
      
      benchmark                   old ns/op     new ns/op     delta
      BenchmarkOnesCount-40       0.71          0.71          +0.00%
      BenchmarkOnesCount8-40      0.93          0.69          -25.81%
      BenchmarkOnesCount16-40     1.54          0.75          -51.30%
      BenchmarkOnesCount32-40     0.75          0.74          -1.33%
      BenchmarkOnesCount64-40     0.71          0.71          +0.00%
      
      Change-Id: I010fa9c0ef596a09362870d81193c633e70da637
      Reviewed-on: https://go-review.googlesource.com/c/139137
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarLynn Boger <laboger@linux.vnet.ibm.com>
      23578f9d
    • LotusFenn's avatar
      bytes: vary the input alignment to Compare argument in compare_test.go · c96c2a39
      LotusFenn authored
      Currently there are no tests that vary the alignment of Compare arguments.
      Since Compare is written in assembly on most platforms (in internal/bytealg)
      we should be testing different input alignments. This change modifies TestCompare
      to vary the alignment of the second argument of Compare.
      
      Updates #26129
      
      Change-Id: I4c30a5adf96a41225df748675f4e9beea413b35c
      Reviewed-on: https://go-review.googlesource.com/c/122536Reviewed-by: 's avatarLotus Fenn <fenn.lotus@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c96c2a39
    • Rob Pike's avatar
      text/template: explain that integer constants can overflow · 9a9dc36f
      Rob Pike authored
      This behavior is the same as in Go: constants can be coerced to int
      and whether overflow occurs depends on how big an int is, but
      this surprises people sometimes, so document it again here.
      
      Fixes #25833.
      
      Change-Id: I557995f1a1e8e871b21004953923d16f36cb9037
      Reviewed-on: https://go-review.googlesource.com/c/141378Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9a9dc36f
    • Rob Pike's avatar
      unsafe: document that Alignof, Offsetof, and Sizeof return a constant · daf6f254
      Rob Pike authored
      Nothing is changing but the documentation, which did not mention
      this property of these functions.
      
      Fixes #27587.
      
      Change-Id: I75bcee4a1dd9ec8cd82826c9a6e02ba7d599f719
      Reviewed-on: https://go-review.googlesource.com/c/141377Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      daf6f254
    • Ben Shi's avatar
      cmd/compile: optimize 386's ADDLconstmodifyidx4 · 27965c14
      Ben Shi authored
      This CL optimize ADDLconstmodifyidx4 to INCL/DECL, when the
      constant is +1/-1.
      
      1. The total size of pkg/linux_386/ decreases 28 bytes, excluding
      cmd/compile.
      
      2. There is no regression in the go1 benchmark test, excluding noise.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              3.25s ± 2%     3.23s ± 3%  -0.70%  (p=0.040 n=30+30)
      Fannkuch11-4                3.50s ± 1%     3.47s ± 1%  -0.68%  (p=0.000 n=30+30)
      FmtFprintfEmpty-4          44.6ns ± 3%    44.8ns ± 3%  +0.46%  (p=0.029 n=30+30)
      FmtFprintfString-4         79.0ns ± 3%    78.7ns ± 3%    ~     (p=0.053 n=30+30)
      FmtFprintfInt-4            89.2ns ± 2%    89.4ns ± 3%    ~     (p=0.665 n=30+29)
      FmtFprintfIntInt-4          142ns ± 3%     142ns ± 3%    ~     (p=0.435 n=30+30)
      FmtFprintfPrefixedInt-4     182ns ± 2%     182ns ± 2%    ~     (p=0.964 n=30+30)
      FmtFprintfFloat-4           407ns ± 3%     411ns ± 4%    ~     (p=0.080 n=30+30)
      FmtManyArgs-4               597ns ± 3%     593ns ± 4%    ~     (p=0.222 n=30+30)
      GobDecode-4                7.09ms ± 6%    7.07ms ± 7%    ~     (p=0.633 n=30+30)
      GobEncode-4                6.81ms ± 9%    6.81ms ± 8%    ~     (p=0.982 n=30+30)
      Gzip-4                      398ms ± 4%     400ms ± 6%    ~     (p=0.177 n=30+30)
      Gunzip-4                   41.3ms ± 3%    40.6ms ± 4%  -1.71%  (p=0.005 n=30+30)
      HTTPClientServer-4         63.4µs ± 3%    63.4µs ± 4%    ~     (p=0.646 n=30+28)
      JSONEncode-4               16.0ms ± 3%    16.1ms ± 3%    ~     (p=0.057 n=30+30)
      JSONDecode-4               63.3ms ± 8%    63.1ms ± 7%    ~     (p=0.786 n=30+30)
      Mandelbrot200-4            5.17ms ± 3%    5.15ms ± 8%    ~     (p=0.654 n=30+30)
      GoParse-4                  3.24ms ± 3%    3.23ms ± 2%    ~     (p=0.091 n=30+30)
      RegexpMatchEasy0_32-4       103ns ± 4%     103ns ± 4%    ~     (p=0.575 n=30+30)
      RegexpMatchEasy0_1K-4       823ns ± 2%     821ns ± 3%    ~     (p=0.827 n=30+30)
      RegexpMatchEasy1_32-4       113ns ± 3%     112ns ± 3%    ~     (p=0.076 n=30+30)
      RegexpMatchEasy1_1K-4      1.02µs ± 4%    1.01µs ± 5%    ~     (p=0.087 n=30+30)
      RegexpMatchMedium_32-4      129ns ± 3%     127ns ± 4%  -1.55%  (p=0.009 n=30+30)
      RegexpMatchMedium_1K-4     39.3µs ± 4%    39.7µs ± 3%    ~     (p=0.054 n=30+30)
      RegexpMatchHard_32-4       2.15µs ± 4%    2.15µs ± 4%    ~     (p=0.712 n=30+30)
      RegexpMatchHard_1K-4       66.0µs ± 3%    65.1µs ± 3%  -1.32%  (p=0.002 n=30+30)
      Revcomp-4                   1.85s ± 2%     1.85s ± 3%    ~     (p=0.168 n=30+30)
      Template-4                 69.5ms ± 7%    68.9ms ± 6%    ~     (p=0.250 n=28+28)
      TimeParse-4                 434ns ± 3%     432ns ± 4%    ~     (p=0.629 n=30+30)
      TimeFormat-4                403ns ± 4%     408ns ± 3%  +1.23%  (p=0.019 n=30+29)
      [Geo mean]                 65.5µs         65.3µs       -0.20%
      
      name                     old speed      new speed      delta
      GobDecode-4               108MB/s ± 6%   109MB/s ± 6%    ~     (p=0.636 n=30+30)
      GobEncode-4               113MB/s ±10%   113MB/s ± 9%    ~     (p=0.982 n=30+30)
      Gzip-4                   48.8MB/s ± 4%  48.6MB/s ± 5%    ~     (p=0.178 n=30+30)
      Gunzip-4                  470MB/s ± 3%   479MB/s ± 4%  +1.72%  (p=0.006 n=30+30)
      JSONEncode-4              121MB/s ± 3%   120MB/s ± 3%    ~     (p=0.057 n=30+30)
      JSONDecode-4             30.7MB/s ± 8%  30.8MB/s ± 8%    ~     (p=0.784 n=30+30)
      GoParse-4                17.9MB/s ± 3%  17.9MB/s ± 2%    ~     (p=0.090 n=30+30)
      RegexpMatchEasy0_32-4     309MB/s ± 4%   309MB/s ± 3%    ~     (p=0.530 n=30+30)
      RegexpMatchEasy0_1K-4    1.24GB/s ± 2%  1.25GB/s ± 3%    ~     (p=0.976 n=30+30)
      RegexpMatchEasy1_32-4     282MB/s ± 3%   284MB/s ± 3%  +0.81%  (p=0.041 n=30+30)
      RegexpMatchEasy1_1K-4    1.00GB/s ± 3%  1.01GB/s ± 4%    ~     (p=0.091 n=30+30)
      RegexpMatchMedium_32-4   7.71MB/s ± 3%  7.84MB/s ± 4%  +1.71%  (p=0.000 n=30+30)
      RegexpMatchMedium_1K-4   26.1MB/s ± 4%  25.8MB/s ± 3%    ~     (p=0.051 n=30+30)
      RegexpMatchHard_32-4     14.9MB/s ± 4%  14.9MB/s ± 4%    ~     (p=0.712 n=30+30)
      RegexpMatchHard_1K-4     15.5MB/s ± 3%  15.7MB/s ± 3%  +1.34%  (p=0.003 n=30+30)
      Revcomp-4                 138MB/s ± 2%   137MB/s ± 3%    ~     (p=0.174 n=30+30)
      Template-4               28.0MB/s ± 6%  28.2MB/s ± 6%    ~     (p=0.251 n=28+28)
      [Geo mean]               82.3MB/s       82.6MB/s       +0.36%
      
      Change-Id: I389829699ffe9500a013fcf31be58a97e98043e1
      Reviewed-on: https://go-review.googlesource.com/c/140701
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      27965c14
  3. 10 Oct, 2018 16 commits
    • Matthew Dempsky's avatar
      cmd/compile/internal/types: regen stringer file · 5b2030cb
      Matthew Dempsky authored
      Forgot to do this for golang.org/cl/76312.
      
      Change-Id: Ic20fef3eeff14a805f608221aff1fa03934be3ca
      Reviewed-on: https://go-review.googlesource.com/c/141357
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5b2030cb
    • Rob Pike's avatar
      cmd/doc: add a -src flag to show original source · 294d16c9
      Rob Pike authored
      It's long-desired but was blocked by #26835. That is now fixed, so
      it's easy. When -src is off, we behave as before. But with -src
      set, initialize the go/doc package to preserve the original AST and
      things flow very easily.
      
      With -src, since you're seeing inside the package source anyway it
      shows unexported fields and constants: you see the original source.
      But you still need -u to ask about them.
      
      Fixes #18807
      
      Change-Id: I473e90323b4eff0735360274dc0d2d9dba16ff8b
      Reviewed-on: https://go-review.googlesource.com/c/140959Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      Run-TryBot: Andrew Gerrand <adg@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      294d16c9
    • Rob Pike's avatar
      go/doc: add new mode bit PreserveAST to control clearing of data in AST · d5e72203
      Rob Pike authored
      To save memory in godoc, this package routinely clears fields of
      the AST to avoid keeping data that godoc no longer needs. For other
      programs, such as cmd/doc, this behavior is unfortunate. Also, one
      should be able to tell any package like this, "don't change my
      data".
      
      Add a Mode bit, defaulting to off to preserve existing behavior,
      that allows a client to specify that the AST is inviolate.
      
      This is necessary to address some of the outstanding issues
      in cmd/doc that require, for example, looking at function bodies.
      
      Fixes #26835
      
      Change-Id: I01cc97c6addc5ab6abff885fff4bd53454a03bbc
      Reviewed-on: https://go-review.googlesource.com/c/140958Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      d5e72203
    • Josh Bleecher Snyder's avatar
      cmd/compile: remove some inl budget hacks · 555d8c45
      Josh Bleecher Snyder authored
      Prior to stack tracing, inlining could cause
      dead pointers to be kept alive in some loops.
      See #18336 and CL 31674.
      
      The adjustment removed by this change preserved the inlining status quo
      in the face of Node structure changes, to avoid creating new problems.
      Now that stack tracing provides precision, these hacks can be removed.
      
      Of course, our inlining code model is already hacky (#17566),
      but at least now there will be fewer epicyclical hacks.
      
      Newly inline-able functions in std cmd as a result of this change:
      
      hash/adler32/adler32.go:65:6: can inline (*digest).UnmarshalBinary
      hash/fnv/fnv.go:281:6: can inline (*sum32).UnmarshalBinary
      hash/fnv/fnv.go:292:6: can inline (*sum32a).UnmarshalBinary
      reflect/value.go:1298:6: can inline Value.OverflowComplex
      compress/bzip2/bit_reader.go:25:6: can inline newBitReader
      encoding/xml/xml.go:365:6: can inline (*Decoder).switchToReader
      vendor/golang_org/x/crypto/cryptobyte/builder.go:77:6: can inline (*Builder).AddUint16
      crypto/x509/x509.go:1851:58: can inline buildExtensions.func2.1.1
      crypto/x509/x509.go:1871:58: can inline buildExtensions.func2.3.1
      crypto/x509/x509.go:1883:58: can inline buildExtensions.func2.4.1
      cmd/vet/internal/cfg/builder.go:463:6: can inline (*builder).labeledBlock
      crypto/tls/handshake_messages.go:1450:6: can inline (*newSessionTicketMsg).marshal
      crypto/tls/handshake_server.go:769:6: can inline (*serverHandshakeState).clientHelloInfo
      crypto/tls/handshake_messages.go:1171:6: can inline (*nextProtoMsg).unmarshal
      cmd/link/internal/amd64/obj.go:40:6: can inline Init
      cmd/link/internal/ppc64/obj.go:40:6: can inline Init
      net/http/httputil/persist.go:54:6: can inline NewServerConn
      net/http/fcgi/child.go:83:6: can inline newResponse
      cmd/compile/internal/ssa/poset.go:245:6: can inline (*poset).newnode
      
      Change-Id: I19e8e383a6273849673d35189a9358870665f82f
      Reviewed-on: https://go-review.googlesource.com/c/141117
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      555d8c45
    • Tobias Klauser's avatar
      syscall: add marker comments to zsyscall_{aix,solaris}_*.go · fa0c15ea
      Tobias Klauser authored
      These marker comments are in every other zsyscall_*.go file generated by
      mksyscall.pl. Also add them to the files generated by mksyscall_libc.pl
      used for aix and solaris.
      
      Change-Id: I7fd125df3549d83c658bbe7424861c76c024f2e5
      Reviewed-on: https://go-review.googlesource.com/c/141037
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      fa0c15ea
    • Clément Chigot's avatar
      net: add AIX operating system · 9ff11b02
      Clément Chigot authored
      This commit adds AIX operating system to net package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I46bbc7b03931019beb969443cb3f9a756956c66c
      Reviewed-on: https://go-review.googlesource.com/c/138724
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9ff11b02
    • Keith Randall's avatar
      cmd/compile: make []byte("...") more efficient · ceb0c371
      Keith Randall authored
      Do []byte(string) conversions more efficiently when the string
      is a constant. Instead of calling stringtobyteslice, allocate
      just the space we need and encode the initialization directly.
      
      []byte("foo") rewrites to the following pseudocode:
      
      var s [3]byte // on heap or stack, depending on whether b escapes
      s = *(*[3]byte)(&"foo"[0]) // initialize s from the string
      b = s[:]
      
      which generates this assembly:
      
      	0x001d 00029 (tmp1.go:9)	LEAQ	type.[3]uint8(SB), AX
      	0x0024 00036 (tmp1.go:9)	MOVQ	AX, (SP)
      	0x0028 00040 (tmp1.go:9)	CALL	runtime.newobject(SB)
      	0x002d 00045 (tmp1.go:9)	MOVQ	8(SP), AX
      	0x0032 00050 (tmp1.go:9)	MOVBLZX	go.string."foo"+2(SB), CX
      	0x0039 00057 (tmp1.go:9)	MOVWLZX	go.string."foo"(SB), DX
      	0x0040 00064 (tmp1.go:9)	MOVW	DX, (AX)
      	0x0043 00067 (tmp1.go:9)	MOVB	CL, 2(AX)
      // Then the slice is b = {AX, 3, 3}
      
      The generated code is still not optimal, as it still does load/store
      from read-only memory instead of constant stores.  Next CL...
      
      Update #26498
      Fixes #10170
      
      Change-Id: I4b990b19f9a308f60c8f4f148934acffefe0a5bd
      Reviewed-on: https://go-review.googlesource.com/c/140698
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      ceb0c371
    • Clément Chigot's avatar
      mime: add AIX operating system · 05581fcc
      Clément Chigot authored
      This commit adds AIX operating system to mime package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I1b81a9204446c8c76ae24ea5c6fd33077c373ae4
      Reviewed-on: https://go-review.googlesource.com/c/138723
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      05581fcc
    • Clément Chigot's avatar
      crypto: add AIX operating system · 29907b13
      Clément Chigot authored
      This commit adds AIX operating system to crypto package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I20047ff2fef0051b8b235ec15b064c4a95c2b9c3
      Reviewed-on: https://go-review.googlesource.com/c/138722
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      29907b13
    • Clément Chigot's avatar
      time: add AIX operating system · 1c88ce5f
      Clément Chigot authored
      This commit adds AIX operating system to time package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I4fb6fb47eae7671bf4e22729d6d160f557083c44
      Reviewed-on: https://go-review.googlesource.com/c/138721
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      1c88ce5f
    • Lynn Boger's avatar
      cmd/internal/obj/ppc64: generate float 0 more efficiently on ppc64x · f776d51b
      Lynn Boger authored
      This change makes use of a VSX instruction to generate the
      float 0 value instead of generating a constant in memory and
      loading it from there.
      
      This uses 1 instruction instead of 2 and avoids a memory reference.
      in the +0 case, uses 2 instructions in the -0 case but avoids
      the memory reference.
      
      Since this is done in the assembler for ppc64x, an update has
      been made to the assembler test.
      
      Change-Id: Ief7dddcb057bfb602f78215f6947664e8c841464
      Reviewed-on: https://go-review.googlesource.com/c/139420Reviewed-by: 's avatarMichael Munday <mike.munday@ibm.com>
      f776d51b
    • Clément Chigot's avatar
      syscall: add AIX operating system · 8f9902da
      Clément Chigot authored
      This commit adds AIX operating system to syscall package for ppc64
      architecture.
      It also adds the file syscall_aix.go in the runtime package for
      syscalls needed during fork and exec.
      
      Updates: #25893
      
      Change-Id: I301b1051b178a3efb7bbc39cdbd8e00b594d65ef
      Reviewed-on: https://go-review.googlesource.com/c/138720
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      8f9902da
    • Brad Fitzpatrick's avatar
      net/http/httputil: fix race/crash in previous ReverseProxy change · c870d56f
      Brad Fitzpatrick authored
      The previous ReverseProxy change, CL 137335, introduced a bug which could cause
      a race and/or a crash.
      
      This reliably crashed before:
      
      $ go test -short -race -v -run=TestReverseProxyFlushInterval -count=20 net/http/httputil
      
      The problem was a goroutine was running http.ResponseWriter.Flush
      after the http.Handler's ServeHTTP completed. There was code to
      prevent that (a deferred stop call) but the stop call didn't consider
      the case where time.AfterFunc had already fired off a new goroutine
      but that goroutine hadn't yet scheduled.
      
      Change-Id: I06357908465a3b953efc33e63c70dec19a501adf
      Reviewed-on: https://go-review.googlesource.com/c/140977
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
      c870d56f
    • Wil Selwood's avatar
      testing: try to Log through parent if test has completed · 95d06ab6
      Wil Selwood authored
      If the test has already completed when a go routine with a panic
      handler reports an error the location of the error call is lost.
      
      Added logDepth to be able to log location of failure at different
      depths down the stack.
      
      Fixes #26720
      
      Change-Id: I8b7789ddae757ef6f4bd315cb20356709f4fadec
      Reviewed-on: https://go-review.googlesource.com/c/127596
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      95d06ab6
    • Clément Chigot's avatar
      syscall: change solaris files to libc files · 49be65ee
      Clément Chigot authored
      AIX and Solaris both requires libc to make any syscalls and their
      implementation is really similar.
      Therefore, Solaris files reused by AIX have their name changed to *_libc.
      
      exec_libc.go is also adapted to AIX.
      
      Updates: #25893
      
      Change-Id: I50d1d7b964831637013d5e64799187cd9565c42b
      Reviewed-on: https://go-review.googlesource.com/c/138719
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      49be65ee
    • Muhammad Falak R Wani's avatar
      runtime/cgo: annotate unused variable with __attribute__((unused)) · dc2ae288
      Muhammad Falak R Wani authored
      Fixes #28095
      
      Change-Id: Id8668d52986c9805213e8847f49fe42dfde2e01a
      Reviewed-on: https://go-review.googlesource.com/c/140797
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      dc2ae288