)]}'
{
  "commit": "77ccb16eb12f461eaea5fdf652a2e929dc154192",
  "tree": "254c4fb61ef0df8da7efe617513e4667f8f3c563",
  "parents": [
    "5d1828269540fa7ba1dee60ce6b4a938463a696f"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Tue Feb 24 12:19:01 2015 -0500"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Thu Feb 26 17:36:00 2015 +0000"
  },
  "message": "cmd/internal/gc: transitive inlining\n\nInlining refuses to inline bodies containing an actual function call, so that\nif that call or a child uses runtime.Caller it cannot observe\nthe inlining.\n\nHowever, inlining was also refusing to inline bodies that contained\nfunction calls that were themselves inlined away. For example:\n\n\tfunc f() int {\n\t\treturn f1()\n\t}\n\n\tfunc f1() int {\n\t\treturn f2()\n\t}\n\n\tfunc f2() int {\n\t\treturn 2\n\t}\n\nThe f2 call in f1 would be inlined, but the f1 call in f would not,\nbecause f1\u0027s call to f2 blocked the inlining, despite itself eventually\nbeing inlined away.\n\nAccount properly for this kind of transitive inlining and enable.\n\nAlso bump the inlining budget a bit, so that the runtime\u0027s\nheapBits.next is inlined.\n\nThis reduces the time for \u00276g *.go\u0027 in html/template by around 12% (!).\n(For what it\u0027s worth, closing Chrome reduces the time by about 17%.)\n\nChange-Id: If1aa673bf3e583082dcfb5f223e67355c984bfc1\nReviewed-on: https://go-review.googlesource.com/5952\nReviewed-by: Austin Clements \u003caustin@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b87dcf7370c2440ab98ff8f2c3636c22ab0797c1",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/gc/go.go",
      "new_id": "a1debbd9d6ea5cfab95f34f24319e309c052ef04",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/gc/go.go"
    },
    {
      "type": "modify",
      "old_id": "8b088a7f7f45ebe123010465f1738ac2fe094770",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/gc/inl.go",
      "new_id": "57a0ab6502bf669c16a607104ab651aad1ed8972",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/gc/inl.go"
    },
    {
      "type": "modify",
      "old_id": "55c8d76bc246fe8b99970b0be95ed1d77d19e846",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/gc/lex.go",
      "new_id": "2c90e7e06267ed38f0e5af5310266f971e4012b7",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/gc/lex.go"
    },
    {
      "type": "modify",
      "old_id": "83bc8eb123dd976c93d2dfb3fefc131fb56efde1",
      "old_mode": 33188,
      "old_path": "test/escape4.go",
      "new_id": "248f8a96b977696c380482a934baf49d9902345e",
      "new_mode": 33188,
      "new_path": "test/escape4.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "54f7b3efb19dd421377d87a2fab958bc5e52d8fc",
      "new_mode": 33188,
      "new_path": "test/inline.go"
    }
  ]
}
