)]}'
{
  "commit": "a901fe88f2fa115d18e2a407624ec7ac06cb2a3a",
  "tree": "a11bf31161c782b9b38ad515e2f1f889256cbb1e",
  "parents": [
    "e97032ad2e76ae0c0d011de772905c67115f74ac"
  ],
  "author": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Thu Dec 05 11:28:03 2019 +0100"
  },
  "committer": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Thu Dec 05 11:28:03 2019 +0100"
  },
  "message": "Remove ClassInitializerInfo\n\nThis removes the need for ClassInitializerInfo by leveraging the fact that we already compute dynamic lower bound type information for static final singleton fields.\n\nA prerequisite for class inlining singleton fields is that the corresponding static-get instruction cannot trigger observable side effects. Therefore, this CL optimizes the methods of synthesized lambda classes and publishes the gathered optimization feedback before starting a wave. This ensures that we will mark the class initializers of lambdas as not having observable side effects, such that we can class inline the INSTANCE fields of these lambdas.\n\n(This was not previously needed because the class inliner implicitly assumed that these class initializers did not have observable side effects.)\n\nBug: 145642327, 120814598\nChange-Id: If72c86442c69d5d1d23fead04dc69768aaa7e189",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "76b71954c3aa1b8c50ceac37fbac98c28b10b9f4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/AppInfo.java",
      "new_id": "270e91e01c68218cdb21d5ad662f5008328c85e1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/AppInfo.java"
    },
    {
      "type": "modify",
      "old_id": "78ba4617f6864ac2cac9db397bfd8ff0cfcf49ff",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexClass.java",
      "new_id": "358af04627d2e4a7b9830b41188da46c76115afa",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexClass.java"
    },
    {
      "type": "modify",
      "old_id": "e3d78cfa33e0603796fb437ae2ad3247fb069c05",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexType.java",
      "new_id": "cc39610ab2ef2fe84fad7f8d532489eb6d681743",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexType.java"
    },
    {
      "type": "modify",
      "old_id": "0605623f402dfb27feac2794dcf11fefb9f65665",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java",
      "new_id": "9fcee4a38af1309d849975a9a73d3a119f88b79a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java"
    },
    {
      "type": "modify",
      "old_id": "c4f90721aa3aa3fc7be5888bed8fc6485b69850e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java",
      "new_id": "06f1f58ba4e9991a4d5486bcea2dfd9b95dd809b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java"
    },
    {
      "type": "modify",
      "old_id": "9f5a62ada24cee75b88e4dcdbc42f3330c2c048d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java",
      "new_id": "9ccc4c274c699006422b51c25afaa3bd7de53596",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a6a9b944de7b1efa7ab4bc8f54254bc55eca5c9f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/LambdaMethodProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "0f6bd4ff2ae0b6b9cb6c06a5c0c28277914aac92",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/MethodOptimizationFeedback.java",
      "new_id": "7d4a2033599055718c04f40ae3357afcf0319268",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/MethodOptimizationFeedback.java"
    },
    {
      "type": "modify",
      "old_id": "b2bf648bce8c756cdabb4c6127a657b37b21e1f6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/MethodProcessor.java",
      "new_id": "d6e2ff3e9d230cc7250227c2b3ff709ce7053f93",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/MethodProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "5107b183e2b0fddb68d2a0c3a87b121ffe736b61",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java",
      "new_id": "9ecc62d63cd0cdc6fb21086497d5446e18c2f832",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "1787587ac1aa91b98df9ce1d161a45463299e057",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java",
      "new_id": "be529f4da8acd4b8c2bd5af09d4bfd718af507d5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e109dd7f1a0f91752891112732ca7b5471c2b5f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaBridgeMethodSynthesizedCode.java"
    },
    {
      "type": "modify",
      "old_id": "025ecb0b1d137c01a4a7495ae4c53ff6e9113786",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java",
      "new_id": "28a70b23ff0987fb6c91fc5d56b4d72d2471e574",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2dbac91363ad6dadecf95c34842d853e25acbb37",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaClassConstructorSynthesizedCode.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "29fb5c8aded86bdbc6f9b56d001eed9da2d89d92",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSynthesizedCode.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e7e3f52354e7de017a6d68c7d4fba4b6db910b2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSynthesizedCode.java"
    },
    {
      "type": "modify",
      "old_id": "06884b84e205fd85173db44ff7c5f0972559b185",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java",
      "new_id": "ed49900bdb6c24008756006b0897b27ae540dacf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2565687840db308c2edc133581e24d67c84de204",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/desugar/LambdaSynthesizedCode.java"
    },
    {
      "type": "modify",
      "old_id": "6cae2423f73fb81b0402f9b17806321e92c3a069",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java",
      "new_id": "8c07d3d5f70d9fb6fd77bc150512d22ac0659e4b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java"
    },
    {
      "type": "modify",
      "old_id": "ddb7e998413bbf0fdb1b49f0606d60334e2daff2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java",
      "new_id": "6b01c883a8263d86355ff6b94fa4167620034747",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java"
    },
    {
      "type": "modify",
      "old_id": "436f81b7f08bc67b4e1598616a9d93853134cc28",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java",
      "new_id": "7f488a14cdc41874651af5ac2154803479c400b3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "7ecbf18ae2b55bae57c45116517e5bcffbe2ab67",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java",
      "new_id": "06a94a6170225d6428385f7cd595863ccaf06cc5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java"
    },
    {
      "type": "modify",
      "old_id": "d9c40839f9da7a8cabd7662194d32f30d09b38a5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java",
      "new_id": "fd8078d7854bf246f9f6fd0034243b6a02947475",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java"
    },
    {
      "type": "modify",
      "old_id": "eac8791fe8ad07895c093bb2d820dc47c04f78be",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java",
      "new_id": "fe4985aa184f9fdc85b0021eaa285c4b2fc43023",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java"
    },
    {
      "type": "modify",
      "old_id": "a0828e90851a09654e1f51bf696cdfa2366d0825",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java",
      "new_id": "330eba607a8227d1c456da45543f3e3f7d8b6c13",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java"
    },
    {
      "type": "modify",
      "old_id": "e106dc8bade8dfe9da3a69595ce5733d78083647",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackIgnore.java",
      "new_id": "2495e589fd3026ff8c1b4f6aee8ff513500ec2af",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackIgnore.java"
    },
    {
      "type": "modify",
      "old_id": "0178a2d84720917f4d81a92d2b6898f38d5c18dd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackSimple.java",
      "new_id": "34a1fb813556a5f167415b1480b01c16755fddb3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackSimple.java"
    },
    {
      "type": "modify",
      "old_id": "74dd8867f437f1ae3e848f94a2605bdecc0acafe",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java",
      "new_id": "d599a38bd90f38e72a54adb16dd3b9ae2da01135",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java"
    },
    {
      "type": "delete",
      "old_id": "01d1bb077c87235f82477217a055b1416f17b1e8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/ClassInitializerInfo.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "a4a2ad993ac10fe5dedd811a5de50a54424966a3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InitializerInfo.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "24cb9afbbd3b09836fcb24164a6fa07d3283f940",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java",
      "new_id": "76badfb0d1515777698e970868eb38239eacfabd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java"
    },
    {
      "type": "modify",
      "old_id": "69e193064dd6ef9a8eba3d76baab572b704fbfaf",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java",
      "new_id": "708d32853d526893d170c63146184e9f27ca761c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java"
    },
    {
      "type": "modify",
      "old_id": "c85098de687e781569a7d9d1ad971e3e6e6e6c1e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java",
      "new_id": "0084e78c9344c59129d0881f9b25f1c3043fada1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java"
    },
    {
      "type": "modify",
      "old_id": "b35254eddb9e6cc3d9dd5eb7e2c9ad54e5460dc1",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/conversion/NodeExtractionTest.java",
      "new_id": "2d1f0e55f902475fc68ace7df94eaa00b3e1cb87",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/conversion/NodeExtractionTest.java"
    },
    {
      "type": "modify",
      "old_id": "880139f3404af0776f96e9490475ec68b3b865db",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java",
      "new_id": "8b027e424caaaeeafd961e4624f5762b21868df1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java"
    },
    {
      "type": "modify",
      "old_id": "4fe7fde6b3dd3e81a88d66f6c15416a93473d594",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/optimize/callsites/WithStaticizerTest.java",
      "new_id": "9b424d3c17e7e2b4aa1e2bb5c28901068e61f5b6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/callsites/WithStaticizerTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18739a4bf3fe87727cf4f546a35e43997a086ccb",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlineSingletonFieldOfOtherTypeTest.java"
    },
    {
      "type": "modify",
      "old_id": "325bdd5db1b1845136a239491a4d21b62625d474",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java",
      "new_id": "3ad4a37cc003258c92597333f9583820d01e4e60",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java"
    },
    {
      "type": "modify",
      "old_id": "dcfb5eba0cae79744dfb8e33939f7a53c7f87f5c",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/code/C.java",
      "new_id": "ae5ef865ddd8413681a39f5c936e97db23e9ccf4",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/code/C.java"
    },
    {
      "type": "modify",
      "old_id": "9b7835d51f9c824f3a50d166437bc4b6af4289f4",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/TrivialTestClass.java",
      "new_id": "86cf25e20e611d049016425264415d6a9d8e86e1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/trivial/TrivialTestClass.java"
    }
  ]
}
