)]}'
{
  "commit": "9ba46f8f3c2f62a37914e7bfb199c65a71b64b9f",
  "tree": "a37d6665ae4c4f156e0ff27616bfe8ea01791846",
  "parents": [
    "25f37123a0b33484acedaab2ef7c78d50365c43a"
  ],
  "author": {
    "name": "janakr",
    "email": "janakr@google.com",
    "time": "Tue Mar 13 13:07:52 2018 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-piper@google.com",
    "time": "Tue Mar 13 13:09:37 2018 -0700"
  },
  "message": "Integrate memoization into standard serialization. This involves a number of large changes:\n\n1. SerializationContext and DeserializationContext become the owners of the Memoizer if requested. They produce new versions of themselves on demand that are memoization-aware. Because of intricacies of Skylark that I do not fully understand, we inject a Mutability object when starting memoization, and so to be conservative, that injection starts up a new memoization frame, nested if we were already memoizing, just like before. It would be nice to decouple this injection from memoization in the future.\n\n2. MemoizingCodec is deleted, but really ObjectCodec becomes MemoizingCodec, so it lives on. BaseCodec is deleted since it now has only one implementation.\n\n3. The simplified model of registering MemoizingCodecs is adopted for ObjectCodecs: all codecs are registered based on their #getEncodedClass and #additionalEncodedSubclasses. This also allows us to register codecs that are defined using tricky parameter types, since we\u0027re no longer trying to reflectively examine them. This required a clean-up of such codecs, and the addition of ArrayListCodec to stop NullableListCodec from making lists unmodifiable when they shouldn\u0027t be.\n\n4. @AutoCodec is extended to allow users to specify that memoization should start with this codec.\n\nTo ensure bit-equivalence, SkyKeySerializer disables memoization.\n\nPiperOrigin-RevId: 188918251\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "045520aa6d0388d14ce39249e30b543d1e28a766",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java",
      "new_id": "61878dd4efc774d73e41f9d5bad1d8e6ef336d74",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java"
    },
    {
      "type": "modify",
      "old_id": "1551d70f35e106b82fddeec3b66361e5b13012f2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/RequiredProviders.java",
      "new_id": "2f026c84a214fb648f2f049d230a6204131bec4f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/RequiredProviders.java"
    },
    {
      "type": "modify",
      "old_id": "14ec9d646e82e21ffaccef59a62eb8ef04683b0a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java",
      "new_id": "e8cd11ae556f3fa64181b7ac07952611a412210e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java"
    },
    {
      "type": "modify",
      "old_id": "abe1c70e667070afc6d93612427c1e3721dcccc6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java",
      "new_id": "b48f247feb988f916ae4c4116c64f5c9a17a7c45",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java"
    },
    {
      "type": "delete",
      "old_id": "abec3f100730791a0b6c6225d34ef634180f99e3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/BaseCodec.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "0a5f6b9db195fedae0be5daa4a33c757ec846375",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java",
      "new_id": "1adb15047f62689c05481db76eab326885954208",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java"
    },
    {
      "type": "modify",
      "old_id": "3948b6411883b31ee04b7a11fb436990f2fea664",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java",
      "new_id": "54b5820d31a46c3591f15dff153271490dcc85e2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java"
    },
    {
      "type": "modify",
      "old_id": "9be4046daf4c3b101a8e052c6e2bdb160fd33a34",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMapCodec.java",
      "new_id": "2c1e11c92b7caa49f2a956be55fa5546039fa069",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMapCodec.java"
    },
    {
      "type": "modify",
      "old_id": "c31269ef5cdb3c321c94d157bc42dd554f2d15f6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/Memoizer.java",
      "new_id": "0276a847ce91306334eeec1ea4f16921e632baf1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/Memoizer.java"
    },
    {
      "type": "modify",
      "old_id": "a17cf3d83d5a6ed3a9e6730bb3d5259cc308d299",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodec.java",
      "new_id": "4b47b4bad0cef1688832a5f122f4ca1de946832b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodec.java"
    },
    {
      "type": "modify",
      "old_id": "80ec3281aec9f672582000de739c3bf143d65ad8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecRegistry.java",
      "new_id": "95590143dbfa7e4c858799aeb6a1860384089e90",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecRegistry.java"
    },
    {
      "type": "modify",
      "old_id": "1d0fbe66b6d51abf902e95d6569afc772ae5c572",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecs.java",
      "new_id": "e34ecc1a14c98c45f9680e6dd9870d8bdbbfe20d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecs.java"
    },
    {
      "type": "modify",
      "old_id": "b106a63c44f536da43b31911780fbef1026018f2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContext.java",
      "new_id": "2eb22ba2a324d303b9b5c8be4fbac18cd291d110",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContext.java"
    },
    {
      "type": "delete",
      "old_id": "648b1a5f42846689cecdb7c4e2990fee599fb820",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/UnmodifiableListCodec.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "e6a687d77312d02440923d16e1b0d32d825982bd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java",
      "new_id": "3d9d68bdb91144ff87c5263e517991497dab4102",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java"
    },
    {
      "type": "modify",
      "old_id": "dd7ad40fc03ff116bebe65ec1a5dca01718bfb7b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java",
      "new_id": "268a87cf5ef0dc97557d169f7e07d24668770cad",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "102c1dfa4ea39d9dcc5ab5d181ffb365f877d743",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java",
      "new_id": "f0bbaf22705d1b9091d57a62c5f323f99a09b464",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java"
    },
    {
      "type": "modify",
      "old_id": "8e1a8fc641acbc283453ca31ce77ce6716a5647b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/FastStringCodec.java",
      "new_id": "0cd658a8c62fa91fc88d5b7d7619f16ffe979339",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/FastStringCodec.java"
    },
    {
      "type": "modify",
      "old_id": "30901ed95a12689db76c6d21446a8c9ddea8a0fb",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/StringCodec.java",
      "new_id": "aa0e16984998bea73e617b6317b1ea08e8a04d45",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/StringCodec.java"
    },
    {
      "type": "modify",
      "old_id": "aea5a4c67dcb6b821776aa6383bc7e42f3120c1b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/StringCodecs.java",
      "new_id": "a5516a75a6406b122452c812fcfd89a6b8b4300b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/strings/StringCodecs.java"
    },
    {
      "type": "modify",
      "old_id": "b0af31a1a8f4cffe677403a859ba84b215dc48f1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java",
      "new_id": "32a42b2a2734e9d971aad3c5a312acbb58b66979",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java"
    },
    {
      "type": "modify",
      "old_id": "2d5d7c9a96a1f9627b37e5a8e3293c708de51efd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/TestUtils.java",
      "new_id": "a7478d4fa7da5cf977ebbd4f84c3f9c79c03730e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/TestUtils.java"
    },
    {
      "type": "modify",
      "old_id": "eb06a10862d479058fc10a332a965922b140edf9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/Environment.java",
      "new_id": "86d9c369eea319045c1f3c0233158c0463e88264",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/Environment.java"
    },
    {
      "type": "modify",
      "old_id": "485bac26e81243298f21cd1b27d8b298bf918a42",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java",
      "new_id": "fb60ca6df0a902c852a3292934d59a070fa58265",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java"
    },
    {
      "type": "modify",
      "old_id": "764284a2ea6efb7e0c54e2f788eddc8287cd9226",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContextTest.java",
      "new_id": "ba99518e6f3f568b0a2e618f445332c8e067e078",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContextTest.java"
    },
    {
      "type": "modify",
      "old_id": "2791f0adcca1c667b898e3a0bd5dee3ed57fd912",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMapCodecTest.java",
      "new_id": "d4042fe1074f3c10e1d81b09827b93a135d42415",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableMapCodecTest.java"
    },
    {
      "type": "modify",
      "old_id": "efcb760d44bf8bebe6a9c18ef4947de37525a25a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecRegistryTest.java",
      "new_id": "71efbd714b11757b4110892de9b684ec520bb413",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecRegistryTest.java"
    },
    {
      "type": "modify",
      "old_id": "5577087b379394f289c88faa2ec2ae19152256cf",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java",
      "new_id": "66ad1db4747f8a7f23052736d53d5b0791b7c53a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java"
    },
    {
      "type": "modify",
      "old_id": "bd05444e2163bdc006ffdd2ea05b5daebf075285",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java",
      "new_id": "bd8ed19a1db82cd0ecefc50e30f6e618ab835ee9",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SerializationContextTest.java"
    }
  ]
}
