)]}'
{
  "commit": "a1be278c4f3a234ff61f04018d26c6beecde1654",
  "tree": "417374c22b99d713e9c7dbe093ec987d65cb7374",
  "parents": [
    "79cbbdc8affe52591f7ee487a789639aa38331ec"
  ],
  "author": {
    "name": "Douglas Gregor",
    "email": "dgregor@apple.com",
    "time": "Sat Dec 17 23:38:30 2011 +0000"
  },
  "committer": {
    "name": "Douglas Gregor",
    "email": "dgregor@apple.com",
    "time": "Sat Dec 17 23:38:30 2011 +0000"
  },
  "message": "Completely re-implement (de-)serialization of declaration\nchains. The previous implementation relied heavily on the declaration\nchain being stored as a (circular) linked list on disk, as it is in\nmemory. However, when deserializing from multiple modules, the\ndifferent chains could get mixed up, leading to broken declaration chains.\n\nThe new solution keeps track of the first and last declarations in the\nchain for each module file. When we load a declaration, we search all\nof the module files for redeclarations of that declaration, then\nsplice together all of the lists into a coherent whole (along with any\nredeclarations that were actually parsed). \n\nAs a drive-by fix, (de-)serialize the redeclaration chains of\nTypedefNameDecls, which had somehow gotten missed previously. Add a\ntest of this serialization.\n\nThis new scheme creates a redeclaration table that is fairly large in\nthe PCH file (on the order of 400k for Cocoa.h\u0027s 12MB PCH file). The\ntable is mmap\u0027d in and searched via a binary search, but it\u0027s still\nquite large. A future tweak will eliminate entries for declarations\nthat have no redeclarations anywhere, and should\ndrastically reduce the size of this table.\n\n\n\ngit-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146841 91177308-0d34-0410-b5e6-96231b3b80d8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41ef74ee0ab4f408fd05894d27a06b1943c96b04",
      "old_mode": 33188,
      "old_path": "include/clang/Serialization/ASTBitCodes.h",
      "new_id": "cce6916b4e37c685e55e7ea471fcc947d28434cd",
      "new_mode": 33188,
      "new_path": "include/clang/Serialization/ASTBitCodes.h"
    },
    {
      "type": "modify",
      "old_id": "0947dfc4eb758a4655bf6295ee70f16f17751496",
      "old_mode": 33188,
      "old_path": "include/clang/Serialization/ASTReader.h",
      "new_id": "10ed5dceea5fe82a7a5b2d926e1f3ca36e28fbbf",
      "new_mode": 33188,
      "new_path": "include/clang/Serialization/ASTReader.h"
    },
    {
      "type": "modify",
      "old_id": "ab0d1ef3d9fec0d7a4bd4fdc5df67b22989533a0",
      "old_mode": 33188,
      "old_path": "include/clang/Serialization/ASTWriter.h",
      "new_id": "fd581bc4521ff6f382de696a6630998be0a99991",
      "new_mode": 33188,
      "new_path": "include/clang/Serialization/ASTWriter.h"
    },
    {
      "type": "modify",
      "old_id": "16d9779e04deb32b158809293c6d0d9bc9272e61",
      "old_mode": 33188,
      "old_path": "include/clang/Serialization/Module.h",
      "new_id": "cbac5cd148fd83ba0fbbb686a0db2d3059f65891",
      "new_mode": 33188,
      "new_path": "include/clang/Serialization/Module.h"
    },
    {
      "type": "modify",
      "old_id": "a1713ee6850179f53f21ae167332feb254248430",
      "old_mode": 33188,
      "old_path": "lib/Sema/SemaLookup.cpp",
      "new_id": "bc1cb3fca63bd9db1b4f6493aa52c11f288fe65d",
      "new_mode": 33188,
      "new_path": "lib/Sema/SemaLookup.cpp"
    },
    {
      "type": "modify",
      "old_id": "3af04c2bc8addc1825a624c106e6c80abf0650fe",
      "old_mode": 33188,
      "old_path": "lib/Serialization/ASTReader.cpp",
      "new_id": "64414c91675b53635227852a1adf9291a6870048",
      "new_mode": 33188,
      "new_path": "lib/Serialization/ASTReader.cpp"
    },
    {
      "type": "modify",
      "old_id": "5e5f1cb6fe6505e700b55fed5bfa6bca74083ccd",
      "old_mode": 33188,
      "old_path": "lib/Serialization/ASTReaderDecl.cpp",
      "new_id": "69f309aef0d0b99c4be2d626cad087ccb6c9cb53",
      "new_mode": 33188,
      "new_path": "lib/Serialization/ASTReaderDecl.cpp"
    },
    {
      "type": "modify",
      "old_id": "b3f76f749457c6e9e953f9734aa2ceb320c72c94",
      "old_mode": 33188,
      "old_path": "lib/Serialization/ASTWriter.cpp",
      "new_id": "bb2b1cb5b082d5dde64809fc79fc9383ee524152",
      "new_mode": 33188,
      "new_path": "lib/Serialization/ASTWriter.cpp"
    },
    {
      "type": "modify",
      "old_id": "9b74aaeae457e575d845cd43cee02823db7521e8",
      "old_mode": 33188,
      "old_path": "lib/Serialization/ASTWriterDecl.cpp",
      "new_id": "6c6428d55a806e94217785f334a43883b7f91489",
      "new_mode": 33188,
      "new_path": "lib/Serialization/ASTWriterDecl.cpp"
    },
    {
      "type": "modify",
      "old_id": "11e7243cd51ba7fe8e9242ec2bf1b1e6e336f694",
      "old_mode": 33188,
      "old_path": "lib/Serialization/Module.cpp",
      "new_id": "1298714dd068e3e635a4c233d7147fa9ef679b8b",
      "new_mode": 33188,
      "new_path": "lib/Serialization/Module.cpp"
    },
    {
      "type": "modify",
      "old_id": "f7cc7d4b515381ce80632d38b5c273312e2519b6",
      "old_mode": 33188,
      "old_path": "test/Modules/Inputs/module.map",
      "new_id": "b101c01567d694db6282262e44ca93683b4e6ab2",
      "new_mode": 33188,
      "new_path": "test/Modules/Inputs/module.map"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e45e0dea0477ec1f1d3672533e6dc31b0257e357",
      "new_mode": 33188,
      "new_path": "test/Modules/Inputs/redecl-merge-bottom.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "085892234818cd04796988109c5d45c4fef7335a",
      "new_mode": 33188,
      "new_path": "test/Modules/Inputs/redecl-merge-left.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "266146c9953e8fff73a29738377314daa056bfe8",
      "new_mode": 33188,
      "new_path": "test/Modules/Inputs/redecl-merge-right.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "886436cdda8670d59a7aec93dbb4b0055ba7e683",
      "new_mode": 33188,
      "new_path": "test/Modules/Inputs/redecl-merge-top.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40c6aaf0fffa49a2fbef6f9b5fb0932d8d430637",
      "new_mode": 33188,
      "new_path": "test/Modules/redecl-merge.m"
    },
    {
      "type": "modify",
      "old_id": "af0a23afea9f1b06519b26ff1937a038e0040ff5",
      "old_mode": 33188,
      "old_path": "test/PCH/chain-cxx.cpp",
      "new_id": "c42ee7d39eeb8012bf44fce285062d6a96199388",
      "new_mode": 33188,
      "new_path": "test/PCH/chain-cxx.cpp"
    }
  ]
}
