)]}'
{
  "commit": "902c7a9c9294de0f4edaf715f55e2064f983a69c",
  "tree": "02240609ecfb91d91904d566bd5c2a177c07fb18",
  "parents": [
    "c43693cde27affba1cb784068c554f1d07f90559"
  ],
  "author": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Thu Jun 25 16:00:25 2026 -0400"
  },
  "committer": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Tue Jun 30 11:48:01 2026 -0700"
  },
  "message": "gopls/internal/cache: share objectpath Encoder across batch\n\nThis CL causes an entire batch of type checking to share one\nobjectpath.Encoder. Since type checking is concurrent, this\nrequires serializing access to the encoder state. This could be\ndone by an external mutex, but it is cleaner to make Encoder\ndo the locking itself, since it can avoid it for most queries.\n\nThis reduces the CPU usage of objectpath.Encoder in a clean\n\u0027gopls check cmd/kubelet\u0027 from 22.0s to 10.4s.\n(It was previously about 16% of total CPU; now only 9%)\n\nSimilar amortizations are applied to various batched\nindex construction operations such as method-sets and xrefs.\n\nThanks to Brian Dillmann at Cockroach Labs for the idea\n(github.com/golang/tools/pull/651).\n\nChange-Id: Ie5284e01c7ddbd28baa52281908a5deca3908003\nReviewed-on: https://go-review.googlesource.com/c/tools/+/794560\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0d6d0bced0fae9762d6281a81e8703c525fce580",
      "old_mode": 33188,
      "old_path": "go/types/objectpath/objectpath.go",
      "new_id": "9c7401c9ba51f5995523ca5f669f030575b0a662",
      "new_mode": 33188,
      "new_path": "go/types/objectpath/objectpath.go"
    },
    {
      "type": "modify",
      "old_id": "4bca59f1e87a0f997e9179912d187356cbad489c",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/check.go",
      "new_id": "6ab6c29cf447ea33d403389e732f4043c78e2798",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/check.go"
    },
    {
      "type": "modify",
      "old_id": "5936bd182e8eeeabca55c5f41755b3d041756ae9",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/methodsets/methodsets.go",
      "new_id": "5c33d120c7176f3d8b15eaef37137331828c6c10",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/methodsets/methodsets.go"
    },
    {
      "type": "modify",
      "old_id": "d0d90bbc403d68120fe49a1a5e8bb55488cdfbaf",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/package.go",
      "new_id": "d69bf6e220fe37ef2a3f2ada73b9fceef1489d9c",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/package.go"
    },
    {
      "type": "modify",
      "old_id": "a66133de9e5f28be32e7b5d5bba8c02e99d254a3",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/snapshot.go",
      "new_id": "ee1e8b89af8384874ee70d825bbba154ff473185",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/snapshot.go"
    },
    {
      "type": "modify",
      "old_id": "bc15c04ed9185e299320a9cb015077f4f7c01ef4",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/xrefs/xrefs.go",
      "new_id": "c10c0d7285833bcfc2e352db58f78675f1b016ce",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/xrefs/xrefs.go"
    }
  ]
}
