)]}'
{
  "commit": "165358bc9913cde83dfdde78a9b4e0382c8baf81",
  "tree": "182b4e81eda05149d57772c705c10ae755bebc6f",
  "parents": [
    "117d081f44f8c9f99f60c27cedf5298199b8e8f6"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "spearce@spearce.org",
    "time": "Sun Jan 02 16:42:44 2011 -0800"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "spearce@spearce.org",
    "time": "Thu Jan 06 09:48:43 2011 -0800"
  },
  "message": "Use heap based stack for PackFile deltas\n\nInstead of using the current thread\u0027s stack to recurse through the\ndelta chain, use a linked list that is stored in the heap.  This\npermits the any thread to load a deep delta chain without running out\nof thread stack space.\n\nDespite needing to allocate a stack entry object for each delta\nvisited along the chain being loaded, the object allocation count is\nkept the same as in the prior version by removing the transient\nObjectLoaders from the intermediate objects accessed in the chain.\nInstead the byte[] for the raw data is passed, and null is used as a\nmagic value to signal isLarge() and enter the large object code path.\n\nLike the old version, this implementation minimizes the amount of\nmemory that must be live at once.  The current delta instruction\nsequence, the base it applies onto, and the result are the only live\ndata arrays.  As each level is processed, the prior base is discarded\nand replaced with the new result.\n\nEach Delta frame on the stack is slightly larger than the standard\nObjectLoader.SmallObject type that was used before, however the Delta\ninstances should be smaller than the old method stack frames, so total\nmemory usage should actually be lower with this new implementation.\n\nChange-Id: I6faca2a440020309658ca23fbec4c95aa637051c\nSigned-off-by: Shawn O. Pearce \u003cspearce@spearce.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8db5c1bd55bbf5d459d7b65145a52a3db8eebb28",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java",
      "new_id": "5782d0ad8073676aab184db7c211f56bb5a31a89",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java"
    }
  ]
}
