)]}'
{
  "commit": "1cdd270be9803dbfcdd0343f6104ad4dc30c38ce",
  "tree": "4b71a32c45849913d7e63b20ef062fcac951dbc7",
  "parents": [
    "496fd46214cdd12dd56ae936d6ccb8a65116675d"
  ],
  "author": {
    "name": "David \u0027Digit\u0027 Turner",
    "email": "digit@google.com",
    "time": "Wed Apr 13 14:49:50 2022 +0200"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Fri Apr 15 16:57:29 2022 +0000"
  },
  "message": "Add ResolvedTargetData class\n\nThis class re-implements some of the expensive recursive computations\nover the build graph that are currently implemented in\nTarget::OnResolved(). This will allow, in a future CL, to move these\ncomputations out of the graph builder, that runs exclusively on the\nmain thread, and into parallel worked pool threads.\n\nAnother benefit is that the computations are performed top-down\n(i.e. by recursing from dependents to dependencies), which limits\nthem to only the targets that actually need them. By contrast, the\ncurrent code propagates values from dependencies to dependents\nunconditionally, resulting in un-necessary work and data associated\nfor _every_ target in the graph.\n\nTo avoid duplicate work, each ResolvedTargetData call does record or\nreuses intermediate target-specific values. This will be leveraged,\nin yet another future CL, by setting up and using one\nResolvedTargetData instance per worker pool thread.\n\nFuture CLs will update the Ninja target writers to use instances of\nthis class, and remove the Target methods that return the same results.\n\n+ Add TargetPublicPair to model a compact (target_ptr, is_public_flag)\n  pair, and TargetPublicPairListBuilder to generate lists of such\n  instances efficiently.\n\n+ Add ResolvedTargetDeps which provides a compact iterator over\n  different sets of target dependencies, since profiling shows\n  that using a DepsIterator instance is much slower during\n  graph-traversal heavy operations.\n\nBoth classes are used internally by ResolvedTargetData.\n\nBug: None\nChange-Id: I83f2e3aed83e0ac1b96bb887e7f3f3f9a01a7156\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/13624\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4c755022a1bb180dd5951fa325d95631f101d590",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "3ec0560fd23b20a4a5de133869feeb44b7b29d09",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "93064f9b6751cfd327094926ccd9c73e6399ca1d",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "67a616fb9f01eb8f8d2ad72bc898d411a016c5c8",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1dd4d5a16613d26f9a6ade30a70c160220ebf9d1",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data_unittest.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5d3903aaad9a71facfca786393fa1a862551e8ae",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_deps.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "74d623d091d668063e4575e91325fee3f61a07d9",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_deps_unittest.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c8ff655c7410a520f09361ce3331b11b5929a594",
      "new_mode": 33188,
      "new_path": "src/gn/target_public_pair.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b08a0c5b3ce7a7e20a2188f4cf1aedc9e830ace",
      "new_mode": 33188,
      "new_path": "src/gn/target_public_pair_unittest.cc"
    }
  ]
}
