)]}'
{
  "commit": "ed9d6390eb78303631c25b3d4776cb07eeded544",
  "tree": "5a4728a6c6cda562cf8ff73a53248773a386800f",
  "parents": [
    "04028ef5da253b3a1406d9f60399f2e7fbe6ca34"
  ],
  "author": {
    "name": "adonovan",
    "email": "adonovan@google.com",
    "time": "Wed Jun 10 12:15:52 2020 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Jun 10 12:17:58 2020 -0700"
  },
  "message": "bazel collect: simplify NestedSet depth limit check\n\nThis change causes NestedSet to record its depth in the graph.\nSpecifically, it records the height of the DAG of arrays,\nafter singleton inlining. It is exposed as NestedSet.getDepth.\n\nTo save space, we squirrel the value into the first slot of the children array.\nAccording to the Usual Benchmark, the extra array element adds +0.65% RAM.\nThis compares to +1.3% for the naive solution of an additional \u0027int depth\u0027 field.\n\nThis allows the depth to be computed in constant time, without flattening,\nso the Starlark depset constructor can reject too-deep sets eagerly instead\nof deferring the check till flattening time, which resulted in the scattering\nof unchecked NestedSetDepthExceptions throughout the code base,\nincluding in such places as the Starlark interpreter\u0027s \u0027str\u0027 operator.\n\nJava code that uses NestedSet is not subject to any depth limit or check,\nbut is free to add explicit checks at important boundaries, such as\nrule construction, provider construction, and so on.\nEven in the absence of such explicit checks, if an overly deep depset\nis constructed by alternating Java and Starlark operations,\na Starlark operation will eventually fail even it was not the one\nthat crossed the threshold of the limit.\n\nRELNOTES: The --debug_depset_flag has been removed as it is in effect always on at no cost.\nPiperOrigin-RevId: 315741238\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7fff89bc2eab062e79c9739097c51aa7caa29f47",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleConfiguredTargetUtil.java",
      "new_id": "d71b44db03546866e182e81ccf1d5a5af08665a4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleConfiguredTargetUtil.java"
    },
    {
      "type": "modify",
      "old_id": "ba3a5214be6b830f99bb245b52f3d54f0a93e3b0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java",
      "new_id": "a26131c476abea3e11e15ec85dd4902c8290853a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java"
    },
    {
      "type": "modify",
      "old_id": "217b5f89dbbc0759e0d474ed113960ffc469ebe8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java",
      "new_id": "550dc7631ef8b64dc002cd3ab2aff3f92b2eb5a2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java"
    },
    {
      "type": "modify",
      "old_id": "46eddd8eef1771d0b1bc03fefedb0ae54fb08b58",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java",
      "new_id": "4e73229d1215f9c7760833fd58d4d86f5c8e1cc2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCache.java"
    },
    {
      "type": "modify",
      "old_id": "5e99a5e6abefa5c386e734ad581f44e400ea7bee",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetOptionsModule.java",
      "new_id": "851d0f49ff7e445bddc89b0e1b0e847bd74d4fc9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetOptionsModule.java"
    },
    {
      "type": "modify",
      "old_id": "1a36ff9890f2829d9efda755b25e6ef75630d5f3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetVisitor.java",
      "new_id": "6b9f152a94be6313e058c6ec37174c648616e06b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetVisitor.java"
    },
    {
      "type": "modify",
      "old_id": "1324ddd5b2e0956f1da9297b655932821357fddc",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java",
      "new_id": "2a9ce3227c20057a7e5f71d29e48a392deab59ed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java"
    },
    {
      "type": "modify",
      "old_id": "da812e8212785e4ddec61344040161639b1154c3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/Type.java",
      "new_id": "778019c5a71e0f6377b1682dd5ccb93e80cc523f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/Type.java"
    },
    {
      "type": "modify",
      "old_id": "5f90065af7cf1d8113dedaf9f6c91d566704f6bf",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java",
      "new_id": "74c17e38b583a82d600e4317a67c25c9df92d4c7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java"
    },
    {
      "type": "modify",
      "old_id": "556f3b3ab8242d95fdcadaf233110d667375ba2d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java",
      "new_id": "c1646792026935077ea4ce5abb8b6eb3cd58fc43",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java"
    },
    {
      "type": "modify",
      "old_id": "70c6f43c8df889e9dca73a9ad77538012cb72831",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java",
      "new_id": "f859597983f852646e3f648c29df3e007071cca4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java"
    },
    {
      "type": "modify",
      "old_id": "7990c1ded2fdf372a841c92640276116d1cae83d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/DepsetTest.java",
      "new_id": "3f66420797c97b5942eb95b12e2b072be251d0be",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/DepsetTest.java"
    },
    {
      "type": "modify",
      "old_id": "83c2397e58a0531010eb384fc8e5f854adc3778e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetImplTest.java",
      "new_id": "41f20ab19ebe6b38b2499bcb2abd0b2c07ce1ccc",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetImplTest.java"
    },
    {
      "type": "modify",
      "old_id": "5846eb8eb72b9bea632ac42c15d41e6169b57105",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetTopologyTest.java",
      "new_id": "29c52613d02a5c7d69b7bd2fa8dd29f5f63fdbf2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetTopologyTest.java"
    },
    {
      "type": "modify",
      "old_id": "212a2f6bdabb6ac3c28338869204ddf3d4c84c26",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/StarlarkSemanticsConsistencyTest.java",
      "new_id": "6aa52d5dabe603943c97ea8642d88a481ddd62d6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/StarlarkSemanticsConsistencyTest.java"
    },
    {
      "type": "modify",
      "old_id": "2ca12f16e2698b8fc3b6eafb1283fd90db55a648",
      "old_mode": 33261,
      "old_path": "src/test/shell/integration/starlark_flag_test.sh",
      "new_id": "aad02c87c1d12c0fdf55de739488887661502a42",
      "new_mode": 33261,
      "new_path": "src/test/shell/integration/starlark_flag_test.sh"
    }
  ]
}
