)]}'
{
  "commit": "d170d3edd77aa571e65ff51ff382b90e9b00f40b",
  "tree": "a74daac1bbf90bef5b80f734409db522d370cdb6",
  "parents": [
    "688840593bf7e5a7de89e4f60e4414bd857dbdbc"
  ],
  "author": {
    "name": "Martin Möhrmann",
    "email": "martisch@uos.de",
    "time": "Sat Mar 19 08:54:07 2016 +0100"
  },
  "committer": {
    "name": "Rob Pike",
    "email": "r@golang.org",
    "time": "Sun Mar 27 00:50:31 2016 +0000"
  },
  "message": "fmt: cleanup reflect value handling\n\nMerge printReflectValue into printValue. Determine if handleMethods\nwas already called in printArg by checking if depth is 0. Do not\ncall handleMethods on depth 0 again in printValue to not introduce\na performance regression. handleMethods is called already in printArg\nto not introduce a performance penalty for top-level Stringer,\nGoStringer, Errors and Formatters by using reflect.ValueOf on them\njust to retrieve them again as interface{} values in printValue.\n\nClear p.arg in printValue after handleMethods to print the type\nof the value inside the reflect.Value when a bad verb is encountered\non the top level instead of printing \"reflect.Value\u003d\" as the type of\nthe argument. This also fixes a bug that incorrectly prints the\nwhole map instead of just the value for a key if the returned value\nby the map for the key is an invalid reflect value.\n\nname                     old time/op  new time/op  delta\nSprintfPadding-2          229ns ± 2%   227ns ± 1%  -0.50%  (p\u003d0.013 n\u003d20+20)\nSprintfEmpty-2           36.4ns ± 6%  37.2ns ±14%    ~     (p\u003d0.091 n\u003d18+20)\nSprintfString-2           102ns ± 1%   102ns ± 0%    ~     (p\u003d0.751 n\u003d20+20)\nSprintfTruncateString-2   142ns ± 0%   141ns ± 1%  -0.95%  (p\u003d0.000 n\u003d16+20)\nSprintfQuoteString-2      389ns ± 0%   388ns ± 0%  -0.12%  (p\u003d0.019 n\u003d20+20)\nSprintfInt-2              100ns ± 2%   100ns ± 1%    ~     (p\u003d0.188 n\u003d20+15)\nSprintfIntInt-2           155ns ± 3%   154ns ± 2%    ~     (p\u003d0.092 n\u003d20+20)\nSprintfPrefixedInt-2      250ns ± 2%   251ns ± 3%    ~     (p\u003d0.559 n\u003d20+20)\nSprintfFloat-2            177ns ± 2%   175ns ± 1%  -1.30%  (p\u003d0.000 n\u003d20+20)\nSprintfComplex-2          516ns ± 1%   510ns ± 1%  -1.13%  (p\u003d0.000 n\u003d19+16)\nSprintfBoolean-2         90.9ns ± 3%  90.6ns ± 1%    ~     (p\u003d0.193 n\u003d19+19)\nSprintfHexString-2        171ns ± 1%   169ns ± 1%  -1.44%  (p\u003d0.000 n\u003d19+20)\nSprintfHexBytes-2         180ns ± 1%   180ns ± 1%    ~     (p\u003d0.060 n\u003d19+18)\nSprintfBytes-2            330ns ± 1%   329ns ± 1%  -0.42%  (p\u003d0.003 n\u003d20+20)\nSprintfStringer-2         354ns ± 3%   352ns ± 3%    ~     (p\u003d0.525 n\u003d20+19)\nSprintfStructure-2        804ns ± 3%   776ns ± 2%  -3.56%  (p\u003d0.000 n\u003d20+20)\nFprintInt-2               155ns ± 0%   151ns ± 1%  -2.35%  (p\u003d0.000 n\u003d19+20)\nFprintfBytes-2            169ns ± 0%   170ns ± 1%  +0.81%  (p\u003d0.000 n\u003d18+19)\nFprintIntNoAlloc-2        112ns ± 0%   109ns ± 1%  -2.28%  (p\u003d0.000 n\u003d20+20)\n\nChange-Id: Ib9a39082ed1be0f1f7499ee6fb6c9530f043e43a\nReviewed-on: https://go-review.googlesource.com/20923\nRun-TryBot: Rob Pike \u003cr@golang.org\u003e\nReviewed-by: Rob Pike \u003cr@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "be7299cdbc412c121015e402d9ed8d7d396dac8a",
      "old_mode": 33188,
      "old_path": "src/fmt/fmt_test.go",
      "new_id": "ffa24995a539e6cca06247645e0efff7263f2927",
      "new_mode": 33188,
      "new_path": "src/fmt/fmt_test.go"
    },
    {
      "type": "modify",
      "old_id": "c80223269ba2d0711840adfef800e5a038693dba",
      "old_mode": 33188,
      "old_path": "src/fmt/print.go",
      "new_id": "6c64773a1babf56cb869d1402047c1e18ec9158b",
      "new_mode": 33188,
      "new_path": "src/fmt/print.go"
    }
  ]
}
