)]}'
{
  "commit": "a5a07331444f9b48a5e09728e3d0085cfbfb2222",
  "tree": "8baefd3eacf998bb1e04a758018d2ab8c2223beb",
  "parents": [
    "f9c4c16dce621f1834943f3ccda0d0a079f7b1a4"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Wed Oct 29 20:37:44 2014 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Wed Oct 29 20:37:44 2014 -0400"
  },
  "message": "runtime: change top-most return PC from goexit to goexit+PCQuantum\n\nIf you get a stack of PCs from Callers, it would be expected\nthat every PC is immediately after a call instruction, so to find\nthe line of the call, you look up the line for PC-1.\nCL 163550043 now explicitly documents that.\n\nThe most common exception to this is the top-most return PC\non the stack, which is the entry address of the runtime.goexit\nfunction. Subtracting 1 from that PC will end up in a different\nfunction entirely.\n\nTo remove this special case, make the top-most return PC\ngoexit+PCQuantum and then implement goexit in assembly\nso that the first instruction can be skipped.\n\nFixes #7690.\n\nLGTM\u003dr\nR\u003dr\nCC\u003dgolang-codereviews\nhttps://golang.org/cl/170720043\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0d46a9eff78035a6fca583a0f4b6800c32cabcde",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_386.s",
      "new_id": "b4b81d7397eb03f169aa527eab2d639cb6deb20a",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_386.s"
    },
    {
      "type": "modify",
      "old_id": "a9b082beb82a66f28d9e808166f66e334415de3e",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_amd64.s",
      "new_id": "39d7c78f23346f9ed87259f324811d4c8b6538ba",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_amd64.s"
    },
    {
      "type": "modify",
      "old_id": "28875bc55a146a4e386b68c58f4731f3de0288ea",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_amd64p32.s",
      "new_id": "a1116b5d471ed35a44bd7a7a5c6d5c6d6816fc18",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_amd64p32.s"
    },
    {
      "type": "modify",
      "old_id": "e94b4c1ff61560f3424b45ff0dc9c758980e1dae",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_arm.s",
      "new_id": "0f3b5eeb8bd338d7087c4d969367443ea57a3670",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_arm.s"
    },
    {
      "type": "modify",
      "old_id": "b46f67065a528b92182b5ef29565250eb4fa3a8f",
      "old_mode": 33188,
      "old_path": "src/runtime/proc.c",
      "new_id": "4be51e1e1660919cd74bac530b0061425997e7c6",
      "new_mode": 33188,
      "new_path": "src/runtime/proc.c"
    }
  ]
}
