)]}'
{
  "commit": "d25f0cd330f45b06ccb9d4b9c2d1984f83e35d38",
  "tree": "5f0caa582f9bb01a8e05b00c3aaf17c9f3cc5672",
  "parents": [
    "3606733447ea3423ceebb00815ac2d766db546bc"
  ],
  "author": {
    "name": "jcd",
    "email": "jcd@golang.org",
    "time": "Tue Jun 23 15:26:05 2015 +1000"
  },
  "committer": {
    "name": "jcd .",
    "email": "jcd@golang.org",
    "time": "Wed Jun 24 08:05:57 2015 +0000"
  },
  "message": "x/debug: implement server.handleBreakpointAtLine.  Add a function to x/debug/dwarf for converting source lines to addresses.\n\nMake line numbers uint64s everywhere instead of ints.\n\nPCToLine: the previous logic considered that we had found the PC if the\nline machine reaches an equal-or-larger address, but the line machine\ncan consist of multiple sequences which aren\u0027t guaranteed to be in order\nof address.  It now checks that within one sequence we output the PC, or\npass from a PC below it to a PC above it.\n\nLineToPCs: the caller may provide us a partial path name, so we use a\nheuristic to choose which file in the executable is the best match.  We\nchoose the file where the largest number of trailing path components\nmatch.  We break ties by choosing the file with the shortest name.\n\nevalCompilationUnit: call a function at each output from the line\nmachine, so we can use this function for both PCToLine and LineToPCs.\n\nRename \"prologue\" to \"header\" to avoid confusion with function\nprologues.\n\nSeparate header parsing out of evalCompilationUnit so that LineToPCs has\naccess to file names before it starts processing line machine\ninstructions.\n\nSome minor fixes to evalCompilationUnit:  Make the line machine output\nat special opcodes and at the ends of sequences.  Continue processing\nuntil we reach the end of the line machine, not until when we reach the\nend of a sequence.  For the copy opcode, do the output before updating\nregisters.  For DW_LNS_const_add_pc, only perform the step of special\nopcode 255 that updates the address and op_index registers, and remove\nthe associated TODO.  If we reach the end of the line machine without\nseeing the end of the current sequence, return an error, don\u0027t panic.\n\nChange-Id: I140ca299313ad1d54971557a05dc46d7c6c349a4\nReviewed-on: https://go-review.googlesource.com/11350\nReviewed-by: Rob Pike \u003cr@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "127afe8fab04c7923568d9fbe98ef72bcb7334d4",
      "old_mode": 33188,
      "old_path": "dwarf/line.go",
      "new_id": "ca30b79ac35ba4889945ac72e10c4734781b0dc1",
      "new_mode": 33188,
      "new_path": "dwarf/line.go"
    },
    {
      "type": "modify",
      "old_id": "4c4039f2199165c8d4a01c235ddc9907b1af722d",
      "old_mode": 33188,
      "old_path": "ogle/demo/ogler/ogler_test.go",
      "new_id": "855f3cff3879ac8ed0b48ec8cc4c8807f21d7245",
      "new_mode": 33188,
      "new_path": "ogle/demo/ogler/ogler_test.go"
    },
    {
      "type": "modify",
      "old_id": "374a0194f69077a11ad28588636e24a27cff5eb4",
      "old_mode": 33188,
      "old_path": "ogle/program/program.go",
      "new_id": "24619aab387d150ab884693d514ac40483d17763",
      "new_mode": 33188,
      "new_path": "ogle/program/program.go"
    },
    {
      "type": "modify",
      "old_id": "9e5b48683ab44ba69d8006bf0cb7e682cdaeaa18",
      "old_mode": 33188,
      "old_path": "ogle/program/server/server.go",
      "new_id": "ac9dc92cf3265b486e32fc5d9cf3882b824e0e20",
      "new_mode": 33188,
      "new_path": "ogle/program/server/server.go"
    }
  ]
}
