)]}'
{
  "log": [
    {
      "commit": "9e050ab1a061d9660eb0c1daa01a823ad75b0f05",
      "tree": "714f2ba3b11406310416e85357f45450634846b2",
      "parents": [
        "4f990714b13e0b4446305a5411648a1a9ae42a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 14:59:25 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 17:13:08 2021 +0000"
      },
      "message": "Remove the need of VerifiedMethod in the compiler.\n\nThe compiler only needs to know if a method is compilable or not. So\njust record a set of uncompilable methods (in some cases, we cannot have\nan ArtMethod, but the method can still be compiled).\n\nTest: test.py\nBug: 28313047\nChange-Id: Ic4235bc8160ec91daa5ebf6504741089b43e99cb\n"
    },
    {
      "commit": "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f",
      "tree": "b6692ebc91574820d64a6c0967083c43c5df3076",
      "parents": [
        "0849c1ca7b10a859d2ce3d2bd84a9b612fbb36e3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 15:22:40 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 18:50:33 2021 +0000"
      },
      "message": "Enable mini-debug-info by default.\n\nAll paths explicitly enable or disable the command line option.\n\nHowever, if we missed some or developers use stand-alone tools,\ndefault to working backtraces, which is the common intention.\n\nChange-Id: I1d308f2be881522ecfb945d5f679065e726d32aa\n"
    },
    {
      "commit": "d3d1a1a11626bd5198edb9242831c7b120652fbb",
      "tree": "ff8a97051ef08c463ae49d0d04faa24aa26713fa",
      "parents": [
        "9cf17115d93649311da4fd2ac0cd1f8e97e06490"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 14:11:11 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 20:37:45 2021 +0000"
      },
      "message": "Remove DexToDexCompiler\n\nSince quickening is deprecated, it is no longer used.\n\nThis CL only removes compile-time dead code.\n\nBug: 170086509\nTest: test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I46c02fb7a9304f8361cecfafb9507c906a93592f\n"
    },
    {
      "commit": "c7ac91b21d1a15c14e29d69ff02b48c485962b0d",
      "tree": "f8bcc4df536c29773742cbb54b32b959ebd601c3",
      "parents": [
        "5c48df9895530fb26666c6d79d155ef3886d7a83"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 04 21:44:01 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 16:31:17 2021 +0000"
      },
      "message": "[metrics] Report some ART metadata\n\nAdds reporting for some metadata associated with ART metrics,\nincluding timestamp relative to ART startup, the session id, and the\nprocess\u0027s user id. It additionally outputs placeholders for the\ncompilation reason and compiler filter, but these need some additional\nplumbing from the Runtime and OatFileManager to fill in, so those will\ncome in a followup CL.\n\nThis CL also includes a fair amount of refactoring around metrics\nreporting and handling the session data.\n\nExample output:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 768\n        session_id: 5026277321588503825\n        uid: 123456\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassVerificationTotalTime: count \u003d 4167\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 7,0,0,0,0,0\n    *** Done dumping ART internal metrics ***\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nChange-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc\n"
    },
    {
      "commit": "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a",
      "tree": "70b8e5628d1d98490229ae98b370cf3407cfcc04",
      "parents": [
        "0b8b5a731f37491e1b135f577b16a5376bf4b753"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 12:23:48 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 18:09:40 2020 +0000"
      },
      "message": "Make RTP::Visit robust against input order\n\nReferenceTypePropogation::Visit(ArrayRef) relied on the input having a\nparticular order with known values at the front then topological. This\ncould cause issues if the list was not properly sorted, causing the\nRTP to silently fail. This makes RTP robust against the ordering of\ninputs for this function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I03c522ea745f271ce438c82f7c6f3ab476c8249a\n"
    },
    {
      "commit": "0d47a82b11ea666fc3ef971b32be5a03ffadc452",
      "tree": "2bd3e50b0dae701470f92a713a875ab594b3d344",
      "parents": [
        "6624d58c11b43a10c802037bf1c5754ca276156c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 25 09:16:34 2020 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 02 17:21:58 2020 +0000"
      },
      "message": "Use help-text generator for dex2oat\n\nThe use of a static text blob makes keeping the dex2oat help text up\nto date difficult. Change to use the new cmdline help-text generator\ncode.\n\nTest: dex2oat --help\nChange-Id: I1139cba2c773242e15f863d7efd2c7050c05ab4f\n"
    },
    {
      "commit": "695348f4b0541f4373b46eac5830cdd87f71c076",
      "tree": "f2f6019f0c394f99aaaf9f2f7deec16bf6116b0f",
      "parents": [
        "1f5300a211202442a07607830c6550773ca50b50"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 14:42:02 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 20 08:41:09 2020 +0000"
      },
      "message": "Add compiler type to CompilerOptions.\n\nLet CompilerOptions hold the information whether it is AOT\nor JIT compilation, or Zygote JIT for shared code.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_taimen-userdebug boots.\nChange-Id: Id9200572406f8e43d99b8b61ef0e3edf43b52fff\n"
    },
    {
      "commit": "4fa07a5727551018e2dcd93d41dac98f20212e99",
      "tree": "8214358e517601c67706a4fbbb4010408a45780a",
      "parents": [
        "d31def587a914c1d306355a7331c24d7b13ad5ca"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 31 20:52:09 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 01 17:19:07 2020 +0100"
      },
      "message": "Add explicit compiler option to enable test-specific features.\n\nWe can no longer rely on checking the \"core.art\" image name,\nsince we plan to remove it and use the shipped boot image.\n\nThis option enables test-specific features, such as $noinline$.\n\nTest: ./art/test.py -r --optimizing --64\nBug: 147817558\nChange-Id: Iadac6e1b0f46e83efd0551fb8462a6b268ad33d8\n"
    },
    {
      "commit": "fe57c2b63df652fe4eefd750e3566309bfe038fb",
      "tree": "839ff604e8baae86458642803bc2738d0ab7b5e3",
      "parents": [
        "a467a6e81f5c6da589a5fb16fdb85f2604860623"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 27 14:58:54 2020 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 27 19:23:23 2020 +0000"
      },
      "message": "Revert^4 \"Add \"linkage\" test options\"\"\n\nThis reverts commit 16c08ca97486f535698f1a1b17f0332bfe78e95a.\n\nReason for revert: Disabled on device testing\n\nChange-Id: I8d5442e0ebb6383ebfbce98f1857b5e844e0d5e1\nBug: none\nTest: make test-art-host-gtest-dex2oat_test\n"
    },
    {
      "commit": "16c08ca97486f535698f1a1b17f0332bfe78e95a",
      "tree": "81dc1613d8751db5e9c73031bdfe9725c361778c",
      "parents": [
        "133987d8e3387395943f33ecc467ba0dbfed77e6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 27 10:07:19 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 27 10:07:40 2020 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add \"linkage\" test options\"\"\"\n\nThis reverts commit 80c0c50de048da458c707adde5b0499d75f8253a.\n\nReason for revert: Test fails on device:\nhttps://ci.chromium.org/p/art/builders/ci/angler-armv8-ndebug/1306?\n\nChange-Id: I19e9b9e24023b2d7b6b86114c7a9e4018f65b2b8\n"
    },
    {
      "commit": "80c0c50de048da458c707adde5b0499d75f8253a",
      "tree": "a8e5c0bda491c4e84b37fd483694fe9ab65766fb",
      "parents": [
        "379503d0a12d4e22f0c04b4e7f295bfb9f6349fd"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Mar 24 22:02:57 2020 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Mar 26 20:38:09 2020 +0000"
      },
      "message": "Revert \"Revert \"Add \"linkage\" test options\"\"\n\nThis reverts commit 91a8e6f60c508c6e010b6ef8e4056e3a6f04c447.\n\nReason for revert: Moved tests to gtest and under compilation only.\n\nChange-Id: I60899694946353bfcd334473c20bb17c84f095e0\nBug: none\nTest: make test-art-host-gtest-dex2oat_test\n"
    },
    {
      "commit": "91a8e6f60c508c6e010b6ef8e4056e3a6f04c447",
      "tree": "42372667d930c57ef3384c1c4981fb5c1591ef8b",
      "parents": [
        "873bb64b8815b3f6a350ce109eb54ec770369d22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 08:34:15 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 08:34:15 2020 +0000"
      },
      "message": "Revert \"Add \"linkage\" test options\"\n\nThis reverts commit 873bb64b8815b3f6a350ce109eb54ec770369d22.\n\nReason for revert: Test in CL fails on device, see:\nhttps://ci.chromium.org/p/art/builders/ci/angler-armv7-ndebug/1302?\n\nChange-Id: I18d8204f40bbc0f89eb230656e14966035b0b1c3\n"
    },
    {
      "commit": "873bb64b8815b3f6a350ce109eb54ec770369d22",
      "tree": "2059840d3930dc5bd19536150fb3ac3c15654fbc",
      "parents": [
        "6e44830b65de39f5d20342109f7cbc47e4624fe0"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Mar 10 15:26:55 2020 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 20 09:48:11 2020 -0700"
      },
      "message": "Add \"linkage\" test options\n\nAdd options to control \"linkage\" model.  This involves checking for\nredefinitions and subclassing classloaders.\n\nBug: none\nTest: 1964-redefinition\nChange-Id: I0cb3c725b7d62f7c6c0958dc6d5f9b55d6258fd5\n"
    },
    {
      "commit": "6cf7a9b0ecce7057758a55d8a2a2a5f1ca4653dc",
      "tree": "e460c6d1a599ba65e540951f5687227779e81a87",
      "parents": [
        "e248b023113308862520ba8d42f882c6a1016dbd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 27 21:51:29 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 28 08:36:58 2020 +0000"
      },
      "message": "Revert \"Revert \"If generating an image, run initialization and other optimizations.\"\"\n\nThis reverts commit bbec8a6fc720ee5ce572d3fb63617fb0af6addc7.\n\nReason for revert: Fix vdex compilation with app images.\n\nTest: 628-vdex\nBug: 150193586\n\nChange-Id: Ic4d0445f277caf9405c18938c1f39ee08b9bf2fd\n"
    },
    {
      "commit": "bbec8a6fc720ee5ce572d3fb63617fb0af6addc7",
      "tree": "62cfdd7f36d93e41cb57af0d61e8f7c1f9ee3b55",
      "parents": [
        "6972b9631cb85249ab35cf9f443890089733d022"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 25 20:31:05 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 26 00:18:37 2020 +0000"
      },
      "message": "Revert \"If generating an image, run initialization and other optimizations.\"\n\nThis reverts commit ada8536c19e57cbfe55dcb3c72aa95e79365ed21.\n\nReason for revert: test failures\n\nChange-Id: I8640fe842d7f2255b5749403c798094f9e365fda\n"
    },
    {
      "commit": "ada8536c19e57cbfe55dcb3c72aa95e79365ed21",
      "tree": "7d9a4d2e3565d106220ac5b2f96933375f5b7ecb",
      "parents": [
        "b96479447d38e3d1e035d384897cf984516f1c2d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 20 14:17:39 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 25 11:39:16 2020 +0000"
      },
      "message": "If generating an image, run initialization and other optimizations.\n\nThe biggest reason for this CL is to ensure a boot image and a boot\nimage extension always have their conflict tables filled.\n\nTest: test.py\nBug: 149894949\nChange-Id: I7bada1b3697322ce78b4f352dec854651c0e995c\n"
    },
    {
      "commit": "ef46e101be0afb84898a9ac37af1f1f6c1677cf4",
      "tree": "fd0de3e4973695b8b36904607e003f7d26a8732d",
      "parents": [
        "e78b50eb15898ceae461ef016d510f7c941f9158"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 20 13:44:11 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 20 16:04:52 2020 +0000"
      },
      "message": "Do not verify dex files for --compiler-filter\u003dassume-verified.\n\nReduces the compilation time for the boot image extension\nwith said filter by over 0.5s (comparing the best observed\ntiming \"before\" to the worst observed timing \"after\").\n\nTest: aosp_taimen-userdebug boots;\n  adb root \u0026\u0026 \\\n  adb shell stop \u0026\u0026 \\\n  adb shell setprop dalvik.vm.boot-image \\\n    \u0027boot.art:/nonx/boot-framework.art!/system/etc/boot-image.prof\u0027 \u0026\u0026 \\\n  adb shell \u0027setprop dalvik.vm.extra-opts \\\n    \"-Ximage-compiler-option --compiler-filter\u003dassume-verified\"\u0027 \u0026\u0026 \\\n  adb shell start  # Starts correctly\n  # Check dex2oat timing in logcat\nBug: 119800099\n\nChange-Id: I3fc82c9485385ff5e0ccc5031e1141a685ee6c19\n"
    },
    {
      "commit": "4cbb51a0c057249a500ca7fe3947401978f165d2",
      "tree": "af626569243ce560c45fe5c653ca61fae0cd6a0b",
      "parents": [
        "5d24c3d43152b36181fbf9819bfbe5589572f16b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 11:25:54 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 18:21:11 2020 +0000"
      },
      "message": "Fix ART code around JIT zygote.\n\n- The right image location for it now ends with a profile\n- Add profile locations to image spaces, so the JIT knows what to\n  compile\n- Remove now deprecated ApexImage related code.\n\nBug:119800099\nTest: boots, methods from framework gets compiled by zygote\nChange-Id: Ie31b62d0a25f1b50e266c1537c43307d7b29e138\n"
    },
    {
      "commit": "c124d1dd977a2ddcd6e4928cfe6c0698f44d6523",
      "tree": "b3cbe2ead73a9ca14845f0b37d1254f8d81e79da",
      "parents": [
        "caafd621eb33863630380818db918a2c93c9054e"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jan 27 14:50:38 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jan 28 17:04:36 2020 +0000"
      },
      "message": "Fix name-based detection of JIT-zygote boot image extension.\n\nART detects JIT-zygote boot image by the image name. This has been\nbroken since boot image extension has been enabled for JIT-zygote\nconfig in CL I5493e575ebf90bad1d5ad2850004d54590bbc079.\n\nThis CL replaces \u0027kApexBootImage\u0027 with \u0027kApexBootImageExtension\u0027,\nsince the JIT-zygote image is always used with extension.\n\nTest: compare boot-framework.art and apex-framework.art,\n  they were identical before this CL, and differ after this CL.\n\nTest: JIT-zygote config boots, steps 1-2:\n\n  1. Temporarily enable Jit zygote in the product device config (in\n    this case device/google/muskie/aosp_walleye.mk):\n\n    +# System server should not contain compiled code.\n    +PRODUCT_SYSTEM_SERVER_COMPILER_FILTER :\u003d verify\n    +\n    +# Use the apex image for preopting.\n    +DEXPREOPT_USE_APEX_IMAGE :\u003d true\n    +\n    +# Have the runtime pick up the apex image.\n    +PRODUCT_PROPERTY_OVERRIDES +\u003d \\\n    +    dalvik.vm.boot-image\u003d/apex/com.android.art/javalib/apex.art:/system/framework/apex-framework.art\n\n  2. Build and flash:\n    $ lunch aosp_walleye-userdebug \u0026\u0026 m \\\n    \u0026\u0026 adb reboot bootloader \u0026\u0026 fastboot flashall -w\n\nChange-Id: Ifd3d3c13107c2e4514eed7c4e2b1bbc5a5a12245\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": "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": "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": "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": "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": "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": "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": "ec956e8866e4ee9fe59bb99b4db6a3b6017937f1",
      "tree": "ff9721ecf2ee2d41d115d5bdeabd226bc33b565d",
      "parents": [
        "c82259085bceb7e4f0e19f60039d6667f6907dcd",
        "eda46e9cad4271af7188fe0f542cbe88679f4c6e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 21 09:37:46 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 21 09:37:46 2019 +0000"
      },
      "message": "Merge changes Ifd690cda,I7bcbe947\n\n* changes:\n  Fix vdex fast-verify performance regression\n  Improve `verified`, add `redefined` class status in VerifierDeps\n"
    },
    {
      "commit": "eda46e9cad4271af7188fe0f542cbe88679f4c6e",
      "tree": "9632daf7b7c0600bd9200da65e43f6640c4cfc27",
      "parents": [
        "feb228244619237d110d8817865d7647f37b9b4f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 18 12:38:19 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 20 18:32:10 2019 +0000"
      },
      "message": "Fix vdex fast-verify performance regression\n\nRecent CL I0d06b82e31088c58d4493723a5435309740f1d0c generalized the\nfast-verify class redefinition check by checking that all vdex-verified\nclasses resolve to dex files covered by the vdex and are not duplicates\nof classes in parent class loaders. This introduced a performance and\nallocated memory regression for dex2oat invoked with\ncompiler-filter\u003dverify(-profile).\n\nThis patch removes the regression by acquiring a list of classpath dex\nfiles from the compiler driver and boot classpath dex files from the\nclass linker, avoiding class resolution altogether.\n\nA small performance overhead remains as previously only boot classpath\nwas being searched.\n\nTest: run `dex2oat filter\u003dinterpret-only; dex2oat filter\u003dverify`\n      compare time and allocated memory numbers before CL and after\nChange-Id: Ifd690cdafdc99d3eafb9847d67775fc11a5b5023\n"
    },
    {
      "commit": "feb228244619237d110d8817865d7647f37b9b4f",
      "tree": "5f30c01597761e6552ea5f770443bc12785a9562",
      "parents": [
        "9dcc0733afe9c512e93317291de0b0a7124ef465"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 13 21:25:57 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 20 18:32:10 2019 +0000"
      },
      "message": "Improve `verified`, add `redefined` class status in VerifierDeps\n\nChanges implementation of `unverified_classes_` in VerifierDeps from\nstd::set\u003cdex::TypeIndex\u003e to `verified_classes_` of type std::vector\u003cbool\u003e\nindexed by class def indices. This cleans up the implementation and speeds\nup access during fast-verify. Encoding remains the same - a set of indices\nof unverified classes - only these are now class def indices.\n\nA second bit vector `redefined_classes_` is added, also indexed by class\ndef indices. It records classes that were not verified because they were\neclipsed by classes that took precedence during resolution. This allows\nVerifierDeps::VerifyInternalClasses to succeed when a class redefined\nnow was also redefined when the deps were being created because the\nclass was treated as external and dependencies on it were recorded.\n\nTest: m test-art-gtest-verifier_deps_test\nChange-Id: I7bcbe947c3c74535306e6dbb5b288076f320a7bc\n"
    },
    {
      "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": "1e70b89afe0e022ec51210ea0da1e0706e194fd0",
      "tree": "1c2b9d0c52e008795ec122b4b904c85c103b3e31",
      "parents": [
        "61a9328e807426636d3e29699cd978d4a7a345c0",
        "6c70224ebd667b52a862f850893f6528af63f3e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "message": "Merge changes Id4ffa9f9,I1bb5d05d\n\n* changes:\n  Replace MergeSets() with std::set::merge().\n  Replace StringPiece with std::string_view.\n"
    },
    {
      "commit": "6c70224ebd667b52a862f850893f6528af63f3e8",
      "tree": "43e1ed17ee7fdfd7081cb07e11700b77c38a5a52",
      "parents": [
        "8581e2a234b562880c1d6c6b5ad14d23f7b597ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 16:17:33 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 08 17:19:20 2019 +0000"
      },
      "message": "Replace MergeSets() with std::set::merge().\n\nAnd clear up ownership of the VerifierDeps being merged\nby using std::unique_ptr\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 123750182\nChange-Id: Id4ffa9f9fa1968fa762b9e825f25827240f6d45d\n"
    },
    {
      "commit": "8e1ca6103de597cec698b2337d19a94d17ae8338",
      "tree": "c485c00a7a74406670b36b937a150f72468a0565",
      "parents": [
        "3a8761f8451276300350bcfa50910105e88505df",
        "8fd6722f5840385462a31bd701426b3749ac1031"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "message": "Merge \"Generalize vdex class redefinition check\""
    },
    {
      "commit": "8fd6722f5840385462a31bd701426b3749ac1031",
      "tree": "7e5f202ed5596815c3638173273ab7d490c25636",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 05 18:13:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 06 17:34:57 2019 +0000"
      },
      "message": "Generalize vdex class redefinition check\n\nThe check introduced in CL If0c56b1970d8ebe701d198ffccec52f586aea9e6\nskips fast verification if an apk\u0027s class is overshadowed by a class in\nboot classpath because the vdex dependencies do not contain intra-apk\ndependencies.\n\nHowever, the change only checks for presence of a duplicate class in the\nboot classloader, while a duplicate class could be in any of the parent\nclassloaders. Fix this and move the check into VerifierDeps to make it\na proper part of the verification process.\n\nThe CL also refactors VerifierDeps::ValidateDependencies to output\nan error string for better logging.\n\nBug: 122968669\nTest: test/testrunner/testrunner.py -t 719\nTest: m test-art-gtest-verifier_deps_test\nChange-Id: I0d06b82e31088c58d4493723a5435309740f1d0c\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": "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": "8f1c8e56a683ff9d77ec1d1ac7f3d81458047714",
      "tree": "10c19d1403361bf499a576000135aaf2a692dd05",
      "parents": [
        "181b831d1a215504a80b5c7508fc2c6e1acac40c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:16 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 17 17:13:51 2019 +0000"
      },
      "message": "ART: Some more iwyu\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ie67b57c7173986009fdc7b4aa01563846d30f25f\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": "90793b3f3fa3fee04b196555f1656d432993f799",
      "tree": "2371a2ad64d962215d7b99a507fe5ff67624c290",
      "parents": [
        "9f55716cadd84ad509a4fd3bb0a0202038cf11bd",
        "3db70689e3e1c92344d436a8ea4265046bdef449"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 28 18:58:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 28 18:58:01 2018 +0000"
      },
      "message": "Merge \"ART: Refactor for bugprone-argument-comment\""
    },
    {
      "commit": "41dba673345271e53803efb477b86fad5939854c",
      "tree": "afebb61a4466b2003c27cd4f08953b096a6c44d3",
      "parents": [
        "1650dafad62578a1766bd617d78458a4cf1e2a9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 21 15:06:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 27 13:09:23 2018 -0800"
      },
      "message": "Add dumping for number of classes initialized\n\nFor --dump-stats, dump how many classes are each status after\nattempting initialization.\n\nTest: \u003ccompile_apk\u003e --instruction-set\u003darm64 --app-image-file\u003dgenerated.art --dump-stats\n\nSample output:\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 100% of instance fields resolved for 1575 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 1.88679% of check-casts removed based on type information for 53 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status NotReady for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Retired for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status ErrorResolved for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status ErrorUnresolved for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Idx for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Loaded for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Resolving for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Resolved for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Verifying for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0.0186596% of classes with status RetryVerificationAtRuntime for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status VerifyingAtRuntime for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 28.1916% of classes with status Verified for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status SuperclassValidated for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 0% of classes with status Initializing for 32155 cases\ndex2oat I 12-21 19:18:56 58439 58439 compiler_driver.cc:109] 71.7898% of classes with status Initialized for 32155 cases\n\nBug: 70735003\nTest: test-art-host\n\nChange-Id: I57e8a977ee202c0ce85030208caa183344a5567a\n"
    },
    {
      "commit": "3db70689e3e1c92344d436a8ea4265046bdef449",
      "tree": "3db08743e968062ed5bdc143233cdb3c4564696b",
      "parents": [
        "1650dafad62578a1766bd617d78458a4cf1e2a9a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 26 15:12:03 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 27 12:56:39 2018 -0800"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles compiler.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I5cdfe73c31ac39144838a2736146b71de037425e\n"
    },
    {
      "commit": "29a533e30277e159327c24e27ed609d26479b2cd",
      "tree": "b75a50e43945db1da197fc5c2d95caaaeb71af0a",
      "parents": [
        "dadba138d745b1fb77da581f2d51fee20ccbac37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 23 12:42:00 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 19 16:09:50 2018 +0000"
      },
      "message": "Remove unresolved classes from image classes.\n\nThis allows compiling partial boot image, without conscrypt,\nwhile using the current image classes in preloaded-classes.\nExcluding the conscrypt makes the class\n  android.security.net.config.TrustedCertificateStoreAdapter\nunresolved because it extends the class\n  com.android.org.conscrypt.TrustedCertificateStore .\nWithout pruning, we hit a DCHECK() in ImageWriter, checking\nthat image classes are not erroneous. And we clearly do not\nwant to put erroneous classes in the partial boot image.\n\nTest: Build partial boot image without conscrypt.\nBug: 119868597\nChange-Id: I6017462366a4b9e69abe1fb3d22461cab35f84c5\n"
    },
    {
      "commit": "5b20b358edb0c586ae2106a82be365717da82507",
      "tree": "3cda8d9774087f3f6b80681f18d03c271d113fbf",
      "parents": [
        "62f6e9055363df6b6372d86960e8d987d6c439a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 19:03:20 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Rewrite EnsureInitialized hit case\n\nWhen an initialized class is found during EnsureInitialized, do\nnot check whether verification was attempted and fix up bits.\nInstead, ensure that all class-loading paths have that done\nwhen eventually getting here.\n\nSpecial runtime-constructed classes (primitives, arrays, proxies)\nneed code to do this work. \"Normal\" classes have the work done\nduring VerifyClass.\n\nLeave a DCHECK in as a state check. Protect state transfers with\nadditional checks.\n\nThis reduces the overhead of the interpreter which cannot elide\ninitialization checks for static accesses.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: Iacd6652583364509c37eafe81fed1198abb1b71a\n"
    },
    {
      "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": "aa6f48362b3258a5df5e527987ffe7e068eb4a79",
      "tree": "0fa8cfbebb77d2e7796084721c836b44114bdc97",
      "parents": [
        "8bda21f1d8bbc1060bf693f5d1666d3396d1cb69"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Nov 21 18:57:54 2018 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Dec 03 18:43:48 2018 +0000"
      },
      "message": "ART: ARM64: Pass ISA features to VIXL macroassembler.\n\nVIXL macroassembler should be initialized properly\nto support Armv8.X features in order to emit corresponding\ninstructions.\n\nTest: codegen_test.cc, relative_patcher_arm64_test.\nTest: test-art-host, test-art-target.\nChange-Id: I2f9e155c28b4d2252a3cfb19717f5d25824d5e11\n"
    },
    {
      "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": "f759dc027507d0092a49d9ec146dc37ca4534dd4",
      "tree": "b500f8a4724876b45b9ea49676defd1152c5ac84",
      "parents": [
        "5a78e8dbf068c544b84e98f636b30045b09451c4",
        "5c803116e26ef40ad2a9c14d3411e21d149e0c9b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 22:25:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 21 22:25:21 2018 +0000"
      },
      "message": "Merge \"ART: Add profile-compile-check support\""
    },
    {
      "commit": "33f7c8aa87831945c567f57c8b860f216c4371ae",
      "tree": "9022cb2fe8bf889c0a32f4478b249145318a7a65",
      "parents": [
        "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 10:22:01 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 10:45:13 2018 +0000"
      },
      "message": "Remove CompiledMethod dependency on CompilerDriver.\n\nTest: m test-art-host-gtest\nChange-Id: Ibee78d5c54d3ff8162258963fde25065b579a000\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": "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": "a297b55dd8be424c7cdd4328356431d62e833d8f",
      "tree": "4e1ff9218394e44fc8c99d13d4d6fe92851c6b5f",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 07 11:41:01 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 08 08:59:24 2018 -0800"
      },
      "message": "Delete IsClassToCompile\n\nCompiled classes filtering is no longer a thing.\n\nBug: 26687569\nBug: 76145463\nTest: test-art-host\n\nChange-Id: Iaf4b9dcea5d9fe1eae564fbd6d373af2fdc87b14\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": "4776987fe6e82a46398e7f211fa55990bb6d574a",
      "tree": "6af6377309458cc2a227beb8772ca318be5a0914",
      "parents": [
        "4c1784b53bb9bcb86076afce8c842d98feb0de97"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 07 13:36:36 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 07 13:59:24 2018 -0800"
      },
      "message": "ART: Small compiler-driver cleanup\n\nRemove some unused or unimplemented methods and typedefs. Move\nsome code.\n\nBug: 115837065\nTest: mmma art\nChange-Id: I96070444007d4f67b14bb563c1b7252a5a012523\n"
    },
    {
      "commit": "cd5d1079692f42eed932950241f3508f93337753",
      "tree": "4f0a42cc404a17ebff74f593618fc82d0cf8425f",
      "parents": [
        "de773af6916cebb44cb45361d2e78bf4307d82da",
        "36433608e6ec075a60ef1b1753bb6669821eabca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 02 18:25:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 02 18:25:00 2018 +0000"
      },
      "message": "Merge \"Change ResolveStartupConstStrings default to false\""
    },
    {
      "commit": "36433608e6ec075a60ef1b1753bb6669821eabca",
      "tree": "2da1d501a0608c65921c48543a9abaf27426eae3",
      "parents": [
        "81ac31ded4df5d597aa603c53122fa1d74413b78"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 02 07:54:32 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 02 07:57:39 2018 -0700"
      },
      "message": "Change ResolveStartupConstStrings default to false\n\nIf it is true for kIsDebugBuild, it will be enable for all preopt.\n\nBug: 116059983\nTest: test-art-host\n\nChange-Id: I8bc40e5d5821501cdd4190554052d1804796197b\n"
    },
    {
      "commit": "c1c3452e465e473df499196b387330a793b89680",
      "tree": "1b144182126bfc73c5d82d1941e1673826d39343",
      "parents": [
        "3b5062083d3e203d1c72b066150b4fe441588a25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 31 13:56:49 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 01 17:01:31 2018 +0000"
      },
      "message": "Do not cache RequiresConstructorBarrier() results.\n\nAvoid caching the results. Caching was broken for JIT in the\npresence of class unloading; entries for unloaded dex files\nwere leaked and potentially used erroneously with a newly\nloaded dex file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target\nBug: 118808764\nChange-Id: Ic1163601170364e060c2e3009752f543c9bb37b7\n"
    },
    {
      "commit": "a2c211ca97cce4d900a6b2047049ffbe46fd5890",
      "tree": "4fc383d217f9de000f11b99d2d5e9c834c5c8c70",
      "parents": [
        "0708fc0c096fb4126c2029d0172830cf0c8e159b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 01 09:50:52 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 01 12:17:35 2018 +0000"
      },
      "message": "Add compiling class to the DexCompilationUnit.\n\nUse it to simplify HInstructionBuilder and reduce the\nnumber of class resolution calls.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nChange-Id: Ib4f9b4ea61235841e653a03a40755a39c7de7504\n"
    },
    {
      "commit": "69ebc8fcfb2eb13b17209068c05f5f7add882294",
      "tree": "94905d092f5189ea18eabf325a602b94ef590a34",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d",
        "1ca718ec2de53fb5ef2a9211bfcc921311775c90"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 17:22:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 17:22:51 2018 +0000"
      },
      "message": "Merge \"Add PreResolved strings dex cache array\""
    },
    {
      "commit": "1ca718ec2de53fb5ef2a9211bfcc921311775c90",
      "tree": "f5ce8c3f4edd022765c343cc5a9df8ebd292f0ec",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 12:55:34 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 16:03:00 2018 +0000"
      },
      "message": "Add PreResolved strings dex cache array\n\nFor app images, this dex cache may be prepopulated to speed up\napplication startup. This new dex cache array is created when\n--resolve-startup-const-strings\u003dtrue.\n\nTest: test-art-host\nBug: 116059983\nBug: 118385560\n\nChange-Id: I379dc15174281665d7f4ceb106f7fbf51f89b921\n"
    },
    {
      "commit": "c57c680b16eb4857eef16134a811f4c2ff9d95f0",
      "tree": "9527328cb8738878e1b727a48620769224dddb2c",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:28:56 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:39:24 2018 -0700"
      },
      "message": "Modernise code to use std::make_unique\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: Idb24960d9326c0d94ab5d04b18deb0894d23da9f\n"
    },
    {
      "commit": "fa9abc28c7825040812101210ccf9b99ef3d565a",
      "tree": "37fd69b213218fb730f400f2b9179356fedf21d0",
      "parents": [
        "a498458d7882b70682bd3bc25882061329cb938e",
        "98104995d8dfc6fec6ec46f4cd50acd67e435687"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 19 22:59:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 19 22:59:59 2018 +0000"
      },
      "message": "Merge \"ART: Use ObjPtr for GetSuperClass\""
    },
    {
      "commit": "22752770e5e7dd9fb30bb35373b61e76b40ae5c3",
      "tree": "225ace62d4fba030cf2b5f5e0bbaf02e14e1c886",
      "parents": [
        "eca553e1a8a47a23de621d3c998c2f6d5561d033"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 18 14:18:59 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 19 19:59:32 2018 +0000"
      },
      "message": "Resolve const-string of clinit\n\nResolve the const strings of the clinit for classes that are loaded in the profile.\n\nFor Maps, the number of strings is ~4400. This would take ~100k RAM if each string\nis around 20 characters. Note that these strings are mostly already loaded during\nstartup, so there might not be a net RAM usage increase.\n\nTest: test-art-host\nBug: 117621117\n\nChange-Id: I632a91633c1b3757523ef6e655f192305554499b\n"
    },
    {
      "commit": "5c803116e26ef40ad2a9c14d3411e21d149e0c9b",
      "tree": "349db3055779728a6b60eecfbb0b2e800af1d468",
      "parents": [
        "a683248b80d901f3dc8e37ac9764712875f27da9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 13 17:28:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 18:16:56 2018 -0700"
      },
      "message": "ART: Add profile-compile-check support\n\nAdd --check-profiled-methods, which verifies that all methods mentioned\nin a profile for a guided compilation are actually compiled instead of\nbeing punted. As outcome it may log or abort dex2oat.\n\nTODO: Extend dex2oat_test\n\nBug: 76145463\nTest: mmma art\nTest: m test-art-host\nChange-Id: I956113b55796d0666db9dbfd387105a7d27b0868\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": "98104995d8dfc6fec6ec46f4cd50acd67e435687",
      "tree": "390e8a3f8361a894fba2d6136d906aa1c62c29f3",
      "parents": [
        "17c5e022f48a36fd160906b9c99ae14a2f014f17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "message": "ART: Use ObjPtr for GetSuperClass\n\nBug: 37224696\nTest: mmma art\nTest: m test-art-host\nChange-Id: If55db6e26bb1bb05a13c59b849bed17839fca6cf\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": "acc56ac6a33a23abbf4a9a62528e352ea28c5407",
      "tree": "e1dd4569fd5b49879ec8dfd1b5ef5204a1084407",
      "parents": [
        "4ca6cc7ddcbd568b365c428371ea9675799775af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 09 08:45:24 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 11:10:08 2018 +0100"
      },
      "message": "Introduce a \u0027baseline\u0027 variant for the compiler.\n\nImplemented as a stripped down version of the optimizing compiler,\nnot running any optimization.\n\nAdjust code to still work with expectations in code generators.\n\nbug: 111397239\n\nTest: test.py --baseline\nChange-Id: I4328283825f9a890616e7496ed4c1e77d6bcc5dd\n"
    },
    {
      "commit": "3adb7f218f1f6f15e2ced105073daa6e14aef2a9",
      "tree": "33331b2200c1f88c269e85453522cf90e07e660d",
      "parents": [
        "e0e49b9eb70f8a85891df5b4da73fcc71cb3d62f",
        "0c61be4f9f7b4baaa6ea7c12ba1c8492a7bc14f5"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Fri Oct 05 07:07:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 07:07:42 2018 +0000"
      },
      "message": "Merge \"Implemented a new method for walking string references in AppImages.\""
    },
    {
      "commit": "0c61be4f9f7b4baaa6ea7c12ba1c8492a7bc14f5",
      "tree": "2732f14759bfcd06bd8bf872c27a8c42b38e79ef",
      "parents": [
        "2386636e0330051a96fe7d577524e929d81e9ba8"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed Sep 26 17:27:34 2018 -0700"
      },
      "committer": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Thu Oct 04 12:47:40 2018 -0700"
      },
      "message": "Implemented a new method for walking string references in AppImages.\n\n* Defined a new section in the AppImage binary format.\n* Verify heap invariants having to do with native string references.\n* Collect managed and native references to managed strings.\n* Record the location of these references as offsets into the image.\n* Writes offsets into new image section.\n* Walk this list of offsets at load time to intern strings from the\nAppImage.\n* Verify that strings have been interned correctly.\n\nTest: art/test/testrunner/testrunner.py -b --host\nTest: m test-art-host-gtest\nTest: Built and ran Keep, Docs, Chrome, YouTube, and Facebook.\nBug: 70734839\n\nChange-Id: Ib5235abdebca018e8920d12318c31b9c0efb0ede\n"
    },
    {
      "commit": "0573f857041b7032837ee1686b1be7191e6353d2",
      "tree": "13ff3211c83059e844cc2ad56576e9521ab30cdf",
      "parents": [
        "29391756f70489a5ab659988f058e359527a7af1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 01 13:52:12 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 01 15:55:37 2018 -0700"
      },
      "message": "Dump Dex file checksums for profman --dump-only\n\nMake it easier to diagnose mismatched dex checksums. Add checksum\nverification in ProfileCompilationInfo::DumpInfo. Some refactoring\nto remove unnecessary code.\n\nBug: 116509324\nTest: test-art-host-gtest\n\nChange-Id: I11fb8d1aa987c0f0a975ef6dcb811bf41d58fad6\n"
    },
    {
      "commit": "3e7f66b137139fa29a38d3de9e3c532a37269caa",
      "tree": "a153fdc864e59c19829e3245c27a7ae4a57b50e5",
      "parents": [
        "9c568f10f68cdbeb285e41cb4538c06f5e90c1b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 10:08:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 10:10:55 2018 -0700"
      },
      "message": "ART: Fix tidy warning in compiler-driver\n\nFix bugprone-lambda-function-name.\n\nBug: 32619234\nTest: mmma art\nChange-Id: If361a9031782be67b041219f10a53fc4de0a8d7d\n"
    },
    {
      "commit": "125a3a4604f7d543334ee6b3d6fd15d0a6e5897a",
      "tree": "d4c572017ae0bc1c311b865cce6d8d9592f141dd",
      "parents": [
        "025059b5bc5974717e94d95cf2d82ff1ad51e75d",
        "2337d53846d9d2e7f82f8cf64ff25585ad010339"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "message": "Merge changes I207718d6,I700ef52e\n\n* changes:\n  ART: Restrict some checks in the verifier to P+\n  ART: Add API level to verifier\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\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": "6cc23acba91d26d7afd6bc681004ac5865a8a163",
      "tree": "d5b6850d7ce511658a33ca417764eac92cafe2d1",
      "parents": [
        "e9dce6a280057315a8a58ed46190c9a893c90fba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "message": "ART: Add API level to verifier\n\nPass API level to verifier. In preparation for API-level dependent\nchecks.\n\nBug: 111969862\nTest: m test-art-host\nChange-Id: I700ef52e28436a7fda8b9d9ef29841110ed6d3bb\n"
    },
    {
      "commit": "ced04835d8e3cd3f68576cfffc1d21283ca151b4",
      "tree": "125ddd1d222f4fb1710e17c76803ad3e92572a5c",
      "parents": [
        "350b6a312222b9b27bfee0e72ce261a45cb60e1c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 26 14:42:17 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 15:47:02 2018 +0100"
      },
      "message": "Reuse arena memory for each block in scheduler.\n\nThis reduces the peak memory used for large methods with\nmultiple blocks to schedule.\n\nCompiling the aosp_taimen-userdebug boot image, the most\nmemory hungry method BatteryStats.dumpLocked has the\nScheduler memory allocations in ArenaStack hidden by the\nregister allocator:\n  - before:\n    MEM: used: 8300224, allocated: 9175040, lost: 197360\n    Scheduler       8300224\n  - after:\n    MEM: used: 5914296, allocated: 7864320, lost: 78200\n    SsaLiveness     5532840\n    RegAllocator     144968\n    RegAllocVldt     236488\nThe total arena memory used, including the ArenaAllocator\nnot listed above, goes from 44333648 to 41950324 (-5.4%).\n(Measured with kArenaAllocatorCountAllocations\u003dtrue,\nkArenaAllocatorPreciseTracking\u003dfalse.)\n\nAlso remove one unnecessary -Wframe-larger-than\u003d workaround\nand add one workaround for large frame with the above arena\nalloc tracking flags.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 34053922\nChange-Id: I7fd8d90dcc13b184b1e5bd0bcac072388710a129\n"
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "8808756b8fba036a9c73a45c800a56be09872364",
      "tree": "9b28f314ff516d1d9b85d07f71bdc77fad465e48",
      "parents": [
        "dda4e8b5f2ffed24a2dcdb99d2301d9fc0eb91e2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:56 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 27 15:03:06 2018 +0100"
      },
      "message": "Remove frame info from OatQuickMethodHeader.\n\nThe information has been moved to CodeInfo,\nwhere it is stored in much more compact way.\n\nThe old CL which added the data to CodeInfo cost 0.7%.\nThis CL saves 2.5% of .oat file size so a win overall.\n\nTest: test-art-host-gtest\nChange-Id: I07fcf6f2776c96218f995ba3b57a1e6ccbf5e317\n"
    },
    {
      "commit": "8e524ad3c690c183b1a71f6114796974a107c5dd",
      "tree": "6ee124814e8f33fd4706eb15fcad2cae0019546b",
      "parents": [
        "5991b184a40e4ce181d67d683ced46caa6143b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 13 10:27:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 16 10:12:51 2018 +0100"
      },
      "message": "Always produce PIC code for AOT compilation.\n\nChange sharpening to use PIC load kinds for AOT compilation\nand add \"Jit\" to the direct addressing load kind names. Use\nPIC code also for the Integer.valueOf() intrinsic codegen.\nRemove all support for non-PIC linker patches.\n\nThe dex2oat --compile-pic option is retained for now but\nignored by the compiler.\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: I54d666f6522f160a1b6ece4045a15d19363acbb6\n"
    },
    {
      "commit": "51b8aafd3beb8855a258383a9eb876a783375629",
      "tree": "002f77eb0308dbb11b6e5e5a88ce4bc19c6ff836",
      "parents": [
        "e824cfdcfd41d400237a806ff93caca7f2e51878"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 09 15:17:05 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 12 09:23:17 2018 +0100"
      },
      "message": "Fix HClinitCheck elimination in instruction builder.\n\nTo handle escaping instances of erroneous classes correctly,\nwe can omit the HClinitCheck only when using a class in the\nstatic method of the very same class. Even for superclasses\nwe need to do the check. The new test exposes the cases\nwhere we were previously diverging from the RI.\n\nAlso clean up the CompilerDriver by inlining one function\ndirectly to the HInstructionBuild::IsInitialized(.) and\nremoving some related functions that are no longer used.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16891788\n    arm64/boot*.oat: 19815520\n    oat/arm64/services.odex: 20071624\n  - after:\n    arm/boot*.oat: 16949532 (+56.4KiB, +0.34%)\n    arm64/boot*.oat: 19889752 (+72.5KiB, +0.37%)\n    oat/arm64/services.odex: 20224328 (+149.1KiB, +0.76%)\nwith minor changes to other app prebuilts.\n\nNote: Some of that could be reclaimed by reinstating the old\noptimization for classes where no bytecode can be executed\nduring initialization (no \u003cclinit\u003e to execute in that class\nor superclasses).\n\nTest: 174-escaping-instance-of-bad-class\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --jvm -t 174\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 62478025\nChange-Id: I41f026ea7fecc615c06e87f3b6cb847de0ede8a6\n"
    },
    {
      "commit": "bb089b6bf850c87e0e42917a383cc7298dcb09c5",
      "tree": "9076775ab1a00bf7321a6b4a457ddd81f20c10c1",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 28 17:30:16 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 28 17:55:01 2018 +0100"
      },
      "message": "Remove CompilerDriver::support_boot_image_fixup_.\n\nCheck for non-PIC boot image as a testing config instead.\nHonor the config for HInvokeStaticOrDirect sharpening.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3645f4fefe322f1fd64ea88a2b41a35ceccea688\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": "18e2687c4126d66870d61d6548abc2c7661a66cc",
      "tree": "06eff605df9259dde8170c8efb48b11df4108eb3",
      "parents": [
        "2607d6c47114a18ccf4a532b20e1099d1dd8fcca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 17:19:02 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 07 22:13:48 2018 -0700"
      },
      "message": "Refactor ClassAccessor to use an index instead of ClassDef pointer\n\nRemoves a separate class_def_idx being required for getting the index\nof a ClassAccessor foreach loop.\n\nBug: 79758018\nTest: test-art-host-gtest\n\nChange-Id: Ie3010a17669f24cf492c678b55bdddba7ec62ea8\n"
    },
    {
      "commit": "a8bba7d0853b372aea3ed3ea154fb2b2a23c2c9d",
      "tree": "973a89870e0cc8912401503ebab1b709a9df5ba0",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 15:18:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 09:48:59 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassLinker::FindClass(), fix 1 stale reference use.\n\nThread::CreateAnnotatedStackTrace() was using a stale\nreference `aste_array_class`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I191907c0053456bb57de425aa6ccd9668df818a2\n"
    },
    {
      "commit": "0d896bd7da4f7b11559aa88aad82e9a9e170a4e4",
      "tree": "44a9278d98ace169e8296feba98038c173f29eaf",
      "parents": [
        "267c83529850f51cd690b3e31882aaae98601afd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 00:20:27 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 10:20:59 2018 -0700"
      },
      "message": "Add Method/Field iterator to ClassAccessor\n\nEnables ranged based for loops on fields and methods.\n\nFor visiting both fields and methods, VisitFieldsAndMethods will\nbe faster because of not needing to decode the fields twice for\nseeking purposes.\n\nAdded test.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host-gtest\n\nChange-Id: I593e23ccd138b87a27d8bab6927ff2b685c057f3\n"
    },
    {
      "commit": "2eabc61c9592f18eb02211dd3e76e6d7e6793747",
      "tree": "7dbd72abe2ea0334f9b245b2bc633744ed508916",
      "parents": [
        "ad70b322fe9b2d3601dcdcfab915b651716ee448"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 14:31:16 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 14:41:27 2018 -0700"
      },
      "message": "Fix class_def_idx increment for FastVerify\n\nFixes vdex golem benchmarks.\n\nAlso fixed logic that was overwriting the expected ClassStatus for\ndebug builds. This is why the tests were passing but the CHECK was\nfailing for non debug dex2oat.\n\nAdded regression test in dex2oat_test.\n\nBug: 80309967\nTest: test-art-host\nChange-Id: I91c48ffbe894ab471572418142fcb4ae85bf0864\n"
    },
    {
      "commit": "c8c8d5f484b9e4660de288aa51ce3f831317ee53",
      "tree": "fa329a0787a0e302ff40c7deefa97d5b79b28550",
      "parents": [
        "d804b76c0b8f9d2c94f3a8648aba26254742a1e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 11:56:14 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 10:48:53 2018 -0700"
      },
      "message": "Move compiler/ to ClassAccessor\n\nRemove usages of ClassDataItemIterator to reduces boiler plate code.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host\n\nChange-Id: Id41db3299bba3ea8debcbb0b9c721fa675adc064\n"
    },
    {
      "commit": "04f0eaffa70e0384c07bb3680aa0724144358330",
      "tree": "e2c67558dd6202b4ff8b866c157fbc33b6a13434",
      "parents": [
        "438918b2f37e11684fa1e80bbbfe3a8f657b79a9",
        "bb30d5d917a47d352c209473b3faf332736fa6ae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 18:18:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 18:18:39 2018 +0000"
      },
      "message": "Merge \"ART: Skip duplicate classes during compilation\""
    },
    {
      "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": "0ecbdb32eb0f829614c25a54a165f43c3ad676f8",
      "tree": "b0d2b2f52be1296be2536d9838efc29b32a80a04",
      "parents": [
        "8404e930d2f74430e156c1f11c7ed2908b29ec2b",
        "1979c64214bd505c013d573bc8729ee94f7bdea5"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 15:49:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 27 15:49:58 2018 +0000"
      },
      "message": "Merge \"Clean up include paths\""
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\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": "bb30d5d917a47d352c209473b3faf332736fa6ae",
      "tree": "b22e5a8c8c6d6e6aa8581da9eef39b7d8a064153",
      "parents": [
        "b8f199705ebd673563fac5cd416a44794d07f692"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 23 09:59:25 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 24 14:54:32 2018 -0700"
      },
      "message": "ART: Skip duplicate classes during compilation\n\nIf a class doesn\u0027t resolve to the current dex file, processing can be\nskipped. It must have been handled before.\n\nFor a large test app, compiling with -j1, compile phase only:\n\n          Before    After\nQuicken   14.270   13.541\nSpeed    156.621  153.591\n\nBug: 78201536\nTest: m test-art-host\nChange-Id: Ia5df3f7f6da2be114a5e9051c18d5716a5f48515\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": "db20a4b08389e73d4f74308644100e5e202fe2bc",
      "tree": "6e30013c1c565ffca13b5055b4de1167a177d9a4",
      "parents": [
        "49720a09e33bce331f7231671c0795864bbac0b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 11 15:44:19 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 12 03:00:16 2018 +0000"
      },
      "message": "ART: Fix core image detection\n\nAccept any .art name starting with \"core-.\" Correctly detects\nimages with multiple dashes.\n\nBug: 64382372\nTest: mmma art\nTest: art/test/testrunner/testrunner.py -b --host\nTest: Device boots\nChange-Id: I6c8006411b0ec16225b137dd349d53d9bc0ac03d\n"
    }
  ],
  "next": "ca1e038eb94694f0f1f94ed3781572411c85d365"
}
