)]}'
{
  "log": [
    {
      "commit": "cf0c6ef642517fba3bc9a211acaed742ff39b86d",
      "tree": "045be891d40e7671edf55444d84bb371d1347c04",
      "parents": [
        "7c2f69e42e5347820ada07c88de5a79f355c61be"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 05 16:25:36 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 07 00:34:58 2020 +0000"
      },
      "message": "Device gtests: Use boot.art instead of core.art.\n\nThey are essentially the same. We can use boot.art to run gtests\nsince it is already part of the apex, including the jar files.\n\nThis will make it easier to run the tests in atest, since we\nwill not have to worry about copying core.art to the device.\n\nThe long-term goal is to avoid generating core.art altogether.\n\nCouple of tests also require \"alternate\" image which has no\ncompiled code. The tests now generate it on-demand in code.\n\nThe host gtests still use core.art for now (as there is no\nboot.art on host). The plan is to add it in future CLs.\n\nTest: m test-art-host-gtest\nTest: ./art/tools/run-gtests.sh\nBug: 147817606\nChange-Id: I3a750bb8e60eea0b4a7df1491285feffd5a0161c\n"
    },
    {
      "commit": "7c2f69e42e5347820ada07c88de5a79f355c61be",
      "tree": "0d9e2ab31ca9fcb716d6c3283bd6a83f32dc39d5",
      "parents": [
        "7eca3779b7e3652565265b424a85ae329887c32d"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jan 15 15:43:32 2020 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Feb 06 22:56:04 2020 +0000"
      },
      "message": "apex_available becomes more correct\n\nPreviously, Soong didn\u0027t follow the static dependencies when checking\napex_available. As a result, a module that is not available to an APEX\n(or to the platform) was able to be statically linked from the APEX (or\nthe platform).\n\nAs the Soong bug is fixed, unchecked dependencies have revealed and this\nchange reflects the finding.\n\nExempt-From-Owner-Approval: cherry-pick from internal\n\nBug: 147671264\nTest: m\nMerged-In: I6d9dbe31a8d46d26a4925462edd1984281bd203a\n(cherry picked from commit a24189de28d3dc078ffe3e694816859bce9ce730)\nChange-Id: I6d9dbe31a8d46d26a4925462edd1984281bd203a\n"
    },
    {
      "commit": "f6afcc9bd7f9b82df5e93d96d89c4c8da898e6f0",
      "tree": "e1f1e826dd510fb05c175f456e0b17671517bed2",
      "parents": [
        "8adb3258b902306d7ba2933e20f7435aa384d85e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 05 10:10:03 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 06 10:32:22 2020 +0000"
      },
      "message": "Update boot image extension compilation args.\n\nAnd in dex2oat check for boot image location with profile\nspecification. For app compilation, trim such boot image\nlocation to the leading components without profile spec.\nFor boot image extension, such location is currently an\nerror because it expects all dependencies to be satisfied\nfrom boot images; this may be relaxed in future.\n\nTest: aosp_taimen-userdebug boots.\nTest: 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 start  # Starts correctly.\n      # Check /proc/\u003czygote64-pid\u003e/maps, see\n      #   \u003clarge\u003e rw-p ... [anon:dalvik-/nonx/boot-framework.art]\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.vdex (deleted)\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      #   \u003csmall\u003e rw-p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      # (No r.xp as we did not compile anything.)\nBug: 119800099\nChange-Id: Ie338a54d45967c790d08cbd1e53ecbcd2b217081\n"
    },
    {
      "commit": "89b85ebb4a0daf390701f1b395d1cd01239a75a1",
      "tree": "86d2a4dd300945e463040ceab48cffc20c6c57f7",
      "parents": [
        "198cf41c904b1368a3f745ce4bc57dfe2080b14d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 04 15:51:44 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 05 15:41:12 2020 +0000"
      },
      "message": "dex2oat: default to speed-profile if we have a profile.\n\nAnd move the check for /system/etc/boot-image.prof from\nAndroidRuntime.cpp to the deprecated GenerateImage() in\nart/runtime/gc/space/image_space.cc . If it\u0027s not found,\njust report the error and compile with the \"speed\" filter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 119800099\nBug: 148928928\nChange-Id: I536ed7e6d7ebaa562cba3448a37c5d873bc0a682\n"
    },
    {
      "commit": "c0e0e5e6334f7804c41e3a0436536161754dbb1c",
      "tree": "e84506016937e10438916fde9a91708a7d9ed093",
      "parents": [
        "e4207a7bf5b008df97b76b6df7a9930524c4c1cb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 23 17:43:05 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 31 09:28:51 2020 +0000"
      },
      "message": "Compile boot image extensions in memory.\n\nAllow boot image location components for extensions to\nspecify a profile. If such extension is not found on disk,\nor the on-disk version fails validation (presumably because\nit\u0027s out of date), compile the extension in memory, passing\nmemfd file descriptors as output arguments to dex2oat.\n\nAlso fix GetPrimaryImageLocation() to check for the \u0027/\u0027 in\nthe first component instead of the full boot image location.\n\nTest: Additional tests in dex2oat_image_test\nTest: m test-art-host-gtest\nBug: 119800099\nChange-Id: I4d3c178defe311bf51153d4beb386eba208d75a5\n"
    },
    {
      "commit": "d2ac307e505f71a2d439c264cb7c5eab9bd07e13",
      "tree": "94baf5a9a19b46a28f211e40f9cfef0d7a6a0462",
      "parents": [
        "aea71ae52a6f846b39f89a3c395663f40b2f4184"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jan 29 11:51:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 29 14:31:58 2020 +0000"
      },
      "message": "Disable Dex2oatSwapUseTest.CheckSwapUsage for x86_64\n\nDex2oatSwapUseTest.CheckSwapUsage disabled for all targets\nwas changed to be disabled only for x86. However the test\nfrequently fails on x86_64 as well.\n\nThis CL disables the test for x86_64.\n\nTest: test.py --host --gtest\nTest: dex2oat_test\nTest: run-gtests.sh\nBug: 29259363\n\nChange-Id: I88a8bf735d2702c914ba952bdcc2431a85dbf761\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": "92231c5fd2060fb1290fee99fa483d9461708a53",
      "tree": "4dac8437f669f5987d151c2f5846fe192d52f8fe",
      "parents": [
        "4d7e1a8251c991828121043982d8b4bf0a9dd027"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sat Jan 25 01:44:30 2020 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Jan 27 13:47:30 2020 +0000"
      },
      "message": "Revert \"Make dex2oat(d) visible for use as implicit dexpreopt to...\"\n\nRevert \"Separate dexpreopt.GlobalSoongConfig to allow independen...\"\n\nRevert submission 1211982-dex2oat-soong-dep\n\nReason for revert: Build failures. See b/148312086.\n\nReverted Changes:\nIbc427a9a8: Make dex2oat(d) visible for use as implicit dexpre...\nI71df11c1e: Move the Once cache for dexpreopt.GlobalConfig int...\nI38317f2d5: Get the dex2oat host tool path from module depende...\nI440a09dba: Separate dexpreopt.GlobalSoongConfig to allow inde...\n\nBug: 148312086\nBug: 145934348\nExempt-From-Owner-Approval: Plain revert\nChange-Id: Ie3bae8a6007d2b9dd6a5138921247bc8323d8e61\n"
    },
    {
      "commit": "08a1d1ba90c69e4b39f2df90eacee2c5413f8b4e",
      "tree": "48947a8cc7166d7ffe17cb56f0dc1296ae3ea0a4",
      "parents": [
        "f0e90bacbfcd36fed615dd82c689f872437fa5ef"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Jan 09 15:57:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 25 00:38:17 2020 +0000"
      },
      "message": "Make dex2oat(d) visible for use as implicit dexpreopt tool deps.\n\nBug: 145934348\nTest: m\nChange-Id: Ibc427a9a8d9fb64c473f2f4e1ddfde4d3a60bf1f\n"
    },
    {
      "commit": "e0c6d439271c94feb3fb38728d1b4743a7ed0b9e",
      "tree": "c7f9176cacb9e362d0dd3bbeabeca8b42e42d184",
      "parents": [
        "721e40283793649b4750c05da4fe972bd372f7f9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "message": "Revert \"Fix stack-walking race\"\n\nThis reverts commit 721e40283793649b4750c05da4fe972bd372f7f9.\n\nReason for revert: Wanted more discussion.\n\nTest: none\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nChange-Id: Id0fb201018a0d0bdca11d51ec156a41d6d7fe4ae\n"
    },
    {
      "commit": "721e40283793649b4750c05da4fe972bd372f7f9",
      "tree": "9af2c2c583900e9a35c6adf7fef277d0221c0571",
      "parents": [
        "df7e5b836e78ab38101dde45399c8de51df4042e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 14 14:45:40 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 21:56:30 2020 +0000"
      },
      "message": "Fix stack-walking race\n\nDuring stack walking it was possible for a walking thread to race with\nthe InstrumentationInstallStack. In this case the stack changes made\nby InstrumentationInstallStack could cause the other thread to\nincorrectly parse the stack data-structures, leading to\nfailures/crashes.\n\nTo fix this we increment an ID whenever instrumentation changes the\ninstrumentation stack. Other stack-walkers then check this id and\nrestart whenever it changes. Note that although the stack-walk\nrestarts we keep track of how many java frames we\u0027ve visited already\nand refrain from calling VisitFrame until we are at the same position\nagain. This means that as far as the Visitor writers are concerned the\nstack-walk is only done once, just like always.\n\nAdded a test (2011) that forces the race to occur.\n\nAlso Disabled Dex2oatSwapUseTest#CheckSwapUsage. It seems that the\nincrease in Thread* size has caused it to fail. Disable while we\ninvestigate. See b/29259363\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nTest: ./test.py --host\nTest: ./test/run-test --host --dev --runtime-option -verbose:deopt,plugin --prebuild --compact-dex-level fast --jit --no-relocate --create-runner --runtime-option -Xcheck:jni 1965-get-set-local-primitive-no-tables\n      parallel_run.py\nChange-Id: I77349dfc6fa860b7f007dee485e9fea1d8658090\n"
    },
    {
      "commit": "4d7b689fe667a65138eceb311767a3d624fb0e4b",
      "tree": "b59be0fd4130f73142cdc0699b5d0bc0dc63798f",
      "parents": [
        "87712da946a5e10edb460ad1df03d8b26d6a0fdc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 16 17:06:35 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 20 15:26:38 2020 +0000"
      },
      "message": "Fix Transaction constraint validation...\n\n... for boot image extensions. Add WriteConstraint checks\nto APUT instructions and add necessary WriteConstraint and\nWriteValueConstraint checks to UnstartedRuntime.\n\nFor strict transactions (app compilation), prevent writing\nto boot image objects. However, more work is required for\nthis use case as the UnstartedRuntime needs a review for\nmissing ReadConstraint checks and the WriteValueConstraint\nmay need to be more restrictive.\n\nWhile the transaction_test is improved to test Transaction\nconstraints more thoroughly, no regression tests are\nprovided for the previously missing checks. Such tests are\ndifficult to write as they would require compilation of\na custom boot image.\n\nTest: Manual; include java.lang.Locale[] in primary boot\n      image by patching CompilerDriver::LoadImageClasses(),\n          +  if (GetCompilerOptions().IsBootImage()) {\n          +    image_classes-\u003einsert(\"[Ljava/util/Locale;\");\n          +  }\n      , and build. This previously aborted in ImageWriter:\n          Image object without assigned bin slot: \\\n          java.util.concurrent.ConcurrentHashMap$Node\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 147596904\nChange-Id: Ibfe1b24b10dbd982b4e4ae4d98289e587a842812\n"
    },
    {
      "commit": "3cf233bf7ec0ce2ee1b714257dfcbd77dcb5cb0f",
      "tree": "54356fc83e9c2ee22f7e2facf44d4ff9dcdf8a28",
      "parents": [
        "3369591b99778eb0628e6008c2684578d4e62c0c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 16:58:53 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 07 14:03:43 2020 +0000"
      },
      "message": "Remove superfluous(?) DCHECK.\n\nIf we don\u0027t have dex files, we have warnings telling the user:\ndex2oat W 01-07 13:00:57 72639 72639 dex2oat.cc:2497] Skipping non-existent dex file \u0027foo.dex\u0027\n\nTest: test.py\nChange-Id: I1b9185e5cd47f1ccbafc2ddd75d92d31b385845a\n"
    },
    {
      "commit": "066dd902930582873e7d9372ac0c8483ac700cb9",
      "tree": "f3a0b47419fea78001faea017ba04e630e82fd2e",
      "parents": [
        "fb537087516e34e92e3c030ef2f7fc8b233d7a47"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Dec 19 02:11:59 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 20 01:17:37 2019 +0000"
      },
      "message": "Revert submission 1194828-revert-1191937-art_apex_available-DWXQGTKMAR\n\nReason for revert: relanding with fix\nReverted Changes:\nIc4119368c:Revert submission 1191937-art_apex_available\nIa084976bb:Revert submission 1191937-art_apex_available\nIada86226d:Revert submission 1191937-art_apex_available\nIc76735eac:Revert submission 1191937-art_apex_available\nI1eb30e355:Revert submission 1191937-art_apex_available\nIcaf95d260:Revert submission 1191937-art_apex_available\nIe8bace4be:Revert submission 1191937-art_apex_available\nI8961702cf:Revert submission 1191937-art_apex_available\nI39316f9ef:Revert submission 1191937-art_apex_available\nI522a7e83b:Revert submission 1191937-art_apex_available\nI8b9424976:Revert submission 1191937-art_apex_available\nI48b998629:Revert submission 1191937-art_apex_available\n\nChange-Id: I7a101d39ff63c153675e4e741f9de1a15a778d33\n"
    },
    {
      "commit": "80599a28d1c865de7644a87111f49ee3b30f7c41",
      "tree": "e56dcf999630a752cd955a06c7f4c00b7add290b",
      "parents": [
        "1e88f980a85056165312331746862dc48186bc54"
      ],
      "author": {
        "name": "Joseph Murphy",
        "email": "murj@google.com",
        "time": "Thu Dec 19 01:06:54 2019 +0000"
      },
      "committer": {
        "name": "Joseph Murphy",
        "email": "murj@google.com",
        "time": "Thu Dec 19 01:06:54 2019 +0000"
      },
      "message": "Revert submission 1191937-art_apex_available\n\nOriginal Commit Message:\n\"\"\"\nRename modules that are APEX-only\n\nThe renamed modules are only available for APEXes, but not for the\nplatform. Use the \u003cmodule_name\u003e.\u003capex_name\u003e syntax to correctly install\nthe APEX variant of the modules.\n\"\"\"\n\nReason for revert: Build Cop - Breaks about 15 AOSP targets, with high confidence due to these changes being the only non-robot changes in those builds.\n\nReverted Changes:\nI190ce2d10:Use apex_available property\nI990e0a67e:Use apex_available property\nI0d1295683:Revert \"Avoid duplicated classes for boot dex jars...\nI5fb725403:Find the jar libraries in APEX from the correct pa...\nI322b1efcc:Rename modules that are APEX-only\nIfa2bd0f8f:Use apex_available property\nIac6533177:Use apex_available property\nIe999602c6:Use apex_available property\nI2a3d73397:Use apex_available property\nIc91bcbb9a:Use apex_available property\nIa6c324eed:Use apex_available property\nI964d0125c:Use apex_available property\n\nChange-Id: I1eb30e355cfce316b94cde0dd176002af8d222bb\n"
    },
    {
      "commit": "1e88f980a85056165312331746862dc48186bc54",
      "tree": "0cbeeaf951d6bd637a46f4f51faf80587f3ecc2b",
      "parents": [
        "c9af14e93f6a2691bf8231752d8d7c3e41b14c76"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Dec 02 13:44:06 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Dec 19 00:21:38 2019 +0000"
      },
      "message": "Use apex_available property\n\nUse apex_available property to prevent modules that are only for the ART\napex from being used outside of the APEX.\n\nThis change also fixes the reference to\n$(TARGET_OUT_SHARED_LIBRARIES)/$(lib).so to $(lib).com.android.art.debug\nphony module since the former is never installed to the system partition\ndue to their \u0027apex_available\u0027 settings.\n\nBug: 128708192\nBug: 133140750\nTest: m\nChange-Id: I990e0a67e066d9b1dc221748422a2f44449258da\n"
    },
    {
      "commit": "3ea6627a74d517a2bd1968111c2d64c2a8227aa2",
      "tree": "7e0e9ce90def426c3a2a537731a6de6decd1f04a",
      "parents": [
        "589bf901810eb0259107ae3aa71c7d0d89ad9626"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 12 14:28:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 12 14:49:47 2019 +0000"
      },
      "message": "Merge the single-image test to TestExtension.\n\nThis avoids a potential failure where the required address\nrange could be allocated by gtest harness between tests.\n\nThis also reduces the number of \"head\" compilations by one,\nreducing the time taken by ~6s on host; device not measured.\n\nTest: m test-art-host-gtest-dex2oat_image_test\nBug: 146108614\nChange-Id: I54774a877314964d4281412092d46d48e8da236b\n"
    },
    {
      "commit": "d0036ac18efcd7774775d521ae11178933041b95",
      "tree": "175db5c419006e3c146d92ef278100233dd2a827",
      "parents": [
        "69944683c33a316c9ed325ed686d9f81ad3665dc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 11:47:12 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 11 10:03:05 2019 +0000"
      },
      "message": "Single-image boot image extensions.\n\nAllow boot image extensions to be compiled into a single\nart/oat/vdex triplet for any number of input dex files.\nSupport argument --image-fd so that this can be done with\nfile descriptors. This is intended for creating a boot\nimage extension in memory when starting zygote.\n\nRemove the possibility to specify multiple oat or image\nfiles. It was unused and untested.\n\nTest: New test in dex2oat_image_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I78e5410642a5df14c0891d87f27eefcb02156764\n"
    },
    {
      "commit": "b7bf843b04046f2758998c019e947611d0208217",
      "tree": "0a6033402ebde2859267c865dc4e14cde9170835",
      "parents": [
        "726e2dd6db60968b36c1d03feab236edc8fa806b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 03 13:18:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 06 10:57:08 2019 +0000"
      },
      "message": "Use provided dex filenames in oat file.\n\nRemove OatFile::RemoveRelativeEncodedDexFileLocation() and\nuse the provided `dex_filenames\u0027 (see below) if not empty,\nwithout checking for prefix match or host/target build type.\n\nAlso add extra primary/multi-dex location checking when\nopening an oat file. Since some tests were already creating\noat files from multiple dex files, rewrite the interface to\nbetter support that option, replacing the old argument\n`abs_dex_location` with `dex_filenames` that can provide\npaths to multiple dex files.\n\nTest: m test-art-host\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I36a9abca72872c41e4c10fdacbeadf551ca740dc\n"
    },
    {
      "commit": "a59af8aeaad8fe7d68d8f8de63eab9cf85b6ab31",
      "tree": "83195c74b135731cc4555254763a8f449691c1b0",
      "parents": [
        "5c8cc64b5f1580faf510f27527e7e22987174963"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 17:42:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:32:09 2019 +0000"
      },
      "message": "JIT baseline: trigger optimized compilation on hotness threshold.\n\n- Add a new hotness count in the ProfilingInfo to not conflict with\ninterpreter hotness which may use it for OSR.\n- Add a baseline flag in the OatQuickMethodHeader to identify baseline\ncompiled methods.\n- Add a -Xusetieredjit flag to experiment and test.\n\nBug: 119800099\nTest: test.py with Xusetieredjit to true\n\nChange-Id: I8512853f869f1312e3edc60bf64413dee9143c52\n"
    },
    {
      "commit": "0a19e212e56fc6fe2809b58072ddcf4acfdc568d",
      "tree": "6e5ef4a1bd1d08917ada2a49d5f807cfbc9a4e1a",
      "parents": [
        "42c52f53b3c85b5e3c984bca8eaec2e03893dd2e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 27 14:35:24 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 02 18:56:46 2019 +0000"
      },
      "message": "Add null check in AppendToBootClassPath\n\nAim to diagnose test 1002 that crashed once due to having a null\nelement in ClassLinker::boot_class_path_.\n\nBug: 144895912\nTest: test/testrunner/test.py --host -j32\n\nChange-Id: Ibc072dbc1bd48cfde0ad5d3b56ebdc348d441085\n"
    },
    {
      "commit": "e2a3aa988630b3c2952ac44943f03dde60454195",
      "tree": "acee7012af6e2b161c91e6cd8b7b4d12eb5aa927",
      "parents": [
        "a2c4d61e482a15974e3e220bcd62a64043ee536f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 25 17:52:58 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 14:04:43 2019 +0000"
      },
      "message": "Baseline JIT: update inline caches in compiled code.\n\nIn trying to remove profiling from interpreter, to speed up\ninterpreter performance.\n\nBug: 119800099\nTest: test.py --baseline\nChange-Id: Ica1fa41a889b31262d9f5691b30a31fbcec01b34\n"
    },
    {
      "commit": "7dac864d7eae3d731eeacf55cfc7f71b4df6cee3",
      "tree": "9f27bb1c0b6f076c2dd1b721441200f9f7a78022",
      "parents": [
        "047081a1509762879a9eb51981982af65f419bac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 17:09:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 27 10:02:22 2019 +0000"
      },
      "message": "Clean up JNI dlsym lookup trampoline.\n\nMake sure the GenericJniTrampoline recognizes the trampoline\nin primary boot image oat file. Rename that trampoline, add\na test and flag some issues in the code.\n\nTest: New test 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host -t 178-app-image-native-method\nBug: 112189621\nChange-Id: I8f8cd11998af536fd3842dd4183a25f0367655a6\n"
    },
    {
      "commit": "7ed2d385b513ced901e42181ae9a83e220b47912",
      "tree": "ace75719b974de2e38d1473d607a247f7eb85da9",
      "parents": [
        "aedc9bc5ebdacadc9efe4465173e1b7ca7edc226"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 25 10:41:53 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 25 15:18:48 2019 +0000"
      },
      "message": "Fix boot image extension class exclusion.\n\nThe code in CompilerDriver was too permissive for arrays and\nthe code in Transaction was not even checking interfaces.\nMove the check to AotClassLinker and fix it.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3400b6c0e212e25acf17e3740ba19a8b407e03d3\n"
    },
    {
      "commit": "a8f39186b26f66671c5e960e7f7a3b7ce231eab1",
      "tree": "231b20d3394af6305d89ecdefea34d755d622ee0",
      "parents": [
        "e61f16af3976ca8c0ab82cd3f21e5dff66225520"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 10:08:58 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 13:35:02 2019 +0000"
      },
      "message": "Clean up some image tests.\n\nMake ImageSpaceLoadingTest\u003cfalse,.,.\u003e use a custom image\nlocation based on ScratchFile to avoid accidentally finding\na pre-compiled boot image in default location.\n\nAdd -Xnoimage-dex2oat to Dex2oatImageTest to avoid useless\ndex2oat invocations that just slow down the test. Suppress\nerror messages from image loading that is supposed to fail.\nCompile only 3 dex files in TestModesAndFilters to make the\ntest faster (29s-\u003e20s on host).\n\nTest: m test-art-host-gtest\nChange-Id: Ia92e85f056027003d2fb50aa871c9fae7a5fdc01\n"
    },
    {
      "commit": "c526e42d6091b8f2b3b4ac810299ccba9506e380",
      "tree": "8879fce9f4c4bef5cb837a2553f46ace972e86c0",
      "parents": [
        "a879bdf5e9e1f2e1ff01ce9a66af3682188079bf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 20 10:27:14 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 20 11:22:07 2019 +0000"
      },
      "message": "Use full profile in Dex2OatImageTest#TestExtension.\n\nTest: m test-art-host-gtest-dex2oat_image_test\nBug: 119800099\nChange-Id: I120f71f98b4df7fae88764e5215e06a6e151b7a2\n"
    },
    {
      "commit": "a879bdf5e9e1f2e1ff01ce9a66af3682188079bf",
      "tree": "0621e683ad6710e590a26fd7ae399bb077edc7de",
      "parents": [
        "142816a6ac2a9261d37cffb7a7367a96f712fde2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 19 16:25:47 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 20 09:43:45 2019 +0000"
      },
      "message": "Revert^2 \"Fix CompilerDriver\u0027s handling of boot image extension.\"\n\nThis reverts commit 96d8585ebb9e21fc27a59ddd4173ca62ad93c194.\n\nFixed verification from oat files when compiling a boot\nimage extension. Normal verification can fail if the\nprimary boot image is quickened.\n\nTest: `art/tools/buildbot-build.sh --target` with master-art manifest\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 144751090\nChange-Id: Ibc4e7ab1ec8451c9b5c87b6e87ab9807ac22e284\n"
    },
    {
      "commit": "ffc791c748dd28cc6bc7fff825b3c1b7af96abb3",
      "tree": "384238d8893cd2f2a41b020a91a6ee479bdae663",
      "parents": [
        "2f8c1ac61b0c611d67badea70261c851ed19b82a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 14 19:19:28 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 19 07:34:07 2019 +0000"
      },
      "message": "dex2oat: add --cpu-set command-line option\n\nEnables affinitizing dex2oat threads to a specific group of CPUs.\n\nBug: 141446571\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d0,1 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d,0,1 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d,, 956\nTest: art/test/run-test -Xcompiler-option --cpu-set\u003d0,a 956\nTest: cmdline_parser_test\nChange-Id: I4bb1519beacd329da1a69af31982a6154d315865\n"
    },
    {
      "commit": "96d8585ebb9e21fc27a59ddd4173ca62ad93c194",
      "tree": "1999d12fadd93aef6c85b0491cda0e40e1d2b433",
      "parents": [
        "8ba9738d55c11dfb7f85a7de9b1d6a4e1225ad20"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 18 18:23:21 2019 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 18 23:19:15 2019 +0000"
      },
      "message": "Revert \"Fix CompilerDriver\u0027s handling of boot image extension.\"\n\nThis reverts commit 96491e9db22806d4343ddcbca97083127b728e0a.\n\nReason for revert: Breaks the local ART build with the master-art\nmanifest with these errors:\n\n  [ 99% 1543/1544] target dex2oat: out/target/product/armv8/data/art-test/arm64/core-interpreter.art\n  FAILED: out/target/product/armv8/data/art-test/arm64/core-interpreter.art\n  […]\n  dex2oatd W 11-18 18:14:42 119587 119587 class_linker.cc:4711] Rejecting class com.android.org.conscrypt.AbstractConscryptEngine that attempts to sub-type erroneous class javax.net.ssl.SSLEngine in /system/framework/conscrypt-testdex.jar\n  dex2oatd F 11-18 18:14:42 119587 119587 compiler_driver.cc:2041] Boot classpath class java.lang.Class\u003ccom.android.org.conscrypt.AbstractConscryptEngine\u003e failed to resolve/is erroneous: state\u003d ErrorResolved\n  Runtime aborting...\n\n  FAILED: out/target/product/armv8/data/art-test/arm64/core.art\n  […]\n  dex2oatd W 11-18 18:14:46 119786 119786 class_linker.cc:4711] Rejecting class com.android.org.conscrypt.JSSEProvider that attempts to sub-type erroneous class java.security.Provider in /system/framework/conscrypt-testdex.jar\n  dex2oatd F 11-18 18:14:46 119786 119786 compiler_driver.cc:2041] Boot classpath class java.lang.Class\u003ccom.android.org.conscrypt.JSSEProvider\u003e failed to resolve/is erroneous: state\u003d ErrorResolved\n  Runtime aborting...\n\nTest: `art/tools/buildbot-build.sh --target` with master-art manifest\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nChange-Id: If782420ffe4907e92d2ac90747d66f3d3e1ac127\n"
    },
    {
      "commit": "96491e9db22806d4343ddcbca97083127b728e0a",
      "tree": "c98f671ad008c48af813e94d393d8d645c115e66",
      "parents": [
        "d0e354e54da2f2e79b6fc2ff0e13d53c74976b08"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 15 16:45:25 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 18 13:14:30 2019 +0000"
      },
      "message": "Fix CompilerDriver\u0027s handling of boot image extension.\n\nUpdate a few checks for boot image to also apply to\nboot image extensions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nChange-Id: I7f17686bc22de677d5e2068e6fe5fd2a53e89ce7\n"
    },
    {
      "commit": "889b72d80e192a2e30698f9966a4a7171a1c1df8",
      "tree": "d325bfb4ff44ffaf49650f32a2cfafbaa9f43603",
      "parents": [
        "afaa457b6f56c6d3bff9dce9b314825f4726fdf9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 12 11:01:13 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 15 10:34:24 2019 +0000"
      },
      "message": "Load classes for boot image extension.\n\nPreviously we actually failed to load and initialize classes\nfor boot image extensions. Though some classes may have been\nresolved by other code paths, extension art files did not\ncontain the intended classes. This CL fixes that and some\nother bugs that were exposed by this class initialization.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I63a1970f7ff45dc37b14ebd24c5a68f3edacd6ef\n"
    },
    {
      "commit": "92eec3a90282edf30ca1535d58a4b52294ba7e76",
      "tree": "27b05f588a5286f5b08b33f7a57b20544841f5ef",
      "parents": [
        "4f7c0cc6b272f9998074d0cde36b24bdd7b06bf9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 05 10:59:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 08 14:46:52 2019 +0000"
      },
      "message": "Add boot image checksums to image header.\n\nThis adds an early validity check, so that we do not need to\nload an image extension and oat file before we can discard\nthem as out-of-date based on the checksums from oat header.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interp-ac\nBug: 119800099\nChange-Id: I951e8429f8dde73f3fc41c36dffe5a657a0db62b\n"
    },
    {
      "commit": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\n"
    },
    {
      "commit": "2191069047034ad891ea15f60a217246edc38d53",
      "tree": "5fcdb37aa8d1e052979631adac01fe74794748b3",
      "parents": [
        "add69acb7db965bd8d817a185e962e5474f690d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:27:03 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 14:04:57 2019 +0000"
      },
      "message": "Revert^4 \"Boot image extension.\"\n\nThis reverts commit f5c5eb30fc71e0c305d678bd3c1c995a5c36d508.\n\nRemoved wrong check for no dex files. Dex files can also be\nspecified with zip-location and file descriptors. Added a\nregression test to dex2oat_test.\n\nFixed the image checksums validation to use the appropriate\npart of BCP rather then full BCP. This fixes errorneous\nrejection of oat files compiled against partial BCP.\n\nChanged dex2oat_image_test to use ART_BASE_ADDRESS to try\nand avoid failures when reserving space for loading the\ncompiled images.\n\nTest: Additional tests in dex2oat_{,image_}_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I062cbecd0020f5c24353eb75643ea5905cb6f4fd\n"
    },
    {
      "commit": "f5c5eb30fc71e0c305d678bd3c1c995a5c36d508",
      "tree": "2f08c5562d3b35b7f0139f772b6324a9689d01ea",
      "parents": [
        "acdb9a350fede0776e1f4d6d04dc3246249345e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 12:25:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:25:07 2019 +0000"
      },
      "message": "Revert^3 \"Boot image extension.\"\n\nThis reverts commit 02820f424714e711bbd4cb4b04a109416eb0c8b8.\nAlso reverts commit beb66b38dcce937d7eee9ef2d07b6402c720f8ee\nthat contained a follow-up fix.\n\nReason for revert: b/144001974\n\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I4da5330c3efa9f0c3508e85344c031d3b360ca0a\n"
    },
    {
      "commit": "beb66b38dcce937d7eee9ef2d07b6402c720f8ee",
      "tree": "4bdf0034b5fbd4aa6bb07c73f8c38f9eac03669e",
      "parents": [
        "a48f0bbb2939fa743904f7553a060b12846f100e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 14:59:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 05 09:42:18 2019 +0000"
      },
      "message": "Fix boot image extension relocation.\n\nStore boot image begin and size to the extension header as\nit is needed for relocation; this requires rewriting the\nImageHeader::IsAppImage(). Also mark the class roots as\nvisited to satisfy a DCHECK() for extension relocation.\n\nAnd re-enable loading boot image extensions for tests.\n\nTest: Add relocation tests to dex2oat_image_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: testrunner.py --target --64 --optimizing --relocate\nBug: 119800099\nChange-Id: Ie7e883beaa927ca4dc91f0ae660c8de74f7d4ddb\n"
    },
    {
      "commit": "02820f424714e711bbd4cb4b04a109416eb0c8b8",
      "tree": "ca7554d4dd148a3832b46c19fd9bd706d83ed4a4",
      "parents": [
        "962a110efb2c6a2b0161f919bfd5921e3dee7168"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 10:31:27 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 15:33:02 2019 +0000"
      },
      "message": "Revert^2 \"Boot image extension.\"\n\nThis reverts commit 9f459c4ef60d771fc4eb8da1f709f479ca23a6ab.\n\nFixed the extension test to be more hermetic. Added a clean\nspec to work around broken dependencies; obsolete images may\nhave been a reason for boot time regressions.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nBug: 143492855\nChange-Id: I37e714d53e66f94f791e6d1e9f4d78bf7bcb2116\n"
    },
    {
      "commit": "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab",
      "tree": "5c998b1bd23d0a348ec77a4fcd760e7e9cac00f7",
      "parents": [
        "9e709debacab08be8adbac366e0555ca302a3bed"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:23:06 2019 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:29:26 2019 +0000"
      },
      "message": "Revert \"Boot image extension.\"\n\nThis reverts commit 4f6ebe89af462ff05d97433deb2bca3f3b011fc2.\n\nReason for revert: b/143492855\n\nBug: 119800099\nBug: 143492855\nChange-Id: I27da7e790f61f836701f8f39c98d14b507af8b9e\n"
    },
    {
      "commit": "4f6ebe89af462ff05d97433deb2bca3f3b011fc2",
      "tree": "856ef32276112b78fb51bd95dfd545217b86cb33",
      "parents": [
        "3155aa4e6167c5f346aa5e90da43ee0e9d04d2ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 15:23:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 12:48:46 2019 +0000"
      },
      "message": "Boot image extension.\n\nAllow the boot image to be split into the primary boot image\nand any number of optional boot image extensions.\n\nTest: New extension test in dex2oat_image_test.\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nChange-Id: If5a2fa1c0facccbfaf0a1f0cb015ea9233f1f4c6\n"
    },
    {
      "commit": "f05f04b429a63eb036f501866a863109f05b95b2",
      "tree": "e6abb50536cb04ed60cf134b2e9556366e5a2064",
      "parents": [
        "5859799ce6ad57ee862434603fc29cecfec1d775"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 11:50:41 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 14:52:45 2019 +0000"
      },
      "message": "Make ArtMethod methods const or requiring the mutator lock.\n\nHelps the jitzygote optimization on sharing the boot image methods\npost fork.\n\nThe CL shows that the code base already almost fully handles requiring\nthe mutator lock when mutating ArtMethod data.\n\nBug: 119800099\nTest: builds\nChange-Id: If4a938b66aac85304ec0a27c53bb9fa951191d8c\n"
    },
    {
      "commit": "436c6f5fae95aae332361060778599d0ef24a167",
      "tree": "eb81e98fc92a58a31efb6754f0f73d67720b7e24",
      "parents": [
        "0c63f76d90ed5b5dc4bc420fc51ffc383f8d87d9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 25 14:50:14 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 30 13:59:29 2019 +0000"
      },
      "message": "Oat file checksums for boot image extensions.\n\nModify the oat checksums check for boot image extensions.\nThere may be more extensions loaded at runtime than when the\noat file was compiled, so we need to check the checksum type\nfrom the checksums string to determine whether to use an\nimage checksum or dex file checksum. Different checksums\ncan be valid for the same boot class path.\n\nThe creation of boot image extensions and other aspects\nof loading them shall be implemented in separate CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I43d1f9464678784e902ad72f4a89cf38b4786122\n"
    },
    {
      "commit": "f1ddc20f37fe12e36792770414b66948b601ff1f",
      "tree": "53b254a5a6c98f6ea80b2eafe8fab2e99a9262ba",
      "parents": [
        "dee09f90d1b445c3a133c392a0afc03c62d75ef1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 12:35:14 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 15:33:09 2019 +0000"
      },
      "message": "Move image_write_read_test helper function to .cc file.\n\nTest: m test-art-host-gtest\nChange-Id: Ifebd7771c4f8c0c5cc9b4af4f77f4b8272f6cc69\n"
    },
    {
      "commit": "4e6abea8f7568f6bbbc6c11470cfd89e83caacc6",
      "tree": "53e3df5d0f14376c04cf5ba270ba372710102599",
      "parents": [
        "67bf99b8a575b15c117a3fbf7aae421330e4795a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 10:20:20 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 14:26:58 2019 +0000"
      },
      "message": "Create type lookup tables early.\n\nThis is a partial revert and cleanup of\n    https://android-review.googlesource.com/1143022\nto create the type lookup tables before compilation.\nCreating them too late increased the compilation time.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Manual, time dex2oat --compiler-filter\u003dquicken.\nBug: 142680736\nBug: 29790079\nChange-Id: Ied3f86a80b4f2aaacb5acc9716652f06bdc98c82\n"
    },
    {
      "commit": "5115a4dffb95637efe1df92d6f6eb70a8724c9ae",
      "tree": "605f5ca51dde13b1ec93fb0348d52969367b126e",
      "parents": [
        "15ffafd026962a16ee1abdea630542dc46f67482"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 17 14:56:47 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 12:49:45 2019 +0000"
      },
      "message": "Clean up initialization checks for entrypoints.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 18161648\nChange-Id: Ia3c2fdb616a5bb289e5afeccd4e6fe3eaf7ed697\n"
    },
    {
      "commit": "0866ea41c21df6672b302eabe5b98ebb40c92613",
      "tree": "71d1adb37e646b41d4926edc0207694a0ade2036",
      "parents": [
        "765b87dee25855aed0c71e029346e99d7d91f9f0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 12:04:17 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 16 14:07:16 2019 +0000"
      },
      "message": "Revert^2 \"Refactor oat file writing.\"\n\nThis reverts commit 50c812abbe8a8f64d2def49c549eaa005b5f32c7.\n\nFix the VerificationResults to be created before Runtime.\nThis is needed for recording verification data during early\nRuntime initialization when compiling the boot image.\nThis also cleans up a TODO for bug 29790079.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Manual, prebuilt files do not change with this CL.\nBug: 142680736\nBug: 29790079\nChange-Id: I4350e7a67a16ee1653a8f2fce6244e353a3597c4\n"
    },
    {
      "commit": "50c812abbe8a8f64d2def49c549eaa005b5f32c7",
      "tree": "083d1d03f5fd32e4a3bd466a9aad276a7be067b6",
      "parents": [
        "af47ca01e96c280a15c24e2ae8152f61ffb8c1ce"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 08:57:00 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 15 12:01:50 2019 +0000"
      },
      "message": "Revert \"Refactor oat file writing.\"\n\nThis reverts commit 0d192d2c08116cab8244a6eb229aa784bc6cfefa.\n\nReason for revert: Boot time regression.\nBug: 142680736\n\nChange-Id: I65c8f687668c1d7cec293b6b8bfe7147181c0a10\n"
    },
    {
      "commit": "0a51605ddd81635135463dab08b6f7c21b58ffb0",
      "tree": "820f338333010f4d6e4b543ffea47e9ff7d2dd3f",
      "parents": [
        "e2727154f25e0db9a5bb92af494d8e47b181dfcf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "message": "Revert \"Make compiler/optimizing/ symbols hidden.\"\n\nThis reverts commit e2727154f25e0db9a5bb92af494d8e47b181dfcf.\n\nReason for revert: Breaks ASAN tests (ODR violation).\nBug: 142365358\n\nChange-Id: I38103d74a1297256c81d90872b6902ff1e9ef7a4\n"
    },
    {
      "commit": "e2727154f25e0db9a5bb92af494d8e47b181dfcf",
      "tree": "0ddc6eec3ad9508d7eb1f2b941786dd0ed7d2cd8",
      "parents": [
        "c78860b91ae07eed92f86876e7a03132adea6fcd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 10 10:46:42 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 08:22:00 2019 +0000"
      },
      "message": "Make compiler/optimizing/ symbols hidden.\n\nMake symbols in compiler/optimizing hidden by a namespace\nattribute. The unit intrinsic_objects.{h,cc} is excluded as\nit is needed by dex2oat.\n\nAs the symbols are no longer exported, gtests are now linked\nwith the static version of the libartd-compiler library.\n\nlibart-compiler.so size:\n  - before:\n    arm: 2396152\n    arm64: 3345280\n  - after:\n    arm: 2016176 (-371KiB, -15.9%)\n    arm64: 2874480 (-460KiB, -14.1%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 142365358\nChange-Id: I1fb04a33351f53f00b389a1642e81a68e40912a8\n"
    },
    {
      "commit": "0d192d2c08116cab8244a6eb229aa784bc6cfefa",
      "tree": "a84963a1f78d1eaa7405ce63fee1b6a8dff12efc",
      "parents": [
        "9b16e344b246096d228dd4b41ff711884bcfcb3e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 10 16:53:07 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 11 13:44:48 2019 +0000"
      },
      "message": "Refactor oat file writing.\n\nSince we\u0027re writing dex files to vdex rather than oat files,\nwe can write them before knowing the oat header size. This\nsimplifies Runtime creation in dex2oat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6e0fa9ddc6671cff99e70507b67e052df7ad87c3\n"
    },
    {
      "commit": "45cdd05e32bdff1cea8581bc9ecf8a8cb08d6f5b",
      "tree": "e8a5281625659dc9ac4c96ce03687a75ca58a9d9",
      "parents": [
        "1061c7d2bf7a559abe5a234c680b27b8838862ca"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 23:03:18 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Clean up profile AddClass APIs\n\nRemove AddClassIndex APIs which were only used in tests (or test profile generation).\nThis was the last API which exposed the profile key internals.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: Iea41b85484c7f1ec33eaad75cd18c65adcb7853e\n"
    },
    {
      "commit": "5a0b6726562948421fbbeb38d20ffd66ef688ff8",
      "tree": "9507db95b78ba55228fc24dc43f485a9755b9773",
      "parents": [
        "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 24 15:09:40 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 25 16:02:56 2019 +0000"
      },
      "message": "Boot image: only use the resolution stub when there is AOT code.\n\nThis avoids dirtying the page when the class becomes initialized.\n\nTest: test.py\nBug: 119800099\nChange-Id: I5cd7ae56b6637583179dbb766da251977b7ac961\n"
    },
    {
      "commit": "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3",
      "tree": "59676cd563b71a5bb866681224a9ac9b2d35991a",
      "parents": [
        "38cf1105e340888f075517936679cce1864fd0b4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 16 18:57:26 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 23:22:12 2019 +0000"
      },
      "message": "Consolidate profile methods\n\nRemove unnecessary profile APIs or the ones that were added only for tests.\nThis makes the profile data flow much easier to understand (as we have to follow\nfewer entry points when adding methods and classes). It will also make it easier\nto restructure the profile format with new data.\n\nTest: m test-art-host-gtest\nChange-Id: I09ea91229278877d16b12af7a0b356ccceb4b520\n"
    },
    {
      "commit": "b4abe0a193871684ec712fc00b49e9764978b7c9",
      "tree": "ad43199c8efa37e5f5cc4c6d86e72cfe0c9af899",
      "parents": [
        "f3e6c5eada7521d7c4ddc86307474f389f53081e"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 17 19:22:55 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 20 13:19:52 2019 +0000"
      },
      "message": "Limit visibility of ART libraries, binaries, and headers.\n\nThis simply records the visibilities necessary to keep things working - more\nwork is required to vet them.\n\nTest: m\nBug: 133140750\nChange-Id: I776d6b79c4c2b214556070c850ae5321d5f8b949\n"
    },
    {
      "commit": "849439ac18cc36972c145fef2e0f54dea36ff131",
      "tree": "f099b4ebf92674674e332c85ff99b05b9bbdb6e7",
      "parents": [
        "973f8c48154526f1211d8be3f95855bce753f76c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 16 15:09:16 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 17 19:21:03 2019 +0000"
      },
      "message": "Refactor the management of profile keys\n\nMake the profile key generation dependent on the actual profile object\n(non-static). This will allow us to add additional information into the\nkey, depending on the profile version. For example, for the boot image, we\nmay add the architecture so that we can capture the differences between 32\nand 64 bits.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: Id1ad60ac50adcf8bfe011b8d843c4cc4e9d5fc0f\n"
    },
    {
      "commit": "70f2314b46bb98f80de38d3217c2bdad3adaba9b",
      "tree": "87eabd6e2dd4c6c1a939cc908d8d2d054307b1f4",
      "parents": [
        "284b1b01cf47335fa578e995150adcd0c6f02059"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 13 17:37:33 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 14 11:27:20 2019 +0000"
      },
      "message": "Fix ODR issue with dex2oat and libcrypto\n\ndex2oat links against both static and shared libcrypto, which causes\nODR issues in the new FIPS self test code.  Remove the unnecessary\nstatic linkage.\n\nBug: 137267623\nTest: treehugger\nChange-Id: I484ef9fb8d6599828310c31f7d54571c93f55d56\n"
    },
    {
      "commit": "ad909af6c4be163bf2d5f4ca1e0487cc619a5041",
      "tree": "737bdd7957eb6c74ebaf126acfe0ff355f7b5f0a",
      "parents": [
        "6da456969b2b4294cda98e6d0bc16a4493ad9652"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Jul 16 17:02:44 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 02 10:28:27 2019 +0000"
      },
      "message": "Update references to the ART APEX.\n\nTest: Build \u0026 boot\nTest: atest CtsJniTestCases CtsCompilationTestCases CtsSimpleperfTestCases CtsBionicTestCases\nBug: 135753770\nChange-Id: I9635afaf7996407063a0d9ed474b95c0b0e4f890\nMerged-In: I9635afaf7996407063a0d9ed474b95c0b0e4f890\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "fe1d952a9912bf597174dc636d0f87db06a8d925"
}
