)]}'
{
  "commit": "67c2dcbc592f3ee03aa89ddcb1f07715b047f4b2",
  "tree": "926964cc6b29712cadf20e85c3d352d39454c64f",
  "parents": [
    "7af6a31b48c5cb4d8cc9ca346949d1143ece76ca"
  ],
  "author": {
    "name": "Michael Anthony Knyszek",
    "email": "mknyszek@google.com",
    "time": "Mon Jan 27 20:41:38 2020 +0000"
  },
  "committer": {
    "name": "Michael Knyszek",
    "email": "mknyszek@google.com",
    "time": "Mon Mar 23 17:07:22 2020 +0000"
  },
  "message": "runtime: use OnesCount64 to count allocated objects in a span\n\nThis change modifies the implementation of (*mspan).countAlloc by\nusing OnesCount64 (which on many systems is intrinsified). It does so by\nusing an unsafe pointer cast, but in this case we don\u0027t care about\nendianness because we\u0027re just counting bits set.\n\nThis change means we no longer need the popcnt table which was redundant\nin the runtime anyway. We can also simplify the logic here significantly\nby observing that mark bits allocations are always 8-byte aligned, so we\ndon\u0027t need to handle any edge-cases due to the fact that OnesCount64\noperates on 64 bits at a time: all irrelevant bits will be zero.\n\nOverall, this implementation is significantly faster than the old one on\namd64, and should be similarly faster (or better!) on other systems\nwhich support the intrinsic. On systems which do not, it should be\nroughly the same performance because OnesCount64 is implemented using a\ntable in the general case.\n\nResults on linux/amd64:\n\nname                         old time/op  new time/op  delta\nMSpanCountAlloc/bits\u003d64-4    16.8ns ± 0%  12.7ns ± 0%  -24.40%  (p\u003d0.000 n\u003d5+4)\nMSpanCountAlloc/bits\u003d128-4   23.5ns ± 0%  12.8ns ± 0%  -45.70%  (p\u003d0.000 n\u003d4+5)\nMSpanCountAlloc/bits\u003d256-4   43.5ns ± 0%  12.8ns ± 0%  -70.67%  (p\u003d0.000 n\u003d4+5)\nMSpanCountAlloc/bits\u003d512-4   59.5ns ± 0%  15.4ns ± 0%  -74.12%  (p\u003d0.008 n\u003d5+5)\nMSpanCountAlloc/bits\u003d1024-4   116ns ± 1%    23ns ± 0%  -79.84%  (p\u003d0.000 n\u003d5+4)\n\nChange-Id: Id4c994be22224653af5333683a69b0937130ed04\nReviewed-on: https://go-review.googlesource.com/c/go/+/216558\nRun-TryBot: Michael Knyszek \u003cmknyszek@google.com\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\nReviewed-by: Austin Clements \u003caustin@google.com\u003e\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2045789fa4f837f3f5711b08286072a51444669a",
      "old_mode": 33188,
      "old_path": "src/runtime/mbitmap.go",
      "new_id": "35332c91c44c800d449259869d1938d09dc8b198",
      "new_mode": 33188,
      "new_path": "src/runtime/mbitmap.go"
    }
  ]
}
