)]}'
{
  "log": [
    {
      "commit": "a879bdf5e9e1f2e1ff01ce9a66af3682188079bf",
      "tree": "0621e683ad6710e590a26fd7ae399bb077edc7de",
      "parents": [
        "142816a6ac2a9261d37cffb7a7367a96f712fde2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 19 16:25:47 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 20 09:43:45 2019 +0000"
      },
      "message": "Revert^2 \"Fix CompilerDriver\u0027s handling of boot image extension.\"\n\nThis reverts commit 96d8585ebb9e21fc27a59ddd4173ca62ad93c194.\n\nFixed verification from oat files when compiling a boot\nimage extension. Normal verification can fail if the\nprimary boot image is quickened.\n\nTest: `art/tools/buildbot-build.sh --target` with master-art manifest\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 144751090\nChange-Id: Ibc4e7ab1ec8451c9b5c87b6e87ab9807ac22e284\n"
    },
    {
      "commit": "ffc791c748dd28cc6bc7fff825b3c1b7af96abb3",
      "tree": "384238d8893cd2f2a41b020a91a6ee479bdae663",
      "parents": [
        "2f8c1ac61b0c611d67badea70261c851ed19b82a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 14 19:19:28 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 19 07:34:07 2019 +0000"
      },
      "message": "dex2oat: add --cpu-set command-line option\n\nEnables affinitizing dex2oat threads to a specific group of CPUs.\n\nBug: 141446571\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d0,1 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d,0,1 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d,, 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d0,a 956\nTest: cmdline_parser_test\nChange-Id: I4bb1519beacd329da1a69af31982a6154d315865\n"
    },
    {
      "commit": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\n"
    },
    {
      "commit": "2191069047034ad891ea15f60a217246edc38d53",
      "tree": "5fcdb37aa8d1e052979631adac01fe74794748b3",
      "parents": [
        "add69acb7db965bd8d817a185e962e5474f690d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:27:03 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 14:04:57 2019 +0000"
      },
      "message": "Revert^4 \"Boot image extension.\"\n\nThis reverts commit f5c5eb30fc71e0c305d678bd3c1c995a5c36d508.\n\nRemoved wrong check for no dex files. Dex files can also be\nspecified with zip-location and file descriptors. Added a\nregression test to dex2oat_test.\n\nFixed the image checksums validation to use the appropriate\npart of BCP rather then full BCP. This fixes errorneous\nrejection of oat files compiled against partial BCP.\n\nChanged dex2oat_image_test to use ART_BASE_ADDRESS to try\nand avoid failures when reserving space for loading the\ncompiled images.\n\nTest: Additional tests in dex2oat_{,image_}_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I062cbecd0020f5c24353eb75643ea5905cb6f4fd\n"
    },
    {
      "commit": "f5c5eb30fc71e0c305d678bd3c1c995a5c36d508",
      "tree": "2f08c5562d3b35b7f0139f772b6324a9689d01ea",
      "parents": [
        "acdb9a350fede0776e1f4d6d04dc3246249345e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 12:25:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:25:07 2019 +0000"
      },
      "message": "Revert^3 \"Boot image extension.\"\n\nThis reverts commit 02820f424714e711bbd4cb4b04a109416eb0c8b8.\nAlso reverts commit beb66b38dcce937d7eee9ef2d07b6402c720f8ee\nthat contained a follow-up fix.\n\nReason for revert: b/144001974\n\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I4da5330c3efa9f0c3508e85344c031d3b360ca0a\n"
    },
    {
      "commit": "02820f424714e711bbd4cb4b04a109416eb0c8b8",
      "tree": "ca7554d4dd148a3832b46c19fd9bd706d83ed4a4",
      "parents": [
        "962a110efb2c6a2b0161f919bfd5921e3dee7168"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 10:31:27 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 15:33:02 2019 +0000"
      },
      "message": "Revert^2 \"Boot image extension.\"\n\nThis reverts commit 9f459c4ef60d771fc4eb8da1f709f479ca23a6ab.\n\nFixed the extension test to be more hermetic. Added a clean\nspec to work around broken dependencies; obsolete images may\nhave been a reason for boot time regressions.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nBug: 143492855\nChange-Id: I37e714d53e66f94f791e6d1e9f4d78bf7bcb2116\n"
    },
    {
      "commit": "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab",
      "tree": "5c998b1bd23d0a348ec77a4fcd760e7e9cac00f7",
      "parents": [
        "9e709debacab08be8adbac366e0555ca302a3bed"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:23:06 2019 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:29:26 2019 +0000"
      },
      "message": "Revert \"Boot image extension.\"\n\nThis reverts commit 4f6ebe89af462ff05d97433deb2bca3f3b011fc2.\n\nReason for revert: b/143492855\n\nBug: 119800099\nBug: 143492855\nChange-Id: I27da7e790f61f836701f8f39c98d14b507af8b9e\n"
    },
    {
      "commit": "4f6ebe89af462ff05d97433deb2bca3f3b011fc2",
      "tree": "856ef32276112b78fb51bd95dfd545217b86cb33",
      "parents": [
        "3155aa4e6167c5f346aa5e90da43ee0e9d04d2ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 15:23:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 12:48:46 2019 +0000"
      },
      "message": "Boot image extension.\n\nAllow the boot image to be split into the primary boot image\nand any number of optional boot image extensions.\n\nTest: New extension test in dex2oat_image_test.\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nChange-Id: If5a2fa1c0facccbfaf0a1f0cb015ea9233f1f4c6\n"
    },
    {
      "commit": "436c6f5fae95aae332361060778599d0ef24a167",
      "tree": "eb81e98fc92a58a31efb6754f0f73d67720b7e24",
      "parents": [
        "0c63f76d90ed5b5dc4bc420fc51ffc383f8d87d9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 25 14:50:14 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 30 13:59:29 2019 +0000"
      },
      "message": "Oat file checksums for boot image extensions.\n\nModify the oat checksums check for boot image extensions.\nThere may be more extensions loaded at runtime than when the\noat file was compiled, so we need to check the checksum type\nfrom the checksums string to determine whether to use an\nimage checksum or dex file checksum. Different checksums\ncan be valid for the same boot class path.\n\nThe creation of boot image extensions and other aspects\nof loading them shall be implemented in separate CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I43d1f9464678784e902ad72f4a89cf38b4786122\n"
    },
    {
      "commit": "4e6abea8f7568f6bbbc6c11470cfd89e83caacc6",
      "tree": "53e3df5d0f14376c04cf5ba270ba372710102599",
      "parents": [
        "67bf99b8a575b15c117a3fbf7aae421330e4795a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 10:20:20 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 14:26:58 2019 +0000"
      },
      "message": "Create type lookup tables early.\n\nThis is a partial revert and cleanup of\n    https://android-review.googlesource.com/1143022\nto create the type lookup tables before compilation.\nCreating them too late increased the compilation time.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Manual, time dex2oat --compiler-filter\u003dquicken.\nBug: 142680736\nBug: 29790079\nChange-Id: Ied3f86a80b4f2aaacb5acc9716652f06bdc98c82\n"
    },
    {
      "commit": "0866ea41c21df6672b302eabe5b98ebb40c92613",
      "tree": "71d1adb37e646b41d4926edc0207694a0ade2036",
      "parents": [
        "765b87dee25855aed0c71e029346e99d7d91f9f0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 12:04:17 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 16 14:07:16 2019 +0000"
      },
      "message": "Revert^2 \"Refactor oat file writing.\"\n\nThis reverts commit 50c812abbe8a8f64d2def49c549eaa005b5f32c7.\n\nFix the VerificationResults to be created before Runtime.\nThis is needed for recording verification data during early\nRuntime initialization when compiling the boot image.\nThis also cleans up a TODO for bug 29790079.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Manual, prebuilt files do not change with this CL.\nBug: 142680736\nBug: 29790079\nChange-Id: I4350e7a67a16ee1653a8f2fce6244e353a3597c4\n"
    },
    {
      "commit": "50c812abbe8a8f64d2def49c549eaa005b5f32c7",
      "tree": "083d1d03f5fd32e4a3bd466a9aad276a7be067b6",
      "parents": [
        "af47ca01e96c280a15c24e2ae8152f61ffb8c1ce"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 08:57:00 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 12:01:50 2019 +0000"
      },
      "message": "Revert \"Refactor oat file writing.\"\n\nThis reverts commit 0d192d2c08116cab8244a6eb229aa784bc6cfefa.\n\nReason for revert: Boot time regression.\nBug: 142680736\n\nChange-Id: I65c8f687668c1d7cec293b6b8bfe7147181c0a10\n"
    },
    {
      "commit": "0d192d2c08116cab8244a6eb229aa784bc6cfefa",
      "tree": "a84963a1f78d1eaa7405ce63fee1b6a8dff12efc",
      "parents": [
        "9b16e344b246096d228dd4b41ff711884bcfcb3e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 10 16:53:07 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 11 13:44:48 2019 +0000"
      },
      "message": "Refactor oat file writing.\n\nSince we\u0027re writing dex files to vdex rather than oat files,\nwe can write them before knowing the oat header size. This\nsimplifies Runtime creation in dex2oat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6e0fa9ddc6671cff99e70507b67e052df7ad87c3\n"
    },
    {
      "commit": "ad909af6c4be163bf2d5f4ca1e0487cc619a5041",
      "tree": "737bdd7957eb6c74ebaf126acfe0ff355f7b5f0a",
      "parents": [
        "6da456969b2b4294cda98e6d0bc16a4493ad9652"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Jul 16 17:02:44 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 02 10:28:27 2019 +0000"
      },
      "message": "Update references to the ART APEX.\n\nTest: Build \u0026 boot\nTest: atest CtsJniTestCases CtsCompilationTestCases CtsSimpleperfTestCases CtsBionicTestCases\nBug: 135753770\nChange-Id: I9635afaf7996407063a0d9ed474b95c0b0e4f890\nMerged-In: I9635afaf7996407063a0d9ed474b95c0b0e4f890\n"
    },
    {
      "commit": "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6",
      "tree": "925a77092a8e09dc78dd4d2347bd1182576419c2",
      "parents": [
        "9e0099f1c74236bd3f46955ec03856be089529b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 25 17:28:02 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:06:33 2019 +0000"
      },
      "message": "Remove GC type restrictions on --force-determinism.\n\nThese restrictions are obsolete after\n    https://android-review.googlesource.com/983105 .\n\nTest: ART_USE_READ_BARRIER\u003dfalse ART_DEFAULT_GC_TYPE\u003dSS \\\n      m test-art-host-gtest-dex2oat_test\nTest: ART_USE_READ_BARRIER\u003dfalse ART_DEFAULT_GC_TYPE\u003dSS \\\n      m test-art-host-gtest\nChange-Id: Ia2ccee857b6e2db6512649b418a53b60efc6741c\n"
    },
    {
      "commit": "6623594e6c65035c3096c8edcbf6374d22f6d4e0",
      "tree": "cd3f6eaf7138994e8176f6ce0456b840087e615e",
      "parents": [
        "2cd9437e7067968400fe6f703a078b798b320693"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 03 16:05:17 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 08 08:43:52 2019 +0000"
      },
      "message": "Set image base address after the boot image.\n\nAnd restrict --base\u003d to boot image compilation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ie94476ce421eb33d92405e543b2a83ebe0bbfaef\n"
    },
    {
      "commit": "4b3946a55516b9218063171d827009a1ffde7ba3",
      "tree": "17e8ca78dd5066228e69e373fb45516116515360",
      "parents": [
        "50bc8fb89c79874e731f245abda3b9e48a541cfe"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 02 15:24:18 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 03 14:25:30 2019 +0000"
      },
      "message": "Remove small and tiny method options\n\nThese are unused and nops.\n\nTest: test-art-host-gtest\n\nChange-Id: I6421387d53ec8692cf420be71ec47e1ef5e61f19\n"
    },
    {
      "commit": "f68b698e4774275e87bc73fa916faca4c6b11744",
      "tree": "7f62b21dbffad5edd277727fe54978cdc6b9c8e5",
      "parents": [
        "00b831e12cafb629952d2df9eb08b717f4167973"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 27 09:40:20 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 28 21:29:51 2019 +0000"
      },
      "message": "Remove dex2oat image-classes support\n\nDeprecated, new approach is to use boot image profile.\n\nTest: test-art-host\nBug: 63746626\n\nChange-Id: I5332b6f00ce91faab3df3e9e66e17abd0f8ee059\n"
    },
    {
      "commit": "814a80f77ac542019cfa479bde12b9a25b06060c",
      "tree": "b2e2fa065787cdc731d384c2341e9301f7fdab06",
      "parents": [
        "d5d645ffec60deedae9d1382db599e3331319cdc"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 26 15:01:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 27 03:51:22 2019 +0000"
      },
      "message": "Initialize MemMap before parsing the profile\n\nThe profile might be passed to dex2oat as .dm file, in which case we will\nattempt to map it directly from the archive.\n\nTest: manual\nChange-Id: Icded6a3c46027eb076fc9a28844a8a2db43c52ab\n"
    },
    {
      "commit": "e1de95c9928f9e468850e88fadaf3f0ad8165017",
      "tree": "23c0ee3c03a31a710d1ece8d67b8ec85f8262881",
      "parents": [
        "81d15be76923ec23b86e72bbc2d3a2a6542a325e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 05 15:26:20 2019 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 05 18:14:52 2019 +0000"
      },
      "message": "Document ART\u0027s `--verbose-methods` compiler option in dex2oat\u0027s usage.\n\nTest: Run \"dex2oat --help\" and check the output\nChange-Id: Ib496563379a11a1e6d036a80c7f862dd67673999\n"
    },
    {
      "commit": "c5e3a52473772a6aba3a8407b0151f6046c5e21b",
      "tree": "3f28b8774ebe74eabe73407c52edb5dcec697a97",
      "parents": [
        "498019ab91ea40352ea1e54a8425e1689dc1317d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 30 09:47:55 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 30 20:32:36 2019 +0000"
      },
      "message": "Make compiling an apex image explicit.\n\nAnd when compiling an apex image, discard dex files not present\nin an apex.\n\nTest: m\nBug: 119800099\nChange-Id: Ie91c5b8d271783f04e4c1501f315a3ec59137475\n"
    },
    {
      "commit": "f276f957e5293998c1fbf14114434787392a1d12",
      "tree": "a45c410e4fd57c0e13a8a9fb46d28f6865e2c826",
      "parents": [
        "e7e195db8eb04a58c4c467bbe357841fdf621347"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Mar 26 08:15:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 26 17:35:30 2019 +0000"
      },
      "message": "dex2oat: Avoid extra std::string copy\n\nThe function Fatal() takes a const std::string reference, so it\u0027s\ninefficient to pass it std::string::c_str().  While it\u0027s not\nuseful optimize a fatal code path, we still fix this so static\nanalysis tools finding this issue in other parts of the code\nare less noisy.\n\nTest: TreeHugger\nChange-Id: I42231b40c1af2f866c451e169f2d8362154853b0\n"
    },
    {
      "commit": "a72ca6c3e0c0a5c9f7708a6f0fd287f9e3a2629b",
      "tree": "285f2ba27f2b8be0c396bb96397f3e3de0b80288",
      "parents": [
        "dfad9fc142b73b68b7be1e822144b60214bc9607"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "Koji.Fukui@sony.com",
        "time": "Mon Mar 25 17:39:07 2019 +0900"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 26 15:30:30 2019 +0000"
      },
      "message": "Don\u0027t attach thread before dex2oat finish creating runtime\n\nSymptom:\nRuntime is sometimes aborted when WatchDog of dex2oat is triggered by\nDex2oatWatchdogTest#TestWatchdogTrigger.\n\nRoot cause:\nWatchDog of dex2oat calls Runtime::AttachCurrentThread() before dex2oat\nfinishes creating runtime. It causes runtime aborting.\n\nSolution:\nDon\u0027t attach thread when dex2oat doesn\u0027t finish creating runtime.\n\nTest: make test-art-host-gtest64\nBug: 129247034\nChange-Id: Ifb8a4f2c162f6185a726a987bb41495f6db440f4\n"
    },
    {
      "commit": "8982186538943d31b9db0b94e9bf10b5c4a75ae7",
      "tree": "df8f79208eed6bd8801f9e4ec11a1d08e85078a5",
      "parents": [
        "4bb2af5e6163cf68ec65c5497983303302a15a09"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 19 13:57:43 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 22 13:48:56 2019 +0000"
      },
      "message": "Support FDs for class loader context dex files\n\nWhen compiling secondary dex files, dex2oat/dexoptanalyzer must open\nall dex files in the given class loader context. However, these tools\ndo not have the SELinux permission to open app data files and instead\nrely on installd to open them and pass file descriptors via command\nline arguments.\n\nThis patch extends ClassLoaderContext::OpenDexFiles to support opening\ndex files from a provided list of FDs, assuming the order corresponds\nto the flattened class loader context. FDs can be passed to dex2oat/\ndexoptanalyzer using a new \u0027--class-loader-context-fds\u003d\u0027 command line\nargument. The format is a colon-separated list of integers.\n\ndexoptanalyzer is also extended with a separate mode in which\ndexopt-needed analysis is not performed, only the class loader context\nis flattened and list of its dex files is printed to standard output\nas a colon-separated list of paths. This mode is enabled with\n\u0027--flatten-class-loader-context\u0027 and is used by installd to obtain a\nlist of files it should open for dex2oat/dexoptanalyzer.\n\nBug: 126674985\nTest: atest installd_dexopt_test\nChange-Id: I46a671c90d14ad8615508c106a88ac1ee8a4ef28\n"
    },
    {
      "commit": "2faab0064bccdf06a454ba5fc37f2cfeceab78bc",
      "tree": "bc51a211068019d77e7739164adf5be5c6333b7b",
      "parents": [
        "5f1465ff689eccbb1b6d15160d1a3700793956da"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 16:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 20 15:20:54 2019 +0000"
      },
      "message": "Create libelffile library for ELF file manipulation.\n\nMove some of our tooling to library to make it reusable.\n\nRemove MIPS support from the ELF builder.  This is slightly\neasier than making it independent of the runtime.\n\nBug: 110133331\nTest: test.py -b --host\nChange-Id: I93343808d0e27ee8e1117e713a2503e8179fc245\n"
    },
    {
      "commit": "de1b2a2113b9e2c44b90c441177060142c7abbfd",
      "tree": "1e710fb3c5fdf8c11858a6a2418a53a5ad1ab1d8",
      "parents": [
        "ffe26cc54fac4f1997e5dbf6991da9e95ce49e31"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 27 09:10:57 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 27 12:44:48 2019 +0000"
      },
      "message": "Revert \"Revert \"Add support for booting with a boot classpath not fully AOTed.\"\"\n\nThis reverts commit 14bfeddf2e434954f0ca36687ac0fc5dc6412bd3.\n\nReason for revert: Removes obsolete DCHECK\nBug: 119800099\n\nChange-Id: Ia984f95300c6b96165f0179bfc2f66b012bf5dbe\n"
    },
    {
      "commit": "14bfeddf2e434954f0ca36687ac0fc5dc6412bd3",
      "tree": "59b23768c4d886e99bd81968e0eaf26ff2160a37",
      "parents": [
        "e55ea985ab4f77ca9557e33a2d29dc1a1f0ac078"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 26 22:16:07 2019 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 26 23:59:26 2019 +0000"
      },
      "message": "Revert \"Add support for booting with a boot classpath not fully AOTed.\"\n\nThis reverts commit 7417ce97c4dcabbd7423d46ff9b7cdaf95c1e0f9.\n\nReason for revert: Breaks debug mode\n\nBug: 119800099\nBug: 126239181\nChange-Id: I2d4a79f957a020cc6404a130536a416daebc94e3\n"
    },
    {
      "commit": "98b970dd7486fd8a5b039e1256584c20f60309bb",
      "tree": "59810fa35878c443711117bf90be161e4b676bee",
      "parents": [
        "c216c190c425d64c6b0485b4fb8513024a0c8d62",
        "7417ce97c4dcabbd7423d46ff9b7cdaf95c1e0f9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 20 16:38:58 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 20 16:38:58 2019 +0000"
      },
      "message": "Merge \"Add support for booting with a boot classpath not fully AOTed.\""
    },
    {
      "commit": "038924b75f06b91c2a7e944196ca11f118ce182f",
      "tree": "fb3073918686ec6f54dce65d2697c0e46f05a272",
      "parents": [
        "03c6b174a4e412e9bb62935c4ee15b5445e517f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 19 15:09:35 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 20 10:40:05 2019 +0000"
      },
      "message": "ART: Reduce dependencies on CompilerDriver.\n\nPreparation for moving CompilerDriver and other stuff\nfrom libart-compiler.so to dex2oat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ic221ebca4b8c79dd1549316921ace655f2e3f0fe\n"
    },
    {
      "commit": "7417ce97c4dcabbd7423d46ff9b7cdaf95c1e0f9",
      "tree": "3e84a40b0da5f826cbfd5ff4fb93c0b3dd4355e3",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 01 10:52:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 19 17:59:31 2019 +0000"
      },
      "message": "Add support for booting with a boot classpath not fully AOTed.\n\nBug: 119800099\nTest: adb shell setprop dalvik.vm.boot-image \"/system/framework/nonexistent.art\"\n\nChange-Id: I6641399f43c24702f19f4d976c6054d77186799e\n"
    },
    {
      "commit": "8581e2a234b562880c1d6c6b5ad14d23f7b597ed",
      "tree": "460059a1717d7507fa2854c3d458ce0250ba2bbd",
      "parents": [
        "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 15:54:55 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 14:13:58 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view.\n\nThis replaces the last few StringPiece uses and removes\nthe stringpiece.h.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I1bb5d05df47319b6ca386db01e14ce048ae54daf\n"
    },
    {
      "commit": "7909e1e4cc741b38b25328e2f9077beb7ecd018b",
      "tree": "b59583aa7e9d865d46c5bc8dec00729c649d4756",
      "parents": [
        "ca3c6d9231aa8e4a9ca7c9040398d57f130441a0",
        "7f88c1a269754001bfcaf311b378cf1cc71acf84"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 05 12:50:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 05 12:50:51 2019 +0000"
      },
      "message": "Merge \"ART: Enable ISA features run-time detection for ARM64\""
    },
    {
      "commit": "5ffefaa41de9b9e711f6e8bc7ed9ff9e9d844fe7",
      "tree": "359584429e9ef94c848551180d2ad73fa61d618a",
      "parents": [
        "b8f88f33b5ad0a593e5c63beab45d05f4c791bf4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 25 01:04:54 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jan 31 14:24:04 2019 -0800"
      },
      "message": "Ensure the correctness of fast verify\n\nWe cannot guarantee that the resolution recorded in the vdex file is\ncorrect when the boot classes are redefined. For example we might be doing\nonly sdk verification and not have the entire context available - as such,\nif an app redefines a class that is in the boot classpath but not the sdk\nwe might record the wrong resolution. Another example is OTA time, when\nthe boot classpath may change.\n\nThe CL discards the vdex file when the app redefines classes from boot\nclasspath.\n\nTest: test/testrunner/testrunner.py -t 719\nBug: 122968669\nChange-Id: If0c56b1970d8ebe701d198ffccec52f586aea9e6\n"
    },
    {
      "commit": "7f88c1a269754001bfcaf311b378cf1cc71acf84",
      "tree": "147bb988929e8bd8827c4b148f28da4c28c0ea70",
      "parents": [
        "5247113f3277fd679e3e1beeb6fbfb30797aa481"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Tue Nov 06 11:42:41 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jan 30 14:09:25 2019 +0000"
      },
      "message": "ART: Enable ISA features run-time detection for ARM64\n\nOn a target run-time detected ISA features can be more accurate than\ninstruction set features based on a build-time information such as an\ninstruction set variant or C++ defines. Build-time based features can\nbe too generic and do not include all features a target CPU supports.\n\nThis CL enables instruction feature run-time detection in the JIT/AOT\ncompilers:\n\n- The value \"runtime\" to the option \"--instruction-set-features\" to try\nto detect CPU features at run time. If a target does not support run-time\ndetection it has the same effect as the value \"default\".\n- Runtime uses \"--instruction-set-features\u003druntime\" if run-time detection is\nsupported.\n\nThe CL also cleans up how an instruction set feature string is processed\nby InstructionSetFeatures::AddFeaturesFromString. It used to make redundant\nuses of Trim in subclasses. The calls are replaced with DCHECKs\nverifying that feature names are already trimmed.\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test.py --target --optimizing --interpreter --jit\nTest: art/test.py --host --optimizing --interpreter --jit\nTest: Pixel 3 UI booted\n\nChange-Id: I223d5bc968d589dba5c09f6b03ee8c25987610b0\n"
    },
    {
      "commit": "163a37ad5f2d0b16bdd32fb8964580991900049a",
      "tree": "58d9602caf8896bf08b80762dc893ecf9ad4a90d",
      "parents": [
        "b121449e6efcb1a01355059afb705bbd76230df2",
        "62afcf50d086dd6d265be82308ea5c2c10b94ede"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 07 21:38:16 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 07 21:38:16 2019 +0000"
      },
      "message": "Merge \"Add ability to store invocation information in an external file.\""
    },
    {
      "commit": "19667a0277ac383bc49d40d2717ddd5eded961da",
      "tree": "3f20da020b90202e697ccc7d21739c10455474a4",
      "parents": [
        "46a8938026c425d54f2c02631ca584b4d1f2666c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 21 15:26:19 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 21 15:26:19 2018 -0800"
      },
      "message": "Fix dex2oat usage error\n\n--compilation-reason usage was out of place.\n\nTest: manual\nChange-Id: Id6ecba9f1a97cbba49b67bfd6ad924e56ce5ae5e\n"
    },
    {
      "commit": "62afcf50d086dd6d265be82308ea5c2c10b94ede",
      "tree": "a61f1046df65e84c901d3d13b62cf3e14ea56968",
      "parents": [
        "5c030d3c25b958b8d3157d4cc7d807fa89786fec"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 18 14:19:25 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 19 09:14:39 2018 -0800"
      },
      "message": "Add ability to store invocation information in an external file.\n\nIt is sometimes useful to save the invocation that generated an odex\nfile seprately from the file itself. This adds a\n--write-invocation-to\u003d\u003cfile\u003e flag to dex2oat that lets one do this.\n\nTest: m droid\nTest: ./test.py --host -j72\nBug: 119332327\nChange-Id: I3fe07e7daba3d27b49fd5b5aed7621e5cc62ab46\n"
    },
    {
      "commit": "d6f8c8b2773f08c08bb7d1658282a8891a1a52e2",
      "tree": "a98557d03f5c68e256b4adfe35eee67137525c86",
      "parents": [
        "35bd06e1bd193f370422414a6e1027b61976351d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 18 15:27:28 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 18 17:20:44 2018 +0000"
      },
      "message": "Fix `pthread_cond_timedwait()` error processing in dex2oat.\n\nThis function does not set `errno` on error; use the returned value as\nerror code instead.\n\nTest: m dex2oat\nBug: 121130576\nChange-Id: I32a2aeaef854930efac83e16fcb6a0a2d6f88090\n"
    },
    {
      "commit": "0ace5633680af8864b76b4f45d63b3407e4dcdf5",
      "tree": "526435a2877d3d04eaa471238b4efd37a347d05d",
      "parents": [
        "d97e00c4f6e8735a854f4443b8bd08fc5a251ce5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 14 11:11:47 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 14 13:12:15 2018 +0000"
      },
      "message": "Revert^2 \"Allow boot image for a part of the boot classpath.\"\n\nThis reverts commit fb83d76a8b186df05f874216b535f5ad57e7bd02.\n\nFixed host run-test dependencies, cleaned up target run-test\nand gtest dependencies.\n\nTest: rm -f out/host/linux-x86/framework/conscrypt-hostdex.jar\n      testrunner.py -b --host --optimizing -t 660-clinit\nBug: 119868597\nChange-Id: Ia0a5aba0223ae6616bf3e109daf0af7b8355d048\n"
    },
    {
      "commit": "fb83d76a8b186df05f874216b535f5ad57e7bd02",
      "tree": "f3db51fcd564929652433e7182eda9ebc7a9bc29",
      "parents": [
        "4433c4351aab98005e12a6b53905678758b74665"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 23:30:25 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 23:30:25 2018 +0000"
      },
      "message": "Revert \"Allow boot image for a part of the boot classpath.\"\n\nThis reverts commit 4433c4351aab98005e12a6b53905678758b74665.\n\nReason for revert: May be breaking tests.\n\nChange-Id: I3b690dbb06278dc1adce5a389fff938a692bdebd\n"
    },
    {
      "commit": "4433c4351aab98005e12a6b53905678758b74665",
      "tree": "fecf5b03a081dc78df4b058210bb4935d2f7c75c",
      "parents": [
        "6b36d8025de5237b57e7bf23033bfc61a112d6cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 04 14:57:47 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 12 16:18:56 2018 +0000"
      },
      "message": "Allow boot image for a part of the boot classpath.\n\nInstead of recording a single uint32_t boot image checksum\nin the oat header, store a string representing composite\nboot class path checksums in the key-value store.\n\nWhen checking the boot class path while loading the boot\nimage, allow the boot class path to contain more components.\nThe runtime shall then load the additional dex files from\nthese components.\n\nTest: Exclude conscrypt from the the core image modules.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\nChange-Id: Ia872fdedea0570ace2c8e597ddb3c6f63a43e62a\n"
    },
    {
      "commit": "91f1032505cfaec3aef51fc0a3085b213813f0ed",
      "tree": "6469e772d9fb562d26dc1d22dd0b71844bbb743f",
      "parents": [
        "573b3877fac3c5a4a9703301502694fe7219b21c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:04:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:13:55 2018 +0000"
      },
      "message": "Revert^2 \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit db4b1deebf425be5f1d0f597d1ef540f19908324.\n\nFixed JDWP tests, see \"Test:\" stanzas below.\n\nChange-Id: I6fb56ac990b78164cbd3f93c9f6df66e0dd9a813\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\n"
    },
    {
      "commit": "db4b1deebf425be5f1d0f597d1ef540f19908324",
      "tree": "5851aab8a4d71b49dbd272b822bfd1ae2cbd08df",
      "parents": [
        "e3c6dfe2009d2fad6f8e4401cb17935bdd09ab9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:18:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:23:26 2018 +0000"
      },
      "message": "Revert \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit d19085141ad9c71eae1b0ff585999ac8e27dadd4.\n\nAlso squash a revert of\n    Fix oatdump tests on target.\n    (commit 77eea0898aca2881a87afd177a0422870c39a318)\n\nReason for revert: Broke JDWP tests.\nBug: 119868597\nChange-Id: I005097d2d96014c961e5a4c0b089e7675004febc\n"
    },
    {
      "commit": "ed8b4ac3d7a78cc4976fa24a34bac92f4fd47a27",
      "tree": "8292de7f2a4e8b9c0526d05a604668da11e1980e",
      "parents": [
        "a9a0973ff03ce2c2d1ec65695ad0f4cd8ed170a7",
        "2afaff7e9171992b0e2e95d0f485782d28e1b9dc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 08:11:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 08:11:24 2018 +0000"
      },
      "message": "Merge \"Refactor CompilerDriver::CompileAll().\""
    },
    {
      "commit": "2afaff7e9171992b0e2e95d0f485782d28e1b9dc",
      "tree": "96c7ea4a13e8a9a191d58002de89fb005231980e",
      "parents": [
        "6a98f89c4ad645b04d6c80d3d7e260c59bf6f193"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 30 17:01:50 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 16:26:43 2018 +0000"
      },
      "message": "Refactor CompilerDriver::CompileAll().\n\nTreat verification results and image classes as mutable\nonly in CompilerDriver::PreCompile(), and treat them as\nimmutable during compilation, accessed through the\nCompilerOptions. This severs the dependency of the inliner\non the CompilerDriver.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I594a0213ca6a5003c19b4bd488af98db4358d51d\n"
    },
    {
      "commit": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "d378a567a435a80be9ab7eb8bfe0359c1240c0ff",
      "tree": "28e96907cda376e51289ee83d8071565f6ceba6b",
      "parents": [
        "e2ca5cfd18664ad9934102c14fd28cde2736b144",
        "1a8429680f9d08d5f2b49fd93f9ad4df81b7cb66"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 30 18:40:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 30 18:40:34 2018 +0000"
      },
      "message": "Merge \"Add image compressed blocks\""
    },
    {
      "commit": "1a8429680f9d08d5f2b49fd93f9ad4df81b7cb66",
      "tree": "75bb0ef44acf50a3108e85529f0495176afbced9",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 15:09:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 29 17:01:44 2018 -0800"
      },
      "message": "Add image compressed blocks\n\nAdd support for splitting the image into a set of solid blocks.\n\nAdded dex2oat option --max-image-block-size and correspodning image\nunit test.\n\nMotivation: Enable parallel image decompression in the future.\n\nBug: 116052292\nTest: test-art-host\n\nChange-Id: I37c6c6a43ef94c4a62bf38a0cf51f26ce06347ac\n"
    },
    {
      "commit": "0e211e55fe51adbd6bab7278ff1ceabea21faf78",
      "tree": "59fbdd10f7bd5ef772d1411e8fb2a7c57cdd4c7e",
      "parents": [
        "4afe9f5218956a3f2b6827e26b10c0ed48af864b",
        "2b41ccaa462f5faa92edde97504b785ddca415f5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 22:11:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 22:11:28 2018 +0000"
      },
      "message": "Merge \"Extract dex file if it is uncompressed but unaligned\""
    },
    {
      "commit": "2b41ccaa462f5faa92edde97504b785ddca415f5",
      "tree": "f9308a43745ebd606ec0799663b2c1822078bea4",
      "parents": [
        "90402ad6df38a5d4f268903aee5d7fe56791265f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 16 22:43:41 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Nov 29 11:22:55 2018 -0800"
      },
      "message": "Extract dex file if it is uncompressed but unaligned\n\nA dex file would normally only be left in the zip file if it was both\nuncompressed and unaligned, but explicitly setting CopyOptions::kNever\nthrough --copy-dex-file\u003dfalse would only check if the dex file was\nuncompressed, not if it was aligned.  Add a required alignment\nargument to ZipEntry::MapDirectlyOrExtract so that the contents\nwill be extracted into memory if they don\u0027t meet the alignment\nrequirement.\n\nBug: 119412419\nTest: m test-art-host-gtest-oat_writer_test\nChange-Id: I4587e22165ee0a951ffca7db9a6f5c0d1ed2e56a\n"
    },
    {
      "commit": "d011d81e8c4c959f6d607bb80dfedf3b64a7f131",
      "tree": "803656224159e0c87c4a97ad640dbe90c6e7285a",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 12:35:24 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 15:11:11 2018 +0000"
      },
      "message": "Use more vector\u003cstring\u003es in dex2oat.cc .\n\nReplace some uses of vector\u003cconst char*\u003e.\n\nTest: m test-art-host-gtest\nBug: 119868597\nChange-Id: Ib5b8d132a35b076c23d43f58a4715c4218dbbffb\n"
    },
    {
      "commit": "5ad3adeb0595b9cb5ada6185f0d5f689dfae0ba4",
      "tree": "f526c1be8b78123ae3c8f9082674d75fcca63bbb",
      "parents": [
        "a13be298b6bba821187c7f768a3e7bf0506829d0",
        "f0d3002d640bc41fe572e534542e9b8670838bd7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 22 08:59:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 22 08:59:01 2018 +0000"
      },
      "message": "Merge \"Fix app image generation and checking with shared libraries.\""
    },
    {
      "commit": "f0d3002d640bc41fe572e534542e9b8670838bd7",
      "tree": "3a3532c663b71aeca0a42f5e8cf193a7a8e86f72",
      "parents": [
        "fe96083dbf14f4c8465694e0144af0e13c2bc171"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 20 17:45:38 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 21 21:08:43 2018 +0000"
      },
      "message": "Fix app image generation and checking with shared libraries.\n\nWe can now have multiple class loaders in an app image.\n\nbug: 111174995\nTest: dex2oat_test, test.py\n\nChange-Id: Ie45c030b483efa78df2605fbcafb4e641b80c59a\n"
    },
    {
      "commit": "c10a0c60ca388ea5f45c11dd86ca0af11191015a",
      "tree": "8befa85940f28ca1c764e211f6f269daf184d28c",
      "parents": [
        "d52a6f402fac600e7432cfd59a1298659625a6d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 16 11:39:22 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 21 11:23:38 2018 +0000"
      },
      "message": "ART: Add boot/app image checksums.\n\nAnd check app oat files against the boot image checksum\ninstead of checking the oat checksum. The oat checksums are\nincluded in image checksum calculations and the primary\nimage checksum calculation includes the checksums of the\nsecondary images.\n\nAlso remove the obsolete \"patch delta\" to keep the size\nof the ImageHeader 8-byte aligned, remove the key-value\nstore from secondary oat files and move the oat checksum\nupdate code from oat.cc to the oat_writer.cc.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nChange-Id: If74f5f18479c44ede0503bf1911ddb9ff8f3c4f8\n"
    },
    {
      "commit": "2a487eb89b67d7ff030368e4e4a6ed0a3ac39003",
      "tree": "bedffc5f4ee16d07c957d06cdab5148c69bd6a56",
      "parents": [
        "875b4f26517ce215342746f07e41cda4c1991237"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 11:41:22 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Fix performance-inefficient-vector-operation\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I286e27424ac39c0fed308811dc3004e734c0560c\n"
    },
    {
      "commit": "9c4b970db31b234d6c0358802cd14ba4262e4ce6",
      "tree": "8a2f624b03fcf1fcfae3e42fe519e2900df3e52f",
      "parents": [
        "3c92ff4afe372ab0850ce95321ba4112b7f3dfdd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 14 15:09:02 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 15 17:05:29 2018 +0000"
      },
      "message": "Rewrite image type in CompilerOptions.\n\nPrepare for introduction of boot image extension.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nChange-Id: Id007c4aeb4ada84fe65c1148fdf67e8a412e5b74\n"
    },
    {
      "commit": "b81c59ebb56db1fc454a59570426c40b6d619c5b",
      "tree": "589277760527d8a1a53f99f07141a3e3e71a0716",
      "parents": [
        "2b021c83498e523781ef3f413ebe34a3512900b3",
        "6be1dbd3bc34b2cfa0fe257acbea273f1b6f4a53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 14 10:24:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 14 10:24:06 2018 +0000"
      },
      "message": "Merge \"ART: Rewrite core image detection.\""
    },
    {
      "commit": "6be1dbd3bc34b2cfa0fe257acbea273f1b6f4a53",
      "tree": "1840224989e4cbd538081951d948ed6a19bc61b4",
      "parents": [
        "dbcb48fc0d0841f327d108246487a4ef3df556ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 13 13:09:51 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 14 10:21:55 2018 +0000"
      },
      "message": "ART: Rewrite core image detection.\n\nRemove unused compiler option `core_image_` and cache\nthe IsCompilingWithCoreImage in the CompilerOptions instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Idcf3b6c96dab9a39f823a16778e7698589442cd8\n"
    },
    {
      "commit": "d6f301911ad977365db969283b67466dd4a76424",
      "tree": "00bfbfac77f6242f41c7951e35804296a0e90ec1",
      "parents": [
        "bad5c9a1f43148dc71f3b8e61cc201bc815fbac6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 12 16:49:31 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 13 10:21:23 2018 -0800"
      },
      "message": "Remove kDex2OatHostKey from oat-header\n\nThe oat-header used to include the ISA of the dex2oat used to compile\nthe image. This made cross-compiling a bitwise identical oat/image\nfile impossible and is not terribly useful so it was removed.\n\nTest: ./test.py --host\nBug: 119332327\nChange-Id: If9d21b5997907ee01283d1345749a01e2a2359ea\n"
    },
    {
      "commit": "38a938e2e83f5baa3238ce3b28ba4c61a268dd3d",
      "tree": "8b29c26d90b998fc717181298349ac2348f29c5f",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Sep 21 10:55:51 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Nov 08 19:38:07 2018 +0000"
      },
      "message": "Minimal Android Runtime APEX module.\n\nIntroduce build rules to generate com.android.runtime, a minimal\nAndroid Runtime APEX module containing just ART and its dependencies.\n\nWhen module com.android.runtime is built (`make com.android.runtime`),\nmake produces a `com.android.runtime.apex` package in the `apex`\ndirectory of the system partition\n(`$ANDROID_PRODUCT_OUT/system/apex/com.android.runtime.apex`).\n\nThis module is not built by default when generating a system image.\n\nTest: make com.android.runtime\nTest: art/build/apex/runtests.sh\nBug: 113373927\nChange-Id: I2019bd1934558feba6eccef13b887b2faa96caec\n"
    },
    {
      "commit": "82b67b2ef24a2475e88135ec63aa50270aad0254",
      "tree": "f08befc96a48e721f40f597a13949b7aed68602f",
      "parents": [
        "b1fcebe160ace50dfd38efae7439640b2ac4268f",
        "1a2a5cd58b7b667b664a7c20a4887a6cd89b4776"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 08 10:28:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 08 10:28:48 2018 +0000"
      },
      "message": "Merge \"Move profile compilation info to CompilerOptions.\""
    },
    {
      "commit": "1a2a5cd58b7b667b664a7c20a4887a6cd89b4776",
      "tree": "8f92ca17ba6f8324881f52aa741ad5ed0f87016a",
      "parents": [
        "a5175541c197e7bf9b03651ea5da4e64a2ac2d27"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 07 15:39:48 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 08 10:26:57 2018 +0000"
      },
      "message": "Move profile compilation info to CompilerOptions.\n\nRemove one HInliner dependency on the CompilerDriver.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: If6f0ab864095641b5697c8c6f5100520f91d5e53\n"
    },
    {
      "commit": "56581d89cb21ba384dad7ef19246ec6671e1ed39",
      "tree": "b88ce8bd8623b331972ae7a9c128c02855dc43a5",
      "parents": [
        "a5175541c197e7bf9b03651ea5da4e64a2ac2d27"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 07 12:30:52 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 07 13:45:01 2018 +0000"
      },
      "message": "Clean up oat key-value store.\n\nRemove the \"image-location\" key because it is unused. Do not\nstore the \"dex2oat-host\" value (i.e. dex2oat runtime ISA) if\n--avoid-storing-invocation is specified.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ib0760f923443322f1a72d338abad2db3617036dc\n"
    },
    {
      "commit": "afaf7f8198fe5ffc054278da6800f81dd83f272c",
      "tree": "3ebdec9fca813351d178709743121fa66815a7a0",
      "parents": [
        "6ca8ec7809f87ccac8d9d66d267f2379bdfdfe66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 11:32:38 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 08:20:09 2018 -0700"
      },
      "message": "ART: Enable bugprone-unused-return-value\n\nEnable bugprone-unused-return-value as an error. This is on top of\nthe compiler warning for attribute((warn_unused)).\n\nMark the current occurrences (all unique_ptr.release()) with NOLINT\nto signal that we know what we\u0027re doing.\n\nBug: 32619234\nBug: 117926937\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I36659722335eef36acfa5845289104257a393874\n"
    },
    {
      "commit": "f06ca50f0aff5167f767b09f624c60186290a623",
      "tree": "e521b37775a50f7607670993e29001576ba115ee",
      "parents": [
        "0d45ba3f479f93dfd0cee6cc8238be1b89ba1b69",
        "2d899c41ac389ab881a56a82380e7bdb91fbbcc8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 18 04:55:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 18 04:55:37 2018 +0000"
      },
      "message": "Merge \"Fix usages of TEMP_FAILURE_RETRY(pthread_foo(...)).\""
    },
    {
      "commit": "2d899c41ac389ab881a56a82380e7bdb91fbbcc8",
      "tree": "cc0a13d666ad7b767f76261e1917a1f7039d8cd6",
      "parents": [
        "6e82b7e6726d2c2ed0d6754ce1557d00e051b52c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 17 16:03:42 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 17 16:03:42 2018 -0700"
      },
      "message": "Fix usages of TEMP_FAILURE_RETRY(pthread_foo(...)).\n\npthread functions don\u0027t return -1 and set errno on failure, they return\na positive errno value instead.\n\nTest: treehugger\nChange-Id: I0097660e44c86c4c49d642e1169a30e43f9662bf\n"
    },
    {
      "commit": "cd0f38fcbda3e578ac27e483a1ffb7718f83fb7a",
      "tree": "5a8a89ca8cb04ae22d2c43aff38ab50717801581",
      "parents": [
        "8677e4bd3a091588c3b8058439f7022edab57f6e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 09:44:35 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 16 13:13:26 2018 -0700"
      },
      "message": "Add logic to eagerly resolve const-string for startup methods\n\nAdded dex2oat option --resolve-startup-const-strings\u003d\u003ctrue|false\u003e\n\nIf true, this option causes the compiler driver to resolve all\nconst-strings that are referenced from methods marked as \"startup\" in\nthe profile.\n\nBug: 116059983\nTest: test-art-host\nChange-Id: I61cf9e945c125671fc4ab4b50458a911318a837f\n"
    },
    {
      "commit": "4519b9d28719a726c09ef8e02b00ea93ea9f6f03",
      "tree": "687ebaa5b5560017f67cc676b25c573d9aa434b0",
      "parents": [
        "a2da9b99fa1ea3d25d52da71308a623b2aae216c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 15:21:21 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 18:05:48 2018 +0100"
      },
      "message": "Make the boot image always multi-image.\n\nDeprecate the --multi-image option.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I01fd02341cb4dc4fa75a388071694b51ba0bc5f7\n"
    },
    {
      "commit": "a2da9b99fa1ea3d25d52da71308a623b2aae216c",
      "tree": "5533be23eee7c24b68b1b72272cbae3f35a708cb",
      "parents": [
        "dc3b4670b170b39a8bd6498d4de69c1513af1db2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 14:21:55 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 10 15:25:26 2018 +0100"
      },
      "message": "ART: Completely remove the --compile-pic option.\n\nAnd the PIC-related fields from image header.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I3787369378f12d8cd9003bebeae62830a67def33\n"
    },
    {
      "commit": "036bae063fd1a2e5e26daf4af00db9575f03e155",
      "tree": "6eb0ad016aa586d08ecfb591cec91cbf343b2f30",
      "parents": [
        "fdb1b3d50bc0c4d18ab1785b3414b1d8fe15c1c7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 08 14:56:07 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 08 18:43:15 2018 +0100"
      },
      "message": "Fix multi-image boot class path construction.\n\nThis changes the stored boot class path components of the\nboot image prebuilts to exclude the bogus\n    out/target/product/taimen/dex_bootjars/system/framework/\npart and leaves only\n    /system/framework/boot*.art\nbut it does not impact the loading of the boot image at all.\n\nAlso remove the \"infix\" from core image filenames as it was\nduplicating a part of the prefix, thus\n    core-interp-ac-core-libart-interp-ac.art\nshall change to\n    core-interp-ac-core-libart.art\n\nTest: Manual inspection of \"m dump-oat-boot\" output.\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Iffbab30be8b8ce6f8f2aec8985e94177db517653\n"
    },
    {
      "commit": "e0669326c0282b5b645aba75160425eef9d57617",
      "tree": "3bb05553ee5f14081bb4ea8193fd29fa938e722f",
      "parents": [
        "56b0773d515527df60a38084cef3b813fefb5b9d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 03 15:44:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 04 12:57:49 2018 +0100"
      },
      "message": "Remove PIC option from oat files.\n\ndex2oat has been producing only PIC code for some time,\nso there\u0027s no need to record it in the oat file anymore.\nAlso get rid of the now unnecessary relocation logic\nthat was using the flag.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I070071ca5a808371f67883f4ae93d633a76231d0\n"
    },
    {
      "commit": "afeec9fbaaed320536e924d5842d8058d0d75511",
      "tree": "533762df1c9cce2df1283f262a4c939f4459afe0",
      "parents": [
        "35696a098a7432414322773d9b94e6a112b1f3b6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 14:05:56 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 18:25:30 2018 -0700"
      },
      "message": "Remove FdFile::DisableAutoClose.\n\nRemove a footgun that also makes it impossible to use fdsan, since we\ndon\u0027t know whether the FdFile actually owns the fd or not.\n\nBug: http://b/113558485\nTest: mma\nChange-Id: I6a7767c33925db631852579f75d2def9ff6a44d5\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "de91fd4f92363c69bce2c21366fbb2a31c8c1e78",
      "tree": "e7fd79f291caa7676c7d68ca537f1c62ce214f3e",
      "parents": [
        "2449d6d006dcb685d3b386edcf624e67ef37e12c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 22:27:08 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 17 17:17:00 2018 +0100"
      },
      "message": "Generate unstripped .oat files in the symbols directory.\n\nTest: Check the generated files with readelf.\nBug: 70512966\nChange-Id: Id31232f8b750281bdc170f356833a8d71e1b5796\n"
    },
    {
      "commit": "d059e3a636a5ac78cef09f1c56fb334e524a710c",
      "tree": "42a42b36ba28c7d569d438d385e791e9e88af53a",
      "parents": [
        "2258c2ef5f6cb25ff12a1dc6dfac1f868892c226"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 05 09:43:39 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 05 09:43:39 2018 +0100"
      },
      "message": "ART: Make boot image compilation always PIC.\n\nThe non-PIC boot image config should be used only for\ngtests, so we should not rely on --compile-pic being\npassed to dex2oat.\n\nTest: m\nBug: 111149076\nChange-Id: I4abf6ed0d85dfd9ddfe61517b16e36bbcfe58c39\n"
    },
    {
      "commit": "b2ab807bd1feb25d04ad5bdcb336c281a6ce88ff",
      "tree": "2ed74172c0a4e8dbcb72c575f0e88c597d357f6b",
      "parents": [
        "4e2000ac8f444f92df6633b57fa3e69203f4c3b7",
        "dcfcce4241fc706fd249bb3fec67f8a1dc434af6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 29 08:30:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 29 08:30:08 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Delay init of classes of pre-allocated exceptions.\"\""
    },
    {
      "commit": "f07d5617770c37d87447c8bddf105eb0469ab093",
      "tree": "e6b15b904e591a3b805b292ce9afd9b0cecbf40d",
      "parents": [
        "2dc252e37d4df0c4160cd20b6fc852f5f28b7b87",
        "a043111e3a2c09b549708a6227a1f54d91da76aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "message": "Merge \"Move instruction_set_ to CompilerOptions.\""
    },
    {
      "commit": "dcfcce4241fc706fd249bb3fec67f8a1dc434af6",
      "tree": "7f9e189a1654e54849843fd758881b9fae23d8e7",
      "parents": [
        "639f5150805006a2c3a07daa804abcdba0bc3ece"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 10:00:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 13:20:05 2018 +0100"
      },
      "message": "Revert^2 \"Delay init of classes of pre-allocated exceptions.\"\n\nThis reverts commit 29cf32bb64dc61c4f755661939630775bd36419d.\n\nFixed heap-poisoning/gcstress tests by calling the Alloc\u003c\u003e()\nof the exception object with kInstrumented\u003dtrue.\n\nChange-Id: I209ab4f020e9c6fb67319fddde69ed87e3653223\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: run_build_test_target.py art-gtest-heap-poisoning\nTest: run_build_test_target.py art-interpreter-gcstress\nBug: 109925024\n"
    },
    {
      "commit": "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d",
      "tree": "9e57d1bb6af7ec3bae5baa2589071587c806472c",
      "parents": [
        "e32a3c263fe1f6c3e7de5c2073508d058346a85a",
        "29cf32bb64dc61c4f755661939630775bd36419d"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 26 18:28:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 26 18:28:10 2018 +0000"
      },
      "message": "Merge \"Revert \"Delay init of classes of pre-allocated exceptions.\"\""
    },
    {
      "commit": "29cf32bb64dc61c4f755661939630775bd36419d",
      "tree": "fbba0dca090e6ca590c3ce5dfdf3c369c3483446",
      "parents": [
        "cd5c181baa6f919c1156a7b640b99056baf124d5"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 26 17:43:05 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 26 17:43:05 2018 +0000"
      },
      "message": "Revert \"Delay init of classes of pre-allocated exceptions.\"\n\nThis reverts commit cd5c181baa6f919c1156a7b640b99056baf124d5.\n\nReason for revert: To fix build breakage\n\nChange-Id: I4ee1a28d3aeb630975ea60ae5606fc92bc5c4652\n"
    },
    {
      "commit": "7a21e31c462ad4e0d5f52ff7cdda602d8e539da9",
      "tree": "72062d6816f915daab114efc3b8b4cae1d0ca366",
      "parents": [
        "0fd2f51eb6e9d08eb6014036ee9ca2852e431590",
        "1554417c7c43d41eff15372fb8dfc04a9dca5461"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 26 17:40:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 26 17:40:27 2018 +0000"
      },
      "message": "Merge \"ART: Move CopyOption to OatWriter\""
    },
    {
      "commit": "a20f969ef303e01e503e51809388bdb406c72238",
      "tree": "9c3908523149a021057e1375090cda3ab5731a85",
      "parents": [
        "23c41ebe1f2a8c2c36f0aff1707c4c4630dc772c",
        "cd5c181baa6f919c1156a7b640b99056baf124d5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 26 16:08:57 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 26 16:08:57 2018 +0000"
      },
      "message": "Merge \"Delay init of classes of pre-allocated exceptions.\""
    },
    {
      "commit": "cd5c181baa6f919c1156a7b640b99056baf124d5",
      "tree": "fabcaebc6c0baa43001c7ed3f72edfffbf1cad32",
      "parents": [
        "fad8ad743e27b5d809f4e7d71d50fe3726cc7b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 22 14:14:19 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 26 16:45:03 2018 +0100"
      },
      "message": "Delay init of classes of pre-allocated exceptions.\n\nSupport non-trivial Throwable.\u003cclinit\u003e() used by upstream\nOpenJDK.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nBug: 109925024\nChange-Id: I7ad732a6fd267319de16d8a003e80d1d26f5e7cc\n"
    },
    {
      "commit": "1554417c7c43d41eff15372fb8dfc04a9dca5461",
      "tree": "4084cced9f27f95545cb177684baf153079537e0",
      "parents": [
        "d6de4564f4494c78955d667b21e4693844d7b818"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 15:09:06 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 19:41:43 2018 -0700"
      },
      "message": "ART: Move CopyOption to OatWriter\n\nAll the code has moved. Move the enum to where it\u0027s used.\n\nTest: mmma art\nChange-Id: Ia5d412acd1240365e74059681dbe8f62502382aa\n"
    },
    {
      "commit": "a043111e3a2c09b549708a6227a1f54d91da76aa",
      "tree": "393fe11cfceccebf474e4bdf36ff79b70b97f589",
      "parents": [
        "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 09:32:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 18:43:19 2018 +0100"
      },
      "message": "Move instruction_set_ to CompilerOptions.\n\nRemoves CompilerDriver dependency from ImageWriter and\nseveral other classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I3c5b8ff73732128b9c4fad9405231a216ea72465\n"
    },
    {
      "commit": "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca",
      "tree": "bfb5d5ed85473054d863bbaa91a7d9a69a803eec",
      "parents": [
        "dc4bccef0ded1c261bf9838def2ef329765a8682"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 22 11:56:34 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 11:41:47 2018 +0100"
      },
      "message": "Move dex_files_for_oat_file_ to CompilerOptions.\n\nA step toward removing the CompilerDriver dependency from\nseveral classes, including HSharpening and ImageWriter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I364ef66511fdf855cb11b12c818a40572b037727\n"
    },
    {
      "commit": "dc4bccef0ded1c261bf9838def2ef329765a8682",
      "tree": "f007ff3f747ae2d1e6a20d9bd9c017b2ce191f1e",
      "parents": [
        "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 16:15:42 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 11:30:07 2018 +0100"
      },
      "message": "Move image_classes_ to CompilerOptions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifb30e071d7b39ae939fc3f83d7eba82fd077c7e8\n"
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "05e34f4cb8c9db165d1008721e874b9dd3db024b",
      "tree": "c41d397ef5cfb9d7918fceadcda3195a0d0d91de",
      "parents": [
        "428d80e3a49f732b39bb0c71cfde26451e3fdf4d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 13:19:05 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 14:03:37 2018 +0100"
      },
      "message": "Revert^2 \"Remove support for Valgrind in ART.\"\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nThis reverts commit 8b362a87d52a6668ffd2283ef6ffc274315f41c8.\n\nChange-Id: I23c76845e6ccf766f19b22b58a0d5161f60842a9\nTest: art/test.py\nTest: art/test/testrunner/run_build_test_target.py art-asan\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "d8860b42e47d48fcc47db9d0daf5a1b9432180a1",
      "tree": "c5522fa9c6d1e9e63cb497da7dc84b72b6b11531",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 02 14:58:12 2018 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 10 16:17:30 2018 -0700"
      },
      "message": "Do not load app image for class collisions\n\nEven for special shared libraries that are compiled with\n\u0027--class-loader-context\u003d\u0026\u0027, we must reject the app image\nif there are duplicate classes.\n\nIn the case where \"\u0026\" is not specified, avoid the collision check.\nThis is safe since the class loader context check was actually run.\n\nTest: 172-app-image-twice\nBug: 77342775\nBug: 79200502\n\nChange-Id: Idc2d59166680948d4d34d0f224491f77ecad2974\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "2da52b084b940a5330aa985b687c852495bc38ff",
      "tree": "61d01d2391bc6e65ecfcbc636159369e9425c59c",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 16:31:34 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 17:06:26 2018 +0100"
      },
      "message": "ART: Add --dump-pass-timings compiler option.\n\nThis replaces the old --dump-passes option removed in\n    https://android-review.googlesource.com/549200 .\nUsing --dump-timing for timing optimization passes makes\nthe high level timings useless, so return to using two\ndifferent options for these.\n\nTest: Manually run dex2oat with --dump-timings,\n      --dump-pass-timings and both.\nChange-Id: Iddc4cfee35652fb493656e7d6081a898c2894f72\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "c4440775c5627fed9701e14a1f9d14dca27ed176",
      "tree": "9d38b1e4af40ac0b209b6bdcae357a8a74630435",
      "parents": [
        "e83bae5c62c7e739e18cafa1126a727b4788895c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 16 14:40:56 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 17 11:56:31 2018 -0700"
      },
      "message": "Add arg for overwriting class loader class path\n\nAdded stored_context srgument to EncodeContextForOatFile that\noverwrites the class path when non-null.\n\nThis is used by the --stored-class-loader-context argument. Fixed\nthe test.\n\nBug: 70934104\nBug: 67345922\nTest: test-art-host-gtest\n\nChange-Id: If877d8cfe9d34eeaa941e9f6df2e12539d9c4a6f\n"
    },
    {
      "commit": "bd600e3e203b3ddd34c2e44bdb705e6902ac7bce",
      "tree": "a8d88189082d739b33898cf2a69e9a706b580564",
      "parents": [
        "74b9994598f497ee3c6a72bbacad9926527f67f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 12 14:25:39 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 13 17:26:59 2018 -0700"
      },
      "message": "ART: Remove support for compiled-methods and compiled-classes\n\nThis has been superseded by profile support.\n\nThis reverts commit 70bef0d8f6aa30b0da5c6ca56e1bc5729f74654b.\nThis reverts commit 4bf3ae9930a155f238dfd471413c866912b2579e.\n\nBug: 76145463\nTest: mmma art\nTest: m test-art-host\nChange-Id: I5a368cd01812e16869352ec219eae095df4919c4\n"
    },
    {
      "commit": "74b9994598f497ee3c6a72bbacad9926527f67f5",
      "tree": "b876a06735c5e729da62a42e3aa5bd4d79a6ff32",
      "parents": [
        "8a78f81a16a7c8225b48bf634b67f5697f72e15f",
        "79e2607ab50163bfdc283f4a49decec26a216df5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "message": "Merge \"Move profile dependent modules to libartbase\""
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    }
  ],
  "next": "f5abfc42f0d986b9f8eb782d7e761f1a08784210"
}
