1. 11 Nov, 2019 4 commits
    • Michael Munday's avatar
      cmd/compile, runtime: intrinsify atomic And8 and Or8 on s390x · b3885dbc
      Michael Munday authored
      Intrinsify these functions to match other platforms. Update the
      sequence of instructions used in the assembly implementations to
      match the intrinsics.
      
      Also, add a micro benchmark so we can more easily measure the
      performance of these two functions:
      
      name            old time/op  new time/op  delta
      And8-8          5.33ns ± 7%  2.55ns ± 8%  -52.12%  (p=0.000 n=20+20)
      And8Parallel-8  7.39ns ± 5%  3.74ns ± 4%  -49.34%  (p=0.000 n=20+20)
      Or8-8           4.84ns ±15%  2.64ns ±11%  -45.50%  (p=0.000 n=20+20)
      Or8Parallel-8   7.27ns ± 3%  3.84ns ± 4%  -47.10%  (p=0.000 n=19+20)
      
      By using a 'rotate then xor selected bits' instruction combined with
      either a 'load and and' or a 'load and or' instruction we can
      implement And8 and Or8 with far fewer instructions. Replacing
      'compare and swap' with atomic instructions may also improve
      performance when there is contention.
      
      Change-Id: I28bb8032052b73ae8ccdf6e4c612d2877085fa01
      Reviewed-on: https://go-review.googlesource.com/c/go/+/204277
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b3885dbc
    • Cherry Zhang's avatar
      runtime: don't save G during VDSO if we're handling signal · 75c839af
      Cherry Zhang authored
      On some platforms (currently ARM and ARM64), when calling into
      VDSO we store the G to the gsignal stack, if there is one, so if
      we receive a signal during VDSO we can find the G.
      
      If we receive a signal during VDSO, and within the signal handler
      we call nanotime again (e.g. when handling profiling signal),
      we'll save/clear the G slot on the gsignal stack again, which
      clobbers the original saved G. If we receive a second signal
      during the same VDSO execution, we will fetch a nil G, which will
      lead to bad things such as deadlock.
      
      Don't save G if we're calling VDSO code from the gsignal stack.
      Saving G is not necessary as we won't receive a nested signal.
      
      Fixes #35473.
      
      Change-Id: Ibfd8587a3c70c2f1533908b056e81b94d75d65a5
      Reviewed-on: https://go-review.googlesource.com/c/go/+/206397
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      75c839af
    • Bryan C. Mills's avatar
      runtime/pprof: skip checks for inlined functions when inlining is disabled · c31bcd13
      Bryan C. Mills authored
      Fixes #35463
      
      Change-Id: I29af27b77cc651395c20570943847729ff12586c
      Reviewed-on: https://go-review.googlesource.com/c/go/+/206297
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c31bcd13
    • DQNEO's avatar
      cmd/compile: rename sizeof_Array and array_* to slice_* · f07059d9
      DQNEO authored
      Renames variables sizeof_Array and other array_* variables
      that were actually intended for slices and not arrays.
      
      Change-Id: I391b95880cc77cabb8472efe694b7dd19545f31a
      Reviewed-on: https://go-review.googlesource.com/c/go/+/180919Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f07059d9
  2. 10 Nov, 2019 8 commits
  3. 09 Nov, 2019 6 commits
  4. 08 Nov, 2019 22 commits