)]}'
{
  "commit": "553dc6c9af2d38e4e3d356bf50e09ea7b008f25c",
  "tree": "9b51f66d13e6d597c51763a9485386a1e25053ad",
  "parents": [
    "a1f302a61e0dc2dd3e44d45df599255b444dd767"
  ],
  "author": {
    "name": "adonovan",
    "email": "adonovan@google.com",
    "time": "Tue Dec 10 11:22:48 2019 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Dec 10 11:23:50 2019 -0800"
  },
  "message": "bazel packages: simplify SkylarkInfo\n\nPreviously, SkylarkInfo had one of two forms:\n- schemaful, which held an array of values and a reference to\n  a Layout, which mapped keys to small integers; and\n- schemaless, which held an ImmutableSortedMap, which is\n  internally a 7-word structure holding separate lists of\n  keys and values, doubly indirect.\n\nThis change replaces both by a simpler representation:\na single table of keys followed by values, with the keys sorted.\nLookup involves binary search over the key portion.\n\nThe table is more compact than the schemaless implementation,\nand despite having O(log)-time lookup, there are fewer cache\nmisses than in a hash table.\n\nIt may be more compact even than the schemaful implementation,\nbecause it doesn\u0027t use space for fields that are not defined.\n\nAlso:\n- remove unnecessary Attribute.getSkylarkValue key munging\n  done by the old copyValues function.\n  This required fixing one caller (WorkspaceFactory).\n- remove unnecessary Starlark.fromJava value munging\n  done by the old copyValues function.\n  This requires fixing four callers.\n- assert validity of values.\n- delete Layout\n- optimize struct + struct to make only one pass and one allocation.\n- rename createSchema{ful,less} to create.\n- delete createEmpty\n\nRELNOTES: N/A\nPiperOrigin-RevId: 284810601\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0e32ea50e96b311450526429b354e77b3482f086",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java",
      "new_id": "efd0741d668cb793b9528ac86e41ce66837411f1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java"
    },
    {
      "type": "modify",
      "old_id": "cb81e4ef198fbe2d3dc58d7126e4703e68956bc6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java",
      "new_id": "c39db2afc363dc9636fccc8e7ec59d512f2f18d2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java"
    },
    {
      "type": "modify",
      "old_id": "cc7e2c5aceb1f68f54402b298e62778c4d0dde6a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java",
      "new_id": "da65072de959c3710633a58011980b085c3c1f74",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java"
    },
    {
      "type": "modify",
      "old_id": "8247ec4e2e94eda18e78790ff1652e866cb43753",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java",
      "new_id": "d73876089d3cd2f5684157d45f69769ad4f2158f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java"
    },
    {
      "type": "modify",
      "old_id": "9bd5b11db74ec6c6d1eb949cf9fe3b1328f3f075",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java",
      "new_id": "76332bb661e56010ef88733d829492f5b87fad9c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java"
    },
    {
      "type": "modify",
      "old_id": "fa90b2657b1f306a3153dc8cf50a8a8194f8cab0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java",
      "new_id": "b07301521629320fb9f7157abf041b5012a969ef",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "8690f0c018c57d7ce8096ff42f81e34d99cd9d32",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java",
      "new_id": "77ca87ddf17bd93dfd8e56a70e7c5ae460895c91",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java"
    },
    {
      "type": "modify",
      "old_id": "afa538a1788dca821d022777efe2643f30a349c8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java",
      "new_id": "99ed6006d173a1a3cee96b2c8feaddcef9c5ef37",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java"
    },
    {
      "type": "modify",
      "old_id": "b5e1c91061d79ff98d42ecbc9d7d621dba8ec6e1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/StructProvider.java",
      "new_id": "998f6329b5f3470c794fc8ade9fa50eb3d22b2a2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/StructProvider.java"
    },
    {
      "type": "modify",
      "old_id": "5506192b2794297a60d19d35a2807ac1a014d65d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java",
      "new_id": "378623ec73353d0ea821f1c020b2efe4923880e7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java"
    },
    {
      "type": "modify",
      "old_id": "d891fce155c343c8823288c955d2af1f5b3f4b27",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java",
      "new_id": "ce6358656606212b360705e201fbf6ea5882b499",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java"
    },
    {
      "type": "modify",
      "old_id": "9be7e7935aac6176dfdfbdb6475e7ae20d978d36",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java",
      "new_id": "b93aaad7f58f01f27597b621d9a0e199bb1177cd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java"
    },
    {
      "type": "modify",
      "old_id": "94d8d798d7903dc49b51816838948c932de0ee42",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java",
      "new_id": "f9298131db88c4e38ccae31e6435215d71e0154f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java"
    },
    {
      "type": "modify",
      "old_id": "fa9bdd58bca47fc88e71fcb7c4d0b316e38e0d55",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/SkylarkQueryable.java",
      "new_id": "66d0bba686bc7344f1a18c40fa39a0e22ed5333f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/SkylarkQueryable.java"
    },
    {
      "type": "modify",
      "old_id": "511996e76447147d8b0ebacd776011abb7d84146",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java",
      "new_id": "2fa623404b7c2439d2ca590bfb69cd00d763e797",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java"
    },
    {
      "type": "modify",
      "old_id": "842625e1633b4b2b177104fb7adde8dea74665fa",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java",
      "new_id": "b13f04e88f6e7e8848214c1ec6c1029bd3b26531",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java"
    },
    {
      "type": "modify",
      "old_id": "90a7885144eda3b12f6435ad93b1979e5fc140c3",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/python/PyStructUtilsTest.java",
      "new_id": "d7f34ee8307b5bab82bda92fa8879627627bbc88",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/python/PyStructUtilsTest.java"
    },
    {
      "type": "modify",
      "old_id": "5a71e61abdbb08aa6334d4c5ed3490383b00e1a3",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java",
      "new_id": "82f353d92d6dd45432f61f918c28164c57d6bd14",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java"
    }
  ]
}
