)]}'
{
  "commit": "264b4b5b0d07552ebb4598c12b9d3871f69b83d7",
  "tree": "1e7924721c322a7a0d6dc7176520b17639a2c6a8",
  "parents": [
    "063360f92f43b9451c74b1a58b3aad6f5153f908"
  ],
  "author": {
    "name": "Zvonimir Pavlinovic",
    "email": "zpavlinovic@google.com",
    "time": "Wed Aug 21 18:32:23 2024 +0000"
  },
  "committer": {
    "name": "Zvonimir Pavlinovic",
    "email": "zpavlinovic@google.com",
    "time": "Fri Aug 30 21:09:21 2024 +0000"
  },
  "message": "go/callgraph/vta: add return parameter nodes for functions\n\nThe change improves the performance of VTA. If a function returns F\nvalues, has R return instructions, and is called at C places (as\ngiven by the initial call graph), previously we could generate\nR x F x C edges in the type propagation graph. With the approach\nof introducing artificial return parameters, we create F x (R + C)\nedges instead.\n\nMeasured on a large project, this introduces ~5% time savings on\naverage. When the initial call graph is CHA, the type propagation graph\nis ~31% smaller. When the resulting call graph is then used as the\ninitial call graph, then the graph is ~21% smaller.\n\nThis will also enable use of one-direction callgraphs.\n\nChange-Id: I5de1774f11ce3bf23ac3c768df9e2c9f37777817\nReviewed-on: https://go-review.googlesource.com/c/tools/+/609318\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Tim King \u003ctaking@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "879ed591f85136a7b6cb1e6c2ecf4ba890a2378b",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/graph.go",
      "new_id": "1eea423999ec0f1a8ac1550efe4832a766d5b8fa",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/graph.go"
    },
    {
      "type": "modify",
      "old_id": "d26416ca3ec98ef52a398303e525da80f351e96c",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/graph_test.go",
      "new_id": "8ce4079c693fd516a42351e9928539ab0370d0cb",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/graph_test.go"
    },
    {
      "type": "modify",
      "old_id": "f8f88983dce8aebf0f3e6d80f2028517f55d6fdc",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/testdata/src/dynamic_calls.go",
      "new_id": "da37a0d55d39e0943210c8c72eb3a2b2aad9589a",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/testdata/src/dynamic_calls.go"
    },
    {
      "type": "modify",
      "old_id": "f5f51a3d6872cb12de77663317b6254b7a8df941",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/testdata/src/maps.go",
      "new_id": "69709b56e366ea89e36d2782ffde4af88c0d47fc",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/testdata/src/maps.go"
    },
    {
      "type": "modify",
      "old_id": "b11b4321ba76975ca8d0f0ed0cfe68dfa6498c65",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/testdata/src/returns.go",
      "new_id": "27bc418851e2d949e2aa390d4ebeddd65d032784",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/testdata/src/returns.go"
    },
    {
      "type": "modify",
      "old_id": "d3bfbe79284fbd50c5d91943fc8b1db666c9703f",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/testdata/src/simple.go",
      "new_id": "71ddbe37163db4f179e3c001f983fe5775517096",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/testdata/src/simple.go"
    },
    {
      "type": "modify",
      "old_id": "74a27c166adb5a59b70a0f9aac385feb8fb8b293",
      "old_mode": 33188,
      "old_path": "go/callgraph/vta/testdata/src/static_calls.go",
      "new_id": "e44ab68979dd8f10b59c47839b2b2c81bfea00e0",
      "new_mode": 33188,
      "new_path": "go/callgraph/vta/testdata/src/static_calls.go"
    }
  ]
}
