)]}'
{
  "log": [
    {
      "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": "6f382013399fc8ba8b2717e4d24d91978d2bc0f7",
      "tree": "53b6bca63d5a1c34b2a60e5d8ef39f7cb22d4fe9",
      "parents": [
        "2b9c8c94fc92c6f2c7c1703efc1793d17ffde297"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 30 09:47:35 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 01 16:17:17 2019 +0000"
      },
      "message": "Refactor space bitmap to be a value object\n\nRemove the need for pointer indirections at many places, reduce the\namount of code.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I4b1040d29f9ba99ea23c51f70a06af2ffbe496d4\n"
    },
    {
      "commit": "44ca0754b3c6f11303bac876a9175bbfa95609ef",
      "tree": "6f669466e6b0e750a075108cc6f8fe0a67b66658",
      "parents": [
        "f3677471a58c2738a3d9dd05f07f01c18a5e61be"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 29 10:18:25 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 30 14:49:54 2019 +0000"
      },
      "message": "Compiler changes for boot image extension.\n\nTest: m test-art-host-gtest\nTest: testrunnner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtest.sh\nTest: testrunner.py --target --optimizing\nChange-Id: I8e999c96ec908f26d8c529edc9d2a3be49a9379a\n"
    },
    {
      "commit": "bf12191214c0d6215a98dfe846a51230d995dad9",
      "tree": "085c1059014ce66fdb7eceb6e8502d906f0eacbd",
      "parents": [
        "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 13:49:05 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:10:26 2019 +0000"
      },
      "message": "Implement ClassStatus::kVisiblyInitialized.\n\nPreviously all class initialization checks involved a memory\nbarrier to ensure appropriate memory visibility. We change\nthat by introducing the kVisiblyInitialized status which can\nbe checked without a memory barrier. Before we mark a class\nas visibly initialized, we run a checkpoint on all threads\nto ensure memory visibility. This is done in batches for up\nto 32 classes to reduce the overhead.\n\nAvoiding memory barriers in the compiled code reduces code\nsize and improves performance. This is also the first step\ntoward fixing a long-standing synchronization bug 18161648.\n\nPrebuilt sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19150696\n   arm64/boot*.oat: 22574336\n   oat/arm64/services.odex: 21929800\n - after:\n   arm/boot*.oat: 19134508 (-16KiB)\n   arm64/boot*.oat: 22553664 (-20KiB)\n   oat/arm64/services.odex: 21888760 (-40KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh -j4\nTest: testrunner.py --target --optimizing\nTest: Manually diff `m dump-oat-boot` output from before\n      with output after this CL without codegen changes,\n      with `sed` replacements for class status. Check that\n      only checksums and the oatdump runtime values of\n      DexCache.dexFile differ.\nBug: 18161648\nBug: 36692143\nChange-Id: Ida10439d347e680a0abf4674546923374ffaa957\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": "0c2c222733f3bb1dc9848f4f127a47046fda6221",
      "tree": "bf46d1a9d1bf38dcbd01947b5ffcc28e659fbdef",
      "parents": [
        "1a225a76ee6bc29833aee048b6cfae20242bdc8b"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Aug 04 14:36:17 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 18 17:13:59 2019 +0000"
      },
      "message": "Revert^2 \"Support clinit for app image during compilation\"\n\nAdd some spot fixes for app image class initialization and re-enable\ntest 660 features.\n\nBug: 70735003\nTest: test-art-host\n\nThis reverts commit abadf024efdc632f663d7fb503cd277b3f65fca2.\n\nChange-Id: Id16fd3ada3eb1bd57ea60c3cdc4a0cf9835950d7\n"
    },
    {
      "commit": "2a290e14fd10a5e494ee0a48e07bc238a7a271d6",
      "tree": "de4c64717ed359eafaf064face395d0569358949",
      "parents": [
        "b45a435e25d69592f27084a615b351760f040875"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 10:15:22 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 15:20:59 2019 +0000"
      },
      "message": "Cleanup and simplify ImageWriter::GetQuickCode.\n\n- Remove unneeded parameter\n- Fix a consistency bug where a static method of a non-initialized class\nwould get the interpreter bridge as entrypoint instead of the resolution\nstub.\n\nTest: test.py\nChange-Id: I0c71db8b1897ae47cf228d112fbe24b9570b61fa\n"
    },
    {
      "commit": "5132e0d1433b0962f9609dbbd68427e1fb5a4b9d",
      "tree": "1f0f856705c2932d8c13b09cee29c93a2d71d904",
      "parents": [
        "b94cc1129aa03e77d001eb3429a8a0efa0d6ac1e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 10 09:38:48 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 17 01:15:25 2019 +0000"
      },
      "message": "Add option for controling app image class initialization\n\nThe new option is --initialize-app-image-classes. This attempts to\ninitialize app image classes by running the class initializers ahead\nof time.\n\nWill test this through test 660, but there are currently aborts when\nit\u0027s enabled.\n\nTest: test-art-host\nBug: 70735003\n\nChange-Id: Icc05683b23098a15531097f67aad17144f0badaf\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": "e6cb9710affda5e1560aa81b32ad93caf40de32a",
      "tree": "6310e982c6d3efccaa5b6bcc009d9f01c6cdf0b5",
      "parents": [
        "d5fd5c3bbb44880e440c6920ce5ed56b5383c788"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 03 14:29:42 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 04 08:20:17 2019 +0000"
      },
      "message": "Remove ImageWriter::IsInBootOatFile().\n\nIt was used only as a pre-condition for a DCHECK() that was\ncommented-out because of the multi-image implementation.\nIf it was needed again, ImageWriter::IsInBootImage() should\nbe a sufficient replacement as it covers oat files.\n\nAlso use ImageWriter::IsInBootImage() instead of\nHeap::ObjectIsInBootImageSpace().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ia64e1e807a2cd24135456ae2294a3e6b9fd16337\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": "1aff1efe67be9238792704c6758028d12239e337",
      "tree": "aad969e51d79b2cff50170c01d933b783260218b",
      "parents": [
        "c1b34d49a0790db878685258dc46c0bfd37e4f37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 15:12:50 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 03 08:24:36 2019 +0000"
      },
      "message": "Clean up retrieving boot image address range.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I8f36ae59399e4fa97576bbb8d71e29f9f40c0c91\n"
    },
    {
      "commit": "e2d24beb1a9d9b718b0443b1eec63090c6fc19a4",
      "tree": "84c6efd6c3841ada8f4ee6b1d28107ccaace3d37",
      "parents": [
        "714fad657516f43f96ab45bd1e8853edd3662d6a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 27 15:53:30 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 08:44:25 2019 +0000"
      },
      "message": "Simplify ImageWriter::IsInBootImage.\n\nMake the code a bit faster (lost in noise on host) and\nsmaller.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ica9138bd51cb7f24b1f35e3a99dbb83551e7d9a2\n"
    },
    {
      "commit": "e1070377d890f278a49ec8719e66b36860124132",
      "tree": "916f835faa36f40b35c80cd923a5d857ad95c54e",
      "parents": [
        "05b41c40c62078664fa3bcfbe5fc935d20a6e92c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 24 14:09:06 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 01 12:20:04 2019 +0000"
      },
      "message": "Clean up collecting app image string references.\n\nRecord the number of references while assigning bin slots\nand collect these references as AppImageReferenceOffsetInfo\nafterwards, without any other translation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 26687569\nChange-Id: Ieeb0530129cac9a0af5af80fd73cd668d27aff3e\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": "64f1f1f2d6cd13249601f7de2b9d1dab26480f78",
      "tree": "63d4ab0a7f914c603154fb4f69a6d4374abf3478",
      "parents": [
        "ad82a81f6cbdd5819ca8088f91b6dc22a17d0727"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 21 14:16:45 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 12:27:23 2019 +0000"
      },
      "message": "Do not copy finalizer references to app image.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 26687569\nChange-Id: I9167d4f851ed64c737caa0e1381cd6adfa3e8e44\n"
    },
    {
      "commit": "eaa84415d382df617f3bc7a84d3b109078adaba5",
      "tree": "c31cc9c401084072554f7767c5893c087d0d5ee9",
      "parents": [
        "719de43158fff09b95d250a4776accd05b51634e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 18 16:05:26 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 27 18:56:05 2019 +0000"
      },
      "message": "Clean up bin offset assignment in ImageWriter.\n\nAnd add padding for tail region of multi-region objects.\n(Fill it with objects for now as we\u0027re not copying the\napp image to normal heap regions.)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 26687569\nChange-Id: I7134540fc3fdd78f37c8d04b3eca5e2ae553dd30\n"
    },
    {
      "commit": "31c3daa15da0599b0f916202c49ef4d35e77213b",
      "tree": "3966159700b54af8a39a8b426ab06c8c4b6960f1",
      "parents": [
        "b476a29a2cda22b86fc1d96e4cc65ce36fb878af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 13 12:18:37 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 27 08:25:24 2019 +0000"
      },
      "message": "GC-independent image layout.\n\nMake sure we visit objects in a defined order, independent\nof their order in the heap. The new order depends only on\ndex file contents and contents of initialized classes,\nthus any non-determinism would have to be contributed by\nthe class initialization itself rather than GC.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 26687569\nChange-Id: I62521322289a22eb13faae526ba2c3589e6ab381\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": "1e52a07b4de0f000028e55c332aa46495f60879c",
      "tree": "1eb7dfdce749461c5a8997cbde49ed6d0fea2aa0",
      "parents": [
        "e0ce8bf743b7fc5816bc4045716d75378ce3b654"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 09:12:04 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 16:25:13 2019 +0000"
      },
      "message": "Correct Indicies -\u003e Indices\n\nThis is a misspelling that is somewhat common in art/.\nFix up all the instances I could find.\n\nTest: ./test.py --host\nChange-Id: I0a5def6e4126cf4e61efb0619bd59eb45ba7f324\n"
    },
    {
      "commit": "024d69fb9936ca5a0031d35c9f248853cbc25d3f",
      "tree": "c1eeddf91ea15eda5d139d4592ac7f0df80e9be0",
      "parents": [
        "43ae4acf219fe25a56e2055ebcebc4d08020a25d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 13 10:52:32 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 17 09:30:53 2019 +0000"
      },
      "message": "Use cleared JNI weak sentinel from boot image.\n\nWe were already adding the sentinel to the boot image,\nso we may as well reuse the boot image copy.\n\nAlso move pre-allocated objects from class roots to the\nboot image live objects.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I635dcdd146ca2c6b55d187e9a545a9990b0b35ca\n"
    },
    {
      "commit": "8e05f09ca712c33bf2090cf03a3a8db858a23314",
      "tree": "c78491d8a9ef33f4073d0053dfbd6417bbaa13a9",
      "parents": [
        "23df24822ee70fe255e6c02fb130112e28fdf63a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 10 11:10:38 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 12 08:44:25 2019 +0000"
      },
      "message": "Do not force-intern Strings in images.\n\nInterning all image Strings breaks the reference equality\nsemantics. See android.net.Uri.NOT_CACHED for an example\nwhere it goes against the intent of the Java code.\n\nInstead, only put interned strings (weakly and strongly) to\nthe image intern tables. Since image interns are referenced\nas long as the image is memory, we can promote weak interns\nto strong interns. Doing this before the image layout helps\nImageWriter::CalculateNewObjectOffsets() which would not\nhave previously found weak interns.\n\nAdded a regression test that relies on better initialization\nof app image classes, so it shall be \"active\" only after an\nimprovement in that area. (This can be checked by commenting\nout the NoClinitInDependency() check in CompilerDriver\u0027s\nInitializeClassVisitor::TryInitializeClass().)\n\nBug: 134746125\nTest: 176-app-image-string\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nChange-Id: I51fa1edf953c9060c41f39812f3ba27f12b02801\n"
    },
    {
      "commit": "148c1609b165e79a2e30161bf8148786f3eee307",
      "tree": "fac06a80d58ac9d48bc8eb4c09caecaa5fd22ebf",
      "parents": [
        "298dc0f0475ce9753f3ba105c48ed74d124c668a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 10 16:47:46 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 11 21:50:02 2019 +0000"
      },
      "message": "ART: Rename timeout_dumper to signal_dumper\n\nTo reflect the more broad applicability.\n\nBug: 134837513\nTest: m test-art-host\nTest: manual (change timeout)\nChange-Id: I1206bd7b2be351ca2efae3564b677c28ea484766\n"
    },
    {
      "commit": "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff",
      "tree": "b1a58a51787768ff0af12a2ee1662ceeae78fdf1",
      "parents": [
        "63ab3e1fb635f346241ee5519bf52be8deb6ca60"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 06 14:23:03 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 10 17:37:57 2019 +0000"
      },
      "message": "Handle allocation failure in AddPreResolvedStringsArray\n\nMight fail on 32 bits if the address space is fragmented.\n\nRegression test is infeasible to add.\n\nBug: 134652205\nTest: test-art-host\nChange-Id: I8a254a27275be4e0ff39fdb72715771f4f77cf36\n"
    },
    {
      "commit": "9a45d01b40692d9b9568f5e80d21fc7f51bcac5c",
      "tree": "78d104f248151ddf178f54361b69a63e1f84c787",
      "parents": [
        "1e4ed979e519c34101889f803313fa48a7164e73"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 05 13:54:02 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 06 19:10:40 2019 +0000"
      },
      "message": "Fix dex2oatd module definition.\n\n- On target, dex2oatd is compiled as a \"prefer32\" module, producing a\n  single 32-bit (or potentially 64-bit) binary (\"dex2oatd\");\n- On host, dex2oatd is compiled as a multilib module, producing both\n  32- and 64-bit binaries (\"dex2oatd32\" and \"dex2oatd64\") as well as a\n  symlink (\"dex2oatd\") pointing to one of these binaries (the \"primary\n  target\").\n\nTest: m\nTest: art/build/apex/runtests.sh\nTest: Run \"adb shell cmd package bg-dexopt-job\" on a userdebug build\n      and verify the absence of SELinux denials for `installd`.\nTest: ALLOW_MISSING_DEPENDENCIES\u003dtrue DIST_DIR\u003d$(pwd)/out/dist art/tools/dist_linux_bionic.sh -j50 com.android.runtime.host\nBug: 133864678\nBug: 123079311\nChange-Id: Ic1b297888ae9889f9344362b25bc6ae0a52138db\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": "f667508a2103cfafd1582df6aeea144490f1d11d",
      "tree": "7394cec1f1463a86deb75dcecca9f3eacd8ecb03",
      "parents": [
        "8fa839cfe6f72adabdf79f938c57300e589e0803"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 12:05:28 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 23 11:47:28 2019 +0000"
      },
      "message": "ARM/ARM64: Use trampolines for slow-path entrypoint calls.\n\nThis reduces the size of the generated code. We do this only\nfor AOT compilation where we get the most benefit.\n\nSizes of aosp_taimen-userdebug prebuilts:\n - before:\n   arm/boot*.oat: 19624804\n   arm64/boot*.oat: 23265752\n   oat/arm64/services.odex: 22417968\n - after:\n   arm/boot*.oat: 19460500 (-160KiB)\n   arm64/boot*.oat: 22957928 (-301KiB)\n   oat/arm64/services.odex: 21957864 (-449KiB)\n\nTest: m test-art-host-gtest\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 12607709\nChange-Id: Ie9dbd1ba256173e4e439e8bbb8832a791965cbe6\n"
    },
    {
      "commit": "0dc93b1ba94460b0ae126dd4db335261165c74b7",
      "tree": "78b3afa099dce52a1eb39d6a9788d610b14a1f6b",
      "parents": [
        "9b81ac36e161fd993eab17b43b93a96e8c63b5cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 15 10:30:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 17 20:40:21 2019 +0000"
      },
      "message": "ART: Run bpfmt over ART\u0027s blueprint files\n\nTest: mmma art\nChange-Id: Ic85df4770c12ec02836c877b243d4aec234aaada\n"
    },
    {
      "commit": "552a13415573da19eafa46e1ac00fb0eb68f2b23",
      "tree": "8cae5f3602d8f8e65cd3cbc349af17d785128605",
      "parents": [
        "0dda8c84938d6bb4ce5a1707e5e109ea187fc33d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 14:44:09 2019 +0000"
      },
      "message": "ART: Optimize StringBuilder append pattern.\n\nRecognize appending with StringBuilder and replace the\nentire expression with a runtime call that perfoms the\nappend in a more efficient manner.\n\nFor now, require the entire pattern to be in a single block\nand be very strict about the StringBuilder environment uses.\nAlso, do not accept StringBuilder/char[]/Object/float/double\narguments as they throw non-OOME exceptions and/or require a\ncall from the entrypoint back to a helper function in Java;\nthese shall be implemented later.\n\nBoot image size for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19653872\n   arm64/boot*.oat: 23292784\n   oat/arm64/services.odex: 22408664\n - after:\n   arm/boot*.oat: 19432184 (-216KiB)\n   arm64/boot*.oat: 22992488 (-293KiB)\n   oat/arm64/services.odex: 22376776 (-31KiB)\nNote that const-string in compiled boot image methods cannot\nthrow, but for apps it can and therefore its environment can\nprevent the optimization for apps. We could implement either\na simple carve-out for const-string or generic environment\npruning to allow this pattern to be applied more often.\n\nResults for the new StringBuilderAppendBenchmark on taimen:\n  timeAppendLongStrings: ~700ns -\u003e ~200ns\n  timeAppendStringAndInt: ~220ns -\u003e ~140ns\n  timeAppendStrings: ~200ns -\u003e 130ns\n\nBug: 19575890\nTest: 697-checker-string-append\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java\nChange-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964\n"
    },
    {
      "commit": "88cfa338da02efca7692a395df4fe290bec53ebc",
      "tree": "cf7fb193c1398a90f678a252e971f9603da5e5f7",
      "parents": [
        "e302088f50244f10c90e5f40b6e05c9574c4cf32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 09 16:35:02 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 14 20:34:39 2019 +0000"
      },
      "message": "Clear exception before calling ValidateSuperClassDescriptors\n\nSince ValidateSuperClassDescriptors may also cause an exception, we\ncan\u0027t have any stale exceptions from EnsureInitialized otherwise there\nmay be aborts\n\nTODO: Figure out how to add a test.\n\nBug: 131855081\nBug: 132690194\nTest: test-art-host\nChange-Id: Ia56af1ff497d30539a42a772979320df699b658a\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": "c36a8ccf44454f1a4b8b57420205faf11dec7046",
      "tree": "189c0baf0cf748669712b0fc3c734d229386d8ab",
      "parents": [
        "5fe1b23d54303a1adf91b644f26f6df066e175ed"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 29 13:37:42 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 29 15:29:38 2019 +0000"
      },
      "message": "Handle empty uncompressed and aligned dex file in an archive.\n\nReturn an error message for it. Callers expect it.\n\nTest: dex2oat_test\nBug: 131175467\nChange-Id: I55c05f0a9c48cea252869f88740c6338b5b28b1f\n"
    },
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "fe0e00a4d683aefa572dcc50b3f87ff77cb5162a",
      "tree": "a2d00ae6f46fb9d08529e94144c38c704d29537b",
      "parents": [
        "a3d186e5c37bd9c28faf577ec2297ce65f7747cc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 23 19:25:25 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 24 16:15:45 2019 +0000"
      },
      "message": "Pre-resolve dex cache strings before collecting string offsets\n\nFix a bug where string offsets are nondeterministic in some cases.\nThis was caused by preresolving strings after collecting string\noffsets.\n\nBug: 120039850\nTest: test-art-host\nChange-Id: I39235c6b4fa43a89e7082962d1c7d4643748d078\n"
    },
    {
      "commit": "fc25ae90c7f2b93ce4cd7a920afaf893c17d08cb",
      "tree": "0dbdd16fd1de3d2dfc26e49d27d98a18cfc306e8",
      "parents": [
        "d09c0593fb9afc218dee39332e13097f1e95ee10"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 22:22:57 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:16:27 2019 -0700"
      },
      "message": "ART: Refactor verifier\n\nMove implementation to internal class, only keep minimal interface\nthat other classes depend on public.\n\nAn internal impl::anonymous namespace and duplicate MethodVerifier\nname was chosen so as to minimize the patch.\n\nIn preparation for templatization.\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I79de01139b8fbd8b4e828bb0e58faeb8666176d5\n"
    },
    {
      "commit": "501c3b073e2252f8f5ccb0f9a7aab9bcf8ad297c",
      "tree": "d09085d3dcab7eab57e2c826f8073a7ee4bd8449",
      "parents": [
        "ed42f62df5bb46168334dadecb5d143c38f7a88b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 17 21:54:27 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 18 16:08:27 2019 +0000"
      },
      "message": "Revert^2 \"Fix correctness for fast path class loading\"\n\nThis reverts commit 2e2f9e8c6989dec22e4199a773a1e03954f82365.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130746382\n\nTest: m test-art-host\nTest: atest vm-tests-tf\n\nChange-Id: I2b6e6be530bb8b6c6222b11b7d93fb1f574d2ea4\n"
    },
    {
      "commit": "2e2f9e8c6989dec22e4199a773a1e03954f82365",
      "tree": "ba9745bcf08b758d71b458929ca9bf35f9aa7a69",
      "parents": [
        "d399f579cf2a8462ef6f1fbea360fe62be174377"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:35:08 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:36:07 2019 -0700"
      },
      "message": "Revert \"Fix correctness for fast path class loading\"\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130680590\n\nTest: TH\nThis reverts commit ef04ac6c05fa344428008ffa1eac7316c64a3467.\n\nChange-Id: I2ee8a20419da251eed2620b7feb390053c0cdcb9\n"
    },
    {
      "commit": "ef04ac6c05fa344428008ffa1eac7316c64a3467",
      "tree": "761ffc6c22a32f16dc3a42392f83c91ef23ef03d",
      "parents": [
        "1eb5d8770a533b86269e503a842f6b45591e87cf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 11 13:37:10 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 16 20:13:01 2019 +0000"
      },
      "message": "Fix correctness for fast path class loading\n\nFor the fast path, we currently remove all exceptions and only return\nClassNotFoundExceptions. This CL preserves exceptions that might occur\nsuch as linkage errors.\n\nThe follow up is to add an additional fast path for faster class not\nfound exception generation.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nTest: test-art-host\n\n(cherry picked from commit ca19f9a8547999cb13de06458364d64ab143cb09)\n\nMerged-In: Iae55aaaae2be5b1330e8e54bee36e862cf9e12e0\nChange-Id: I0fff3a748c07b5f3e05f4de24d56678a8b046844\n"
    },
    {
      "commit": "1eb5d8770a533b86269e503a842f6b45591e87cf",
      "tree": "222728b3902587c45ad7c294c7ba69393f8d7cfa",
      "parents": [
        "9b70ee0fdb1969a9a5cad2052b35c2fa04509bc2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 13:56:22 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 16 12:53:02 2019 +0000"
      },
      "message": "Prefix entrypoints with 0xFF so we can do extra checks.\n\nAdd check to ensure we do not read method header from libart.so\n\nBug: 123510633\nTest: m -j40 cts \u0026\u0026 cts-tradefed run cts \\\n  --test android.jvmti.cts.JvmtiHostTest1927#testJvmti \\\n  --module CtsJvmtiRunTest1927HostTestCases\nChange-Id: Ic3e42e3bd4fbda3b11c7e265ed114770139151b9\n"
    },
    {
      "commit": "fc8e7598fe013bebff210b48347daf80316ac0a4",
      "tree": "37b6594c1f4e7e40bbdfcee88560a688db868620",
      "parents": [
        "8f88207206fe39f6dcb4e76e24716c81566f26cc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 09 11:46:11 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 09 20:42:19 2019 +0000"
      },
      "message": "art: remove unnecessary references to external/zlib.\n\nBug: https://issuetracker.google.com/115695768\nTest: builds\nChange-Id: If28672497d5702e084ac033eceaeb31a18eb292e\n"
    },
    {
      "commit": "3bfc694a4bcc9ef3de19b94a34701c76c6008071",
      "tree": "d56c745462a0837e0154869be68011170f6b7846",
      "parents": [
        "c74ccb8a5ff4cacda6d1ed95f7676f00cc2dd269"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 02 08:40:41 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 02 18:47:17 2019 +0000"
      },
      "message": "Avoid resolving startup const strings without a profile\n\nWithout a profile, the behavior should be to resolve no strings instead\nof resolving them all.\n\nBug: 127609587\nTest: test-art-host\nChange-Id: I374ce60f2a731fd0a561226999e9ce5a6ac2c2e4\n"
    },
    {
      "commit": "39402548017c99f9b33afaa851f412371013e911",
      "tree": "80c4d53cb7ae12ab9f4800cb358e53d5109593da",
      "parents": [
        "2fde9bdc252e209d722f83410f2ced42ab73e8a4"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sun Mar 24 02:47:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 18:18:00 2019 +0000"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy, with IgnoreDestructors option enabled.\n\nTest: m checkbuild\nBug: 116509795\nChange-Id: I5dafa10c2cf605165581b8cf7dd2633ed101ed65\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "bb206de72135271e66e58576b1196f3e08d5b6fd",
      "tree": "3ecbb781735b26d43628cf0f08673ce9908d69fd",
      "parents": [
        "5fdd1e84e0e3c4da0e6beac66a5cdd81c34bf399"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 10:30:32 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassExt.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: If5fe3b9f6e10549b5ca3f395b0c83531cd3ba7a3\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "fe1d952a9912bf597174dc636d0f87db06a8d925",
      "tree": "db7f3fd5d0b5be8de106426f0bd9316b18594e3e",
      "parents": [
        "34857b5fd3be5ee8cf1935bd1fbaad37a8e42768"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 25 17:19:11 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 27 15:10:09 2019 +0000"
      },
      "message": "Use generic name for JNI trampolines.\n\nJNI trampolines tend to be deduplicated which seems to lead to confusion.\n\nBug: 32949969\nTest: test.py -b --host -r -t 137-cfi\nChange-Id: Ic39998448a05f98fc1e068c4f384f35085121911\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": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\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": "50928116be503deed341fbc84c0647d5687b12a1",
      "tree": "2ab09470c05eff72860eb8df14dfcc1fba002ec4",
      "parents": [
        "b9c29f625bc27968d80f9eafa988dc14af0a1c28"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 22 17:06:28 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 25 10:59:19 2019 +0000"
      },
      "message": "Move elf_utils.h to libelffile library as well.\n\nAlso move some of our ART-specific utils form elf.h.\n\nBug: 73344075\nTest: generated oat files on host are identical.\nChange-Id: I587afc30875b9ddb57220fb3d4e764f9bb7a0e25\n"
    },
    {
      "commit": "e5d93b58a530be39c9a067cdd7f491e4626ec51d",
      "tree": "30becd07985c4c2f7b2a339f7d6783220255f08e",
      "parents": [
        "336245d020ce5d1595c56a2953bf7b3103b54984"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 27 15:10:52 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 22 18:22:34 2019 +0000"
      },
      "message": "Compare the oat version of runtime, dex2oat and the compiler.\n\nEnsure they match, otherwise we might get confusing crashes.\n\nBug: 125318570\nTest: running ahat-test-dump after oat version bump triggers the check.\nChange-Id: If4bc832af50c2cb851054be03c9887f9a3d4d04b\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": "c2109c6803a5b7c23b0d59f67d13d58f97111e5b",
      "tree": "6d51f55486e734bbae5565496c2792cc35f6655c",
      "parents": [
        "09d3576c2acda0785047cf830a228e413a36e757"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 20 13:34:39 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 21 05:10:27 2019 +0000"
      },
      "message": "Fix possible overrun bug for resolving startup strings\n\nMoved the ResolveConstStrings after verification and added logic to\nonly resolve strings for classes that verify. This fixes a bug\nwhere invalid Dex bytecode could cause dex2oat to crash.\n\nBug: 128915540\nTest: test-art-host\nChange-Id: Id2e5e4b10e5afbb8955e805d199754bc255a2f42\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": "7286ad6c340b11f28240a049cf3225a3d58ebc67",
      "tree": "816ce20748ac779573e39798e4d01d4b42e28f2b",
      "parents": [
        "f1d973dd98e1f95a28718ab25c8452be3639708a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Mar 19 09:58:10 2019 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Mar 19 19:07:09 2019 +0000"
      },
      "message": "Enable lld for oatdump tests\n\nOld lld problem seems to be fixed in newer version.\n\nBug: 79417743\nTest: HOST_PREFER_32_BIT\u003dtrue m -j32 test-art-host-gtest-oatdump_app_test\nChange-Id: I292892a26e6ae90bf6fd2d5d8510f71475d1e38f\n"
    },
    {
      "commit": "a43ba3da86c046c545a988f3d40f53c24a525f83",
      "tree": "a66479561d9f14a9b19e31a9a6851f81ae50673c",
      "parents": [
        "e37b7915908dba10e90c39a3a82cb0cd1dc05f5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 13 15:49:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 15 16:11:36 2019 +0000"
      },
      "message": "ART: Add ClassVerifier\n\nRemove class handling from MethodVerifier.\n\nTest: m test-art-host\nChange-Id: I0e125e0c8a852936ed7cff0f349a7fde97f62826\n"
    },
    {
      "commit": "98fb083a30e9b37685f943e2923e65e60e0a0971",
      "tree": "541c64045666ce721b3c0b32549e415a28a88296",
      "parents": [
        "c7c5d5311501eebf791b0bca6d1e56c58b062a9c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 13 16:52:11 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 14 14:23:49 2019 +0000"
      },
      "message": "Remove obsolete trampoline offsets from OatHeader.\n\nAnd compile trampolines only for the primary oat file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I2b1162c5ca6c4b0b04dcce7d50618c91f6bf1c06\n"
    },
    {
      "commit": "403aafa9f286e13ee2a64748514d33af39b55ab0",
      "tree": "fe9e5a5eed0081c2ac03dec0d616ed32d162b99c",
      "parents": [
        "8809c9cd8d7f477e0a74f68537c864e3b7a35db3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 06 18:04:14 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 12 14:11:25 2019 +0000"
      },
      "message": "Fix non-deterministic compilation for const-string...\n\n... in inlined methods that are not in the boot profile.\nIf such string is not in the boot image for other reasons,\ndo not resolve the string and use the kBssEntry load kind.\n\nBoot image sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.art: 12349440\n   arm/boot*.oat: 19862024\n   arm64/boot*.art: 16609280\n   arm64/boot*.oat: 23568592\n - after:\n   arm/boot*.art: 12324864 (-24KiB)\n   arm/boot*.oat: 19936612 (+73KiB)\n   arm64/boot*.art: 16580608 (-28KiB)\n   arm64/boot*.oat: 23642120 (+72KiB)\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nBug: 26687569\nChange-Id: I3e0b72cd5e8c67904517856208f25a6c379ab601\n"
    },
    {
      "commit": "8809c9cd8d7f477e0a74f68537c864e3b7a35db3",
      "tree": "56619f00a3df14fd2b9c08fa23e951bb68af5c58",
      "parents": [
        "2d8b8119228bbe4202490b1d5fed6191989d5d83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 11 15:55:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 12 14:11:25 2019 +0000"
      },
      "message": "Preload const-strings only for profile methods.\n\nThis fixes a boot image size regression due to including all\nthe const-strings.\n\nNote that this re-introduces one source of non-determinism\nwhen compiling the boot image, i.e. string resolution for\ninlined methods not present in the profile. This shall be\nfixed by a follow-up CL.\n\nBoot image sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.art: 14483456\n   arm64/boot*.art: 18751488\n - after:\n   arm/boot*.art: 12349440 (-2.0MiB)\n   arm64/boot*.art: 16609280 (-2.0MiB)\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nBug: 76145463\nBug: 26687569\nChange-Id: I5127d58bc7bdf24532fda6cc7d32a1bd2068452e\n"
    },
    {
      "commit": "7cb707ffe41774150cd41283ebb6f9b3b86060ea",
      "tree": "09ec0318b2578de9b89987669f63e822ea95a8ad",
      "parents": [
        "a75e5892fba6d0208f33e9ab8e19e732daf94996"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 08 12:58:06 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 11 22:36:42 2019 +0000"
      },
      "message": "Use resolve-startup-const-strings\u003dtrue for run tests\n\nGet extra test coverage for the feature.\n\nFixed DCHECK in image writer since there may be more preresolved\nstrings than the NumStrings.\n\nAdded no-inline to test 137 to fix inlining that started happening\ncausing a failure.\n\nTest: test/run-test --always-clean --dex2oat-jobs 4 --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni --64 968-default-partial-compile-gen\nTest: test-art-host\nBug: 123377072\nBug: 124377920\n\nChange-Id: Ic9034a1e2a55a0bb1e5776b9073e37955009948c\n"
    },
    {
      "commit": "327497e303903f300b01f77f2259fd5b61238ee3",
      "tree": "3f714d2d2ee7d9b6c0ecf71a10c157d4952e5758",
      "parents": [
        "ef764ad3e6d7f07ea9e32642dc3e163bb4eb44fb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 04 12:53:20 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 11 06:59:41 2019 +0000"
      },
      "message": "Move CompilerDriver to dex2oat/.\n\nAlso DexToDexCompiler, QuickCompilerCallbacks and tests.\n\naosp_taimen-userdebug:\n - before:\n   lib64/libart-compiler.so: 3112344\n   lib/libart-compiler.so: 2312908\n   bin/dex2oat: 563176\n - after:\n   lib64/libart-compiler.so: 2986720 (-123KiB)\n   lib/libart-compiler.so: 2219852 (-91KiB)\n   bin/dex2oat: 635832 (+71KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nChange-Id: I36e63b83dff1d5c731d05de27d3663cfc81de6ad\n"
    },
    {
      "commit": "5708376183c4e2d4456a191955c5060e404a9f0a",
      "tree": "4afed897b6e71c45b4f51ae9536d5bb6da7ec024",
      "parents": [
        "3c83921510c849cd43b90ab6094abce232c8c088"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 09:24:45 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 15:40:35 2019 +0000"
      },
      "message": "Revert \"Remove code size from OatQuickMethodHeader\"\n\nThis reverts commit 131f23a4c2c34b689c07e6efd05cea74190f0113.\n\nBug: 123510633\nBug: 127305289\n\nReason for revert: b/127305289\n\nChange-Id: I59905779fe8c7d7551c0fa6c8693fb64eb6760b2\n"
    },
    {
      "commit": "815d5e5304a5b57db64d6829813a14e464d5c55f",
      "tree": "7fac4adffcda366f4ee252e233828ebf2361f2b0",
      "parents": [
        "b1b2ca97651b1993e0a00a4543209419afbc6e64"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 04 10:18:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 05 12:37:30 2019 +0000"
      },
      "message": "Refactor compiler tests around CompilerDriver.\n\nIntroduce CommonCompilerDriverTest and inherit that in tests\nthat need to use CompilerDriver. This is in preparation for\nmoving the CompilerDriver to dex2oat/.\n\nTest: m test-art-host-gtest\nChange-Id: I46cf0bc1df4327569eef5526eeab0781473173a1\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": "e57087025bb462f875c1fb0574eefba92f29ff20",
      "tree": "15278f603ea9508869dcc9ab9b26a97617e3fc1a",
      "parents": [
        "c55a1a260e34144d294640d84d09f5c1d77636ca",
        "131f23a4c2c34b689c07e6efd05cea74190f0113"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 21 12:41:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 21 12:41:53 2019 +0000"
      },
      "message": "Merge \"Remove code size from OatQuickMethodHeader\""
    },
    {
      "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": "131f23a4c2c34b689c07e6efd05cea74190f0113",
      "tree": "c0c1927bd770f0224c6aed5eaccb13765a7cc57d",
      "parents": [
        "438cc2b34be2a5d114a50ba6cdef22f9045d863a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 29 18:52:12 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 14 09:44:47 2019 +0000"
      },
      "message": "Remove code size from OatQuickMethodHeader\n\nThis saves from 0.75% from oat file size.\n\nBug: 123510633\nChange-Id: Ibf0d45d5d84057ee45a3584a4b69a7c0487443bf\n"
    },
    {
      "commit": "7370d92da01ad07c649e3f988aaf55ee7585a803",
      "tree": "961717b2838d923b87b2ecf1ebac55a8c5ecaa8d",
      "parents": [
        "91b290038cbd00a48028922a5e76c0c39d6ebcb6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 14:00:30 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 14:44:44 2019 +0000"
      },
      "message": "Remove oat_patches from the DWARF writer.\n\nWe no longer use them.\n\nTest: test-art-host-gtest-dwarf_test\nChange-Id: Ie018d2314f028584edb398b6310a7284a0ec2069\n"
    },
    {
      "commit": "91b290038cbd00a48028922a5e76c0c39d6ebcb6",
      "tree": "0b05e3a20da9ae131b9299554b4c7efa7e156f7d",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 08 15:51:31 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 13:51:16 2019 +0000"
      },
      "message": "Remove support for generating .eh_frame ELF section.\n\nThe eh_frame support was originally added because the\nold libunwind library didn\u0027t support debug_frame.\nThe new libunwind supports debug_frame well, and since\nwe have switched to it, we can remove the legacy code.\n\nThe main advantage of debug_frame is that it can be\ncompressed as part of mini-debug-info.\n\nI am somewhat preserving the .eh_frame_hdr binary\nsearch table (renamed as .debug_frame_hdr.android).\n\nBug: 123621350\nTest: Generated framework oat files are identical.\nChange-Id: I35b18895482f2176e02df07b086af7a1d40f90d5\n"
    },
    {
      "commit": "5e11568dfc82683223bf3dd81601f4548a6cdf2b",
      "tree": "ddfa08fe37bde0053b20e7feae4fd8014b0f84cf",
      "parents": [
        "1e70b89afe0e022ec51210ea0da1e0706e194fd0",
        "38714e8535c7a7abaa69d3fb5b1f9cfd97ab1854"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 11 12:58:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 11 12:58:36 2019 +0000"
      },
      "message": "Merge \"ARM: Fix the CallOtherJustTooFarAfter test.\""
    },
    {
      "commit": "38714e8535c7a7abaa69d3fb5b1f9cfd97ab1854",
      "tree": "6cd2aa17742f15c45ab0c583afd830ac03fd89ee",
      "parents": [
        "a9c9e85ea1c77d9badf27aebd63d617ccdf70dc3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 15:06:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 11 10:45:39 2019 +0000"
      },
      "message": "ARM: Fix the CallOtherJustTooFarAfter test.\n\nAlign the ARM and ARM64 tests that are using the helper\nfunction Create2MethodsWithGap(), bringing the fix\n    https://android-review.googlesource.com/722671\nto the ARM architecture.\n\nTest: m test-art-host-gtest\nTest: Repeat with https://android-review.googlesource.com/890279\nBug: 123510633\nChange-Id: I6ef17e66013f39311ea6ea522b6704c8891e52df\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": "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34",
      "tree": "9360a99feb7a1aa6fe7b2685429ddb49b17a5e7c",
      "parents": [
        "c66d6a7569ef72d9e9eb115bb7b663ccc8df5179",
        "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 18:00:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 06 18:00:50 2019 +0000"
      },
      "message": "Merge changes I14c7cddd,I4a39d0e8,I3f24c8f4,I9699f138\n\n* changes:\n  Replace StringPiece with std::string_view in art/runtime/.\n  Replace StringPiece with std::string_view in HashSet.\n  Replace StringPiece with std::string_view in Signature.\n  Replace StringPiece with std::string_view in class.h.\n"
    },
    {
      "commit": "2ef01100bb56b3f8ab5fbc886a7066d721290d74",
      "tree": "a60e1265e2b1e733832047417e93a9c3ae1e6165",
      "parents": [
        "eb37ba594146338bf7e7e2bf3769d08046fb263f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 15:05:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:12 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in HashSet.\n\nUpdate HashSet comment and related code. Also remove dead\nCompilerOptions declarations with StringPiece parameters.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I4a39d0e8e0392a414129369c5b304ec4813e9ed5\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": "49b2b2050d970384bf70c3a3bc526ac62d299b2c",
      "tree": "35ba4cbd6f008e2152e3683eac70cfb7ce031088",
      "parents": [
        "5fe64d84822bf86d72d941c271c93ecbb0ff0742"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 01 13:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 01 15:37:49 2019 +0000"
      },
      "message": "Allow empty mini-debug-info ELF section.\n\nGenerate mini-debug-info ELF section even if it is empty\n(if we generate oat file with no compiled methods).\n\nThe intention is to make it easier to distinguish ELF files\nmiss the section unintentionally due to build configuration.\n\nThe overhead of the empty section is 140 bytes per oat file.\n\nBug: 37724669\nTest: test.py -b -r -t 137\nChange-Id: I521da6bb1a04d099465a3ffd9e05b7c836165208\n"
    },
    {
      "commit": "9b596c0a1e0c26cb0b0bf180f12a830c9c870458",
      "tree": "6c1f05e652815a20d1792f7654c1792acdba7721",
      "parents": [
        "c76f9b723997cdf796c937637473731da63e34b7",
        "5ffefaa41de9b9e711f6e8bc7ed9ff9e9d844fe7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 01 00:31:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 01 00:31:51 2019 +0000"
      },
      "message": "Merge \"Ensure the correctness of fast verify\""
    },
    {
      "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": "119733d87242414100df7b9eedb6d1672a03ead6",
      "tree": "19ba75bd42d3c94a4de0684ae66f4078da1546a6",
      "parents": [
        "8a64e773d4d1221166c6a8206315b450e448705a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 15:14:41 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 31 15:39:55 2019 +0000"
      },
      "message": "Revert \"Revert \"ART: introduce PALette abstraction layer\"\"\n\nThis reverts commit e6e01a0a00de80704ccb21c48d5d8bdee4470b77.\n\nBug:  122824298\nTest: art/test/testrunner/run_build_test_target.py -j50 art-test-javac\nTest: m out/target/common/obj/PACKAGING/hiddenapi-stub-flags.txt\nTest: frameworks/rs/build_rs.py\nChange-Id: If7b9ddca3daa80b75b3541abd283bf47d5b81118\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": "e6e01a0a00de80704ccb21c48d5d8bdee4470b77",
      "tree": "8f9cc651764686140accaadcfb8f77bf7572c24b",
      "parents": [
        "4b9d00aca9b025b545c9633b4605334c22fc4d2d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "message": "Revert \"ART: introduce PALette abstraction layer\"\n\nThis reverts commit 4b9d00aca9b025b545c9633b4605334c22fc4d2d.\n\nReason for revert: breaks renderscript mac and run_host_tests in master.\n\nChange-Id: I6024894a384c65f3e7d81b9c5bba8ebe8ce1b420\n"
    },
    {
      "commit": "4b9d00aca9b025b545c9633b4605334c22fc4d2d",
      "tree": "7984bf247f908d145b7c6b48df99f3f0a80ae148",
      "parents": [
        "4ee4561f2153f3b0bc3be2e781488a97c73ca58e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 03 17:04:02 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 09:00:27 2019 +0000"
      },
      "message": "ART: introduce PALette abstraction layer\n\nThis change decouples direct dependencies on system libraries.\n\nBug: 122824298\nTest: art/test.py --host --64\nTest: art/test.py --target -j8\nTest: m -j100 \u0026 flashall -w \u0026 device boots\nTest: art/build/apex/runtests.sh\nChange-Id: Iae927ed9aaa228a941cd444cef04e6ec53955299\n"
    },
    {
      "commit": "907001d59465cb6b1627141fef12c1efcae27f39",
      "tree": "2acfdfab4b71590e7c7dbe32f78433da61a7decc",
      "parents": [
        "2ddf9ca2e5ea1707a842b07e434a61371064b1e6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 17 00:16:04 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 17 15:22:36 2019 -0800"
      },
      "message": "Revert^2 \"Build dex2oatd with compile_multilib: both.\"\n\nThis reverts commit 9ab73d5d53f419a3802b6f21a879db94826e8d94.\n\napex does not support symlink_preferred_arch so zipapex tests could\nnot find dex2oatd. This updates the run-test-jar to use dex2oatd64 in\nthis situation.\n\nReason for revert: Fixed issue causing linux_bionic to fail with the CL\nBug: 122373634\nBug: 119942078\nTest: ./art/test/testrunner/run_build_test_target.py -j72 art-linux-bionic-x64-zipapex\n\nChange-Id: I30d84cea181fb18b077b477c94a4719fde273016\n"
    },
    {
      "commit": "9ab73d5d53f419a3802b6f21a879db94826e8d94",
      "tree": "2d1aba1d007e9a0a8e23c7d712af33349a605b10",
      "parents": [
        "81141ac9826075fa10f10674015f114e1210da7a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 17 00:14:04 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 17 00:14:04 2019 +0000"
      },
      "message": "Revert \"Build dex2oatd with compile_multilib: both.\"\n\nThis reverts commit 81141ac9826075fa10f10674015f114e1210da7a.\n\nReason for revert: breaks linux-bionic targets\nTest: none\nBug: 122373634\n\nChange-Id: I95300f3c73a6c102abe5c0f66c5a8deed52cfd12\n"
    },
    {
      "commit": "81141ac9826075fa10f10674015f114e1210da7a",
      "tree": "3774a865af42aa4fb81f46da6dfd14b442a1f283",
      "parents": [
        "bae0758befcc32cbc65549fdf895aebbfd34f24e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 14 14:01:12 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 16 10:05:04 2019 -0800"
      },
      "message": "Build dex2oatd with compile_multilib: both.\n\nWe hit a bug where the output of dex2oat could depend on the binary\u0027s\nisa. Build dex2oatd with both 32 and 64 bit versions to enable us to\nmore easily test for this in the future.\n\nTest: m dex2oatd\nBug: 122373634\nChange-Id: I2d36b0151e2f3393308ca22b1e06f4015fa60b76\n"
    },
    {
      "commit": "ea5930431442d93948d7b03534ab274689faacf0",
      "tree": "f20ae59851086975b9c856e2474bdd70e5b28345",
      "parents": [
        "f74148675931890375389af3b59e597c42a5139b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 10 21:12:25 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 10 21:12:25 2019 -0800"
      },
      "message": "Remove ObjPtr from CalculateNewObjectOffsets\n\nCausing failures for heap poisoning due to VisitObjects invalidation.\n\nFixes heap poisoning tests.\n\nTest: test-art-host\nBug: 116059983\nChange-Id: Ia6e27347d55964c300d9039378b4930d9019610b\n"
    },
    {
      "commit": "00fbe4fc833f680e78f692bd7fc4d41ef35f437c",
      "tree": "267cfd885e884602a4b62eb6cbe727042751cbad",
      "parents": [
        "e28c18beef88a19d3050a5c718da291343c45698"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 02 16:52:38 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 10 15:34:56 2019 -0800"
      },
      "message": "Add region padding for app images\n\nFor app images, partition the image such that no object spans cross\nregion boundaries.\n\nBug: 116059983\nBug: 116874661\nTest: test-art-host\n\nChange-Id: Iedffe9fac4b9b59f81de7dd607030ad3a8bcb602\n"
    },
    {
      "commit": "49b74a8c685acfe43dd33e3f51a24c486388bee1",
      "tree": "2c88245108b612904d1b3e377725894574ec1eed",
      "parents": [
        "a1ffdba7e285435cbb3538473f25eb7cb47cfd66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 07 10:19:49 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Remove thread from class.h\n\nMove only dependent functions to the inl.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ic2ceba1563ac44048afec6df1bccda91ceb42782\n"
    },
    {
      "commit": "1fb24e24787bb365f01c242a32efa6655607cc99",
      "tree": "9a04685b299546c647bc027648859a8d7f57007a",
      "parents": [
        "58864470eae648c3183336752473b307c6673b4d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 09 13:33:37 2019 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 09 13:33:37 2019 +0000"
      },
      "message": "Disable Dex2oatWatchdogTest.TestWatchdogTrigger.\n\nThis test has been prone to timeouts lately; disable it while we\ninvestigate.\n\nTest: n/a\nBug: 121352534\nChange-Id: I2f8dfd1359f486206cc596b02026c3151863baef\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": "6dbf9eca35bcaa752a6758d3127c233f8b7687e3",
      "tree": "ccf20a26a36b822a2d394df4a7d90341a49396eb",
      "parents": [
        "bec232eb2f07d53c4dbf510b3fbb80f092d02681",
        "73030ed317f0f8b0a1c25919970f7a20179efa2d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 03 23:44:06 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 03 23:44:06 2019 +0000"
      },
      "message": "Merge \"art_cc_static_library -\u003e art_cc_library_static\""
    },
    {
      "commit": "73030ed317f0f8b0a1c25919970f7a20179efa2d",
      "tree": "3448448e2817cbb3006af5f3567ae8f0a0fc7cb1",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jan 03 14:23:28 2019 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jan 03 14:23:28 2019 -0800"
      },
      "message": "art_cc_static_library -\u003e art_cc_library_static\n\nFor consistency with \u0027cc_library_static\u0027 which is in more common usage.\n\nBug: N/A\nTest: m nothing (parses all build files)\nChange-Id: I26f6b9e21bb446977e15220dd5d43d1334bd158f\n"
    },
    {
      "commit": "ad1aa6340567c0660506069d760ff41483eb3821",
      "tree": "dbceabc90859e9353a8683d8be02a702205be9c9",
      "parents": [
        "b8bca301eff0db87d37bc4ab898a4973d211019b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:30:54 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Move Signature to its own header\n\nReduce the dependencies on dex_file.h\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1450fe2c3f4a7f5b535ed38cc19cb8a053228541\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "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"
    }
  ],
  "next": "0ace5633680af8864b76b4f45d63b3407e4dcdf5"
}
