)]}'
{
  "commit": "fff4f599fe1c21e411a99de5c9b3777d06ce0ce6",
  "tree": "8e048033606759d2e1ad5bb11085a5188ba3cdd0",
  "parents": [
    "8343a0934df8f437938c55a6f0ff120c7c24a8bb"
  ],
  "author": {
    "name": "Keith Randall",
    "email": "keithr@alum.mit.edu",
    "time": "Thu Apr 11 09:50:59 2019 -0700"
  },
  "committer": {
    "name": "Keith Randall",
    "email": "khr@golang.org",
    "time": "Tue Jun 04 17:35:20 2019 +0000"
  },
  "message": "cmd/compile,runtime: allocate defer records on the stack\n\nWhen a defer is executed at most once in a function body,\nwe can allocate the defer record for it on the stack instead\nof on the heap.\n\nThis should make defers like this (which are very common) faster.\n\nThis optimization applies to 363 out of the 370 static defer sites\nin the cmd/go binary.\n\nname     old time/op  new time/op  delta\nDefer-4  52.2ns ± 5%  36.2ns ± 3%  -30.70%  (p\u003d0.000 n\u003d10+10)\n\nFixes #6980\nUpdate #14939\n\nChange-Id: I697109dd7aeef9e97a9eeba2ef65ff53d3ee1004\nReviewed-on: https://go-review.googlesource.com/c/go/+/171758\nRun-TryBot: Keith Randall \u003ckhr@golang.org\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\nReviewed-by: Austin Clements \u003caustin@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ded9439a14cc4bc3ad467ef2c688a73a8166139c",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/esc.go",
      "new_id": "c42f25e104651e33daba18415d69108de8eb0c16",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/esc.go"
    },
    {
      "type": "modify",
      "old_id": "88dc9ef8a87d8b362c54d2c8cbdc5dbdba320cd6",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/escape.go",
      "new_id": "47ce853858e978eb0e25de97c46d0b3bb681dc9a",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/escape.go"
    },
    {
      "type": "modify",
      "old_id": "6123e6acc17c5190c06535e76f924789677e059c",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/go.go",
      "new_id": "85718e3205bff672974d2b6bde460e7bec6738a3",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/go.go"
    },
    {
      "type": "modify",
      "old_id": "04707b9ad20c3d9ab9f22afb6d843da0047e16b0",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/reflect.go",
      "new_id": "085481771332d0fbea6568c429a2261ca13652ec",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/reflect.go"
    },
    {
      "type": "modify",
      "old_id": "8637d725ada80395b296a63da11abe606410d713",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/ssa.go",
      "new_id": "744c37ffc1fb60b22f4a1ae81fb6d9552289c948",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/ssa.go"
    },
    {
      "type": "modify",
      "old_id": "efa007aa974c4e0f2320252a43a234d9115dca85",
      "old_mode": 33188,
      "old_path": "src/runtime/mgcmark.go",
      "new_id": "2c6372447277546bdbe5d74a26b17ab51eedd470",
      "new_mode": 33188,
      "new_path": "src/runtime/mgcmark.go"
    },
    {
      "type": "modify",
      "old_id": "f39a4bc0a25ca37500e72e91b212d44e8ac58a0f",
      "old_mode": 33188,
      "old_path": "src/runtime/panic.go",
      "new_id": "ce26eb540d4a8acb556f2654b1fabd3a48197aeb",
      "new_mode": 33188,
      "new_path": "src/runtime/panic.go"
    },
    {
      "type": "modify",
      "old_id": "bc5b48222b11048ce8b959a1ec4db080693f2c97",
      "old_mode": 33188,
      "old_path": "src/runtime/runtime2.go",
      "new_id": "16c02cd1edda2faed3eaf82e35f21282dfa69bf6",
      "new_mode": 33188,
      "new_path": "src/runtime/runtime2.go"
    },
    {
      "type": "modify",
      "old_id": "d5d09ba7d7bef9757b530d3bdba2b1053f015cfa",
      "old_mode": 33188,
      "old_path": "src/runtime/stack.go",
      "new_id": "c32d9e804236276f093501f9b2f7f8d260dfc3ad",
      "new_mode": 33188,
      "new_path": "src/runtime/stack.go"
    },
    {
      "type": "modify",
      "old_id": "df73b3a1d5f99c794e84306d64f63fcc22c45a5a",
      "old_mode": 33188,
      "old_path": "src/runtime/stack_test.go",
      "new_id": "143d3a99a0eba63d8b27ff5d7083bc13e5c65e1c",
      "new_mode": 33188,
      "new_path": "src/runtime/stack_test.go"
    },
    {
      "type": "modify",
      "old_id": "18e64dd5f7b7e623fd4457b8da2c192266aae345",
      "old_mode": 33188,
      "old_path": "src/runtime/stubs.go",
      "new_id": "26aaf2224d519feb1b4d4343635a5adb0bdf7259",
      "new_mode": 33188,
      "new_path": "src/runtime/stubs.go"
    },
    {
      "type": "modify",
      "old_id": "36ad7511af86b5ed8739770b35de95cd4bd049fc",
      "old_mode": 33188,
      "old_path": "src/runtime/syscall_windows.go",
      "new_id": "722a73d108e7f3d647c77cad7d5b5a5983d8f9d0",
      "new_mode": 33188,
      "new_path": "src/runtime/syscall_windows.go"
    },
    {
      "type": "modify",
      "old_id": "d8170185014784512764f44f38d933bab7131f5b",
      "old_mode": 33188,
      "old_path": "src/runtime/traceback.go",
      "new_id": "ef48c9fa1f9b888acee43185599a3c2e30ed7b44",
      "new_mode": 33188,
      "new_path": "src/runtime/traceback.go"
    },
    {
      "type": "modify",
      "old_id": "ca3762228697f78e0ee0930f05119c1392b98ef7",
      "old_mode": 33188,
      "old_path": "test/codegen/stack.go",
      "new_id": "37d378aa7877373e350d7512272166a17feddc48",
      "new_mode": 33188,
      "new_path": "test/codegen/stack.go"
    },
    {
      "type": "modify",
      "old_id": "e7134eca0cede8dfafb050ce434197569eb21d7e",
      "old_mode": 33188,
      "old_path": "test/live.go",
      "new_id": "ec51193725d100679b4b0324db62310d339e33eb",
      "new_mode": 33188,
      "new_path": "test/live.go"
    }
  ]
}
