)]}'
{
  "log": [
    {
      "commit": "c5b215f7004c46a274a54e232f0cd146c7494f9a",
      "tree": "b0e628ec0c22aa1d23c42bc63a323f43358f7eba",
      "parents": [
        "5809417697955005751d60498964f6d4bd4a096f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 12 14:49:37 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 14 16:28:50 2017 -0700"
      },
      "message": "Update the context classpath after the dex files are opened.\n\nThe classpath stored in the context maybe be out of sync with the list of\nopened dex files if any of the dex file is a multidex or cannot be opened.\n\nThis CL ensures that OpenDexFiles updates the classpath with the dex file\nlocations that were open.\n\nThe change does not affect the current use of ClassLoaderContext. It is a\npreparatory step for b/62269291\n\nBug: 62269291\nTest: m test-art-host-gtest-class_loader_context_test\nChange-Id: Ibe675df9b2c06a4df8189f0d72df8b4061603a0e\n"
    },
    {
      "commit": "1991589d4515561411156473c89d77d295183bdd",
      "tree": "82ab908d83f7ecb5d67180aeff4814d873de28e8",
      "parents": [
        "053a84b762536144d5cae309ca5abd97766b4583"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:10:36 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:10:36 2017 +0000"
      },
      "message": "Revert \"Revert \"Stop using the runtime classpath in dex2oat\"\"\n\nThis reverts commit 053a84b762536144d5cae309ca5abd97766b4583.\n\nReason for revert: Prepare the CL again to be submitted after\nhttps://chrome-internal-review.googlesource.com/c/423809 gets merged.\n\nChange-Id: I1d0e3d6bf2aa16249b2d0146acd9c81149924c00\n"
    },
    {
      "commit": "053a84b762536144d5cae309ca5abd97766b4583",
      "tree": "8e09051aec03d574a7739157a6682f881b409bf8",
      "parents": [
        "84f82b9972ec29bd05b1575ae6d638255be2f285"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:08:53 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:08:53 2017 +0000"
      },
      "message": "Revert \"Stop using the runtime classpath in dex2oat\"\n\nThis reverts commit 84f82b9972ec29bd05b1575ae6d638255be2f285.\n\nReason for revert: I submitted this to ealrly. It needs to be submitted after https://android-review.googlesource.com/c/450390 gets merged\n\nChange-Id: I91e6259b61d72a48a1d18e62f53ef82f18692930\n"
    },
    {
      "commit": "84f82b9972ec29bd05b1575ae6d638255be2f285",
      "tree": "82ab908d83f7ecb5d67180aeff4814d873de28e8",
      "parents": [
        "1ccf61377290451b4e5cfe29ece5de3c8c585e0e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 18:28:08 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 19:26:41 2017 -0700"
      },
      "message": "Stop using the runtime classpath in dex2oat\n\nUse only --class-loader-context to infer the classpath that should be used\nfor compilation.\n\nThe tests and benchmarks no longer rely on --runtime-arg --classpath being\npassed to dex2oat.\n\nBug: 36044779\nTest: m test-art-host\nChange-Id: Iba4cb3489f4a1a4a421071e1889d806d6c1d0738\n"
    },
    {
      "commit": "27e0d1f3da2e0b7046dacb40794739d739e454a3",
      "tree": "d3c69ca2917325cf20998060d0e0d5f8ab6b1b8e",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 26 00:16:07 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 19:23:14 2017 -0700"
      },
      "message": "Pass the class loader context to dex2oat when optimizing at runtime\n\nUntil now we always passed the special shared library symbol \"\u0026\" when we\ncalled dex2oat at runtime without an explicit class path.\n\nThis CL changes that and passes the class loader context inferred from the\nruntime class loaders to dex2oat. If any of the runtime class loaders is\nnot supported we continue to pass the special library symbol.\n\nBug: 38138251\nTest: m test-art-host\nChange-Id: Ica43ee8a3f36dab2d9ed0e634a9f6341379c8e1c\n"
    },
    {
      "commit": "c79470dd970dd30cf3b383c635543e8af3761478",
      "tree": "fd017fa725bb05a9ff0d66dc64f9a6657a09d7c3",
      "parents": [
        "3f9186446faa01636475596335240f39472ba9f4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 12 17:37:42 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:36 2017 -0700"
      },
      "message": "Allow dex2oat to create a full class loader context\n\nWe previously checked that dex2oat sees only a single class loader. This\nCL removes the restriction and enables dex2oat to create and compile with\na full class loader context.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I03e75a75757995ce8ce3addf0bc0a708e18ac050\n"
    },
    {
      "commit": "3f9186446faa01636475596335240f39472ba9f4",
      "tree": "ac0320e73671d11551ba65867a51d74b5dc69aee",
      "parents": [
        "57d0accc081c1779edb604ab86e5a4c0cfba16eb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 19:04:20 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:36 2017 -0700"
      },
      "message": "Verify the class loader context when loading oat files\n\nPreviously, the oat_file_manager would expect and perform validation on a\nsimple classpath: a list of dex files separated by \u0027:\u0027.\n\nThis is no longer enough since the oat file may encode a chain of class\nloaders now. The CL moves the validation logic in ClassLoaderContext and\nextends it to verify the complete chain of class loaders.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I8ac9c65db1a14909aaecb04fa7a7115ddedc673f\n"
    },
    {
      "commit": "57d0accc081c1779edb604ab86e5a4c0cfba16eb",
      "tree": "15af07023c0576e36e4fcfb78dd6e29890edcfd2",
      "parents": [
        "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 17:41:30 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:33 2017 -0700"
      },
      "message": "Create a class loader context starting from an existing ClassLoader\n\nExtend ClassLoaderContext to be able to generate a context from an\nexisting class loader.\n\nThis will be used in extending the duplicate class check to cover\nDelegateLastClassLoaders.\n\nMost of the functionality is migrated from OatFileManager with some\ncleanups consisting of extra docs and more conservative checks on the\nintegrity of the class loader chain.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: If7c18cb75bfc9e6784676f96a666bf13b04c8b8b\n"
    },
    {
      "commit": "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7",
      "tree": "e588dee4a455cb248ec9a1830ee7d1a7c12acfbc",
      "parents": [
        "1ce7085831316272f071a01d14eea8048264a7bf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jul 07 18:40:50 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 12 13:02:19 2017 -0700"
      },
      "message": "Move dex files dependencies (en/de)coding to ClassLoaderContext\n\nEncode the full class loader context in the oat file (rather than just a\nlist of dex files).\n\nThe context encoding matches the format used by dex2oat with the addition\nof checksums.\n\nTemporarily assert that at decoding time we are operating on a\nPathClassLoader until the checking logic covers all supported cases.\n\nAlso, bump the version of the oat file because the format of the classpath\nkey has changed.\n\nThis is a transition step to minimize the size of follow up changes.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I9ec0cfe092ce1afccb741a36e737896880d5f1d2\n"
    },
    {
      "commit": "87e2cb64ab02d9bdc48255130c67168c809c5f62",
      "tree": "2c4610937776365e440f9ec689daf737b111c967",
      "parents": [
        "c5e4a53252bda0052fb642424e9f5ba908603eb8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 13 21:48:45 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 10 17:08:06 2017 -0700"
      },
      "message": "Add support for processing class loader contexts\n\nInitial support for recognizing the class loader contexts.\n\nIn order to correctly compile dex files which at runtime are loaded with\na non-trivial class loader chain we need to make dex2oat aware of the\nprecise runtime context.\n\nThis CL adds the infrastructure to process arbitrary and arbitrary chain\nof class loaders. ClassLoaderContext is able to parse a class loader\nspec from a string and create the runtime structure based on it.\n\nThe integration with dex2oat and oat file assistant will follow up.\n\nThe string specification looks like\n\"PCL[lib1.dex:lib2.dex];DLC[lib3.dex]\"\n\nIt describes how the class loader chain should be build in order to\nensure classes are resolved during dex2aot as they would be resolved at\nruntime. This spec will be encoded in the oat file. If at runtime the\ndex file will be loaded in a different context, the oat file will be\nrejected.\n\nThe chain is interpreted in the natural \u0027parent order\u0027, meaning that\nclass loader \u0027i+1\u0027 will be the parent of class loader \u0027i\u0027. The\ncompilation sources will be added to the classpath of the last class\nloader. This allows the compiled dex files to be loaded at runtime in a\nclass loader that contains other dex files as well (e.g. shared\nlibraries).\n\nNote that we accept chains for which the source dex files specified\nwith --dex-file are found in the classpath. In this case the source dex\nfiles will be removed from the any class loader\u0027s classpath possibly\nresulting in empty class loaders.\n\n* This is the first CL, which adds the infrastructure for processing\na class loader context. Currently it CHECKS that only a single\nPathClassLoader is created.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I312aa12b5732288f3c1df4746b5775a32e0bfb04\n"
    }
  ]
}
