)]}'
{
  "log": [
    {
      "commit": "8baa11a3626a8230a55e2e32b2d1281995a27ae4",
      "tree": "4dcab53f983682e4da30146fcd7f68803fe34d21",
      "parents": [
        "26e2eb689f595e2f1d3cd436198bc1233c4179db"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 24 10:30:03 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 24 18:52:14 2019 +0000"
      },
      "message": "Adjust ResolveRelativeEncodedDexLocation.\n\nNow that jar files are in the apex, relax the prefix check between\nthe absolute location of the oat file and the jar location for host\ncompilation.\n\nFor example we now have:\n- /system/framework/boot-core-oj.art\n- /apex/com.android.runtime/core-oj.jar\n\nWhereas before, the jar and the art file had the same prefix path.\n\nTest: m\n\nChange-Id: Ic216229dab7a853c64c98a36e32b387559f9cc0d\n"
    },
    {
      "commit": "f4efa9ed0d7616bd32b258562d6977d9b7554af2",
      "tree": "826f880e65c88f85929c64907a414013f0901801",
      "parents": [
        "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 14:12:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 17:34:47 2018 +0100"
      },
      "message": "Remove oat_data_begin checks from OatFile.\n\nMake it a CHECK() directly in the ImageSpace instead. This\ncheck was a rather weird way to prevent the use of dlopen()\nfor boot image on host because it would load the oat file\nat the wrong address. This is now done by refusing to use\ndlopen() on host when we have a memory `reservation`.\n\nAlso clean up affected files for bugprone-argument-comment.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 77856493\nChange-Id: I6f0f9d5a0542574017d98acc2f4f30a585b483f4\n"
    },
    {
      "commit": "c09cd0513b860c4301ca7bd6a9065b583d102295",
      "tree": "1c7aa4ed2b9b5b1335829461e764c94565afb71d",
      "parents": [
        "40f8a74cba008af768316f0b5bfe9502174b6d02"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 23 16:36:36 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 11:50:53 2018 +0100"
      },
      "message": "Reserve boot image memory in one go.\n\nLoad boot image components into the reserved memory.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I214f947979bc0bbfc6df4312527504e90b88a01d\n"
    },
    {
      "commit": "30025095524e471ec347633e39f26ed0606bea65",
      "tree": "533cbe1808445dcd4dd6d8b7dacc180fcc29b90a",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 19 14:43:29 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 24 14:39:06 2018 +0100"
      },
      "message": "Pass the fd to OatFile::Setup to avoid selinux errors.\n\nbug: 77853712\nTest: test.py\nChange-Id: I069cda5296b561284d71b067924e1bc4a8562710\n"
    },
    {
      "commit": "fc604a7065142b61a4d2f468ddb46733a916b4cd",
      "tree": "b529fed07e9fd9518767dd8757154693d521a0aa",
      "parents": [
        "67a3d45c89c0e43f7206936a7438dfed79fea159"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 15:43:37 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 09 13:14:53 2018 -0800"
      },
      "message": "ART: Be more robust with multidex uncompressed-dex odex files\n\nReject odex/vdex files that mix embedded and uncompressed dex files.\nThis simplifies the code and allows early detection of mismatches\nand corruption.\n\nBug: 73086368\nTest: m test-art-host\nTest: m test-art-host-gtest-oat_file_test\nTest: manual (with bug\u0027s environment)\nChange-Id: Icccb3ca29b6c5f5adefe3735c91b8b6eac113af6\n"
    },
    {
      "commit": "ec2cdf4286921131a5f9b3ed12060657ec40f636",
      "tree": "32f15162b6b74ed247e75eeb9b9cbe936760eca5",
      "parents": [
        "ee58c02b5959944a2db198a2d58355651ed29d53"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 08 16:21:25 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 04 17:08:50 2018 +0000"
      },
      "message": "Try to mmap vdex file within the address range of the ELF file.\n\nAdd ELF section for the vdex file and mmap it there at runtime.\nThis ensures that the data is at predictable location, which\nis needed to be able to reference it from native debug-info.\n\nThis does not change the amount of memory allocated, or the\nlocation of the data on disk.  However, it does change how\nthe memory is allocated - it replaces two allocations\n(ELF and vdex) by just one (ELF which includes the vdex).\n\nBug: 71579677\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\n\nChange-Id: Ie2abd36c8b6617a527368e71f932998bbe5ad38c\n"
    },
    {
      "commit": "a308a327884920cbb1e3e62964c4b5a01c29af8c",
      "tree": "4bd09065c52f18685dc9e10d9eabdcdb29a51539",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 16:51:51 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:02:27 2017 -0700"
      },
      "message": "Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\n\nThe \u0027:\u0027 separator is commonly used to separate class path elements. That\nmeans that we cannot easily encode multidex location in a classpath\nwithout complicating the parsing logic unnecessarily (e.g. when encoding\nclasspaths in the oat file).\n\nFor easy parsing and understanding kMultiDexSeparator and\nkClassPathSeparator should have different values. \u0027:\u0027 is a wide spread\nclasspath separator so this CL changes the value of kMultiDexSeparator to\n\u0027!\u0027 which is also commonly used to denote an object inside a given\ncontainer.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I30995c553d9131478c6c071b27327df6d2de06a7\n"
    },
    {
      "commit": "84f50aecdeed2d9ed3206681820e41ad6af73a9c",
      "tree": "8b2b6de40365dcfc41d9139c9c5d73b95a541b67",
      "parents": [
        "69bcf2c940d26d65767bea7417317cf9a0431e0c"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Feb 06 15:12:45 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Feb 14 09:14:20 2017 +0000"
      },
      "message": "Remove remaining uses of DexFile::GetChecksum.\n\nRemove or replace with DexFile::GetMultiDexChecksums as appropriate.\n\nBug: 34604632\nTest: m test-art-host, added image_space_test to test ValidateOatFile.\nChange-Id: I1042e87f29a242046d055f0be374ad9fbce4671a\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7",
      "tree": "87e8252ee6ca23138f867989a098b7c4338c21a5",
      "parents": [
        "1d558db0bcd841140f6fe1c6ba2e9a6de131649d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:18:43 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:19:56 2015 -0700"
      },
      "message": "Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\n\nThis reverts commit a315f5c546b796f55f4872bb6efc15eb858d9639.\n\n--\n\nRevert \"runtime: cleanup class_linker out-parameters and formatting\"\n\nThis reverts commit bc1d78daa463572c5a770cdca858a3b51d8e1b7b.\n\n--\n\nRevert \"base: replace raw pointers for out-parameters with safer out\u003cT\u003e\"\n\nThis reverts commit fb326cffc679cab8eb873b9e44795706f023cb3c.\n"
    },
    {
      "commit": "a315f5c546b796f55f4872bb6efc15eb858d9639",
      "tree": "188bcbab728423d79147fd9d9da45c2539371ac5",
      "parents": [
        "bc1d78daa463572c5a770cdca858a3b51d8e1b7b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 31 17:35:52 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 31 17:35:52 2015 -0700"
      },
      "message": "cleanup: Replace pointers with out-parameters and fix-up formatting\n\nCleans all of oat_file.h/.cc, parsed_options.h./cc, runtime.h/.cc\n\nOther files are touched only incidentally to use outof(x) instead of \u0026x.\n\nChange-Id: I0bb15111149d53bb21aac2199ef33bd35333b0ca\n"
    },
    {
      "commit": "7848da48a0a4241dedc1cc83ac4931e61575eb92",
      "tree": "58a789b6b21893135a8770496175ccc7259d7ea6",
      "parents": [
        "6c7bd25b2b2a07740bcd838c2f4024e67be83fd1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 09 11:15:04 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 21:16:31 2015 +0000"
      },
      "message": "ART: Store classpath information into oat file\n\nStore a \"dependency list\" of class-path dex-files into the key-value\nstore of an oat file. The list is made up of dex locations and\ncorresponding checksums.\n\nAdd tests for encoding, decoding and checking the list.\n\nBug: 19781184\nChange-Id: Ie700dd37e6e086db599c95d329ac1f1d2ff0b758\n"
    },
    {
      "commit": "e5fed03772144595c0904faf3d6974cc55214c8c",
      "tree": "27c242e48cabd2543f472930d1ad7e2ab86557fe",
      "parents": [
        "b93581f857e36a62f690e26e78167f2abea0f033"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 18 08:21:11 2015 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 24 12:48:09 2015 -0700"
      },
      "message": "Support relative encoded dex locations in oat files.\n\nNow when opening an oat file, the caller can pass an absolute dex\nlocation used to resolve the absolute path for any relative\nencoded dex locations in the oat file.\n\nBug: 19550105\nChange-Id: I6e9559afe4d86ac12cf0b90176b5ea696a83d0e7\n"
    }
  ]
}
