)]}'
{
  "log": [
    {
      "commit": "ce9b902a161b86eb2d5ef9fe4442305e25828d0a",
      "tree": "3108d6315b779816b076b220870748631235e2ea",
      "parents": [
        "a8f858e4eddeede8c465cc5b9fb40733e4649aed"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 27 16:56:08 2021 +0000"
      },
      "message": "Reland: Support pass BCP art/vdex/oat files by FD\n\nThe original implementation in odrefresh generated inconsistent number\nof files between jars and other files. The code is reworked.\n\nOriginal description:\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nTest: odsign_e2e_tests\nChange-Id: Ie3ae48c7d70a2779cfbd80b307199a0f327c895c\n"
    },
    {
      "commit": "d7a4da1f357e089c5d150559d8d2f2ddb7c4958a",
      "tree": "bde88500eac9eda86031cfe8536241dfc79e12d2",
      "parents": [
        "2cb2527d4136f681b8e79352c546e65431ceb10c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 15:05:49 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 14:16:27 2021 +0000"
      },
      "message": "Revert \"Support pass BCP art/vdex/oat files by FD\"\n\nThis reverts commit b1adfc2a0570f52d74b8a4acdd578efc1790995b.\n\nReason: reports from Realtime Stability Insights (RTSI) infra.\n\nBug: 193720426\nFix: 194481664\nFix: 194475273\nFix: 194478073\nTest: TH\nChange-Id: I421d0b4a613de5ac8fb2830fa27206edb5428374\n"
    },
    {
      "commit": "b1adfc2a0570f52d74b8a4acdd578efc1790995b",
      "tree": "c5058390901f2abbb0e281d8403be2b8db02c337",
      "parents": [
        "71f763399e95676d665e071623bccb714acf88b4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 23 01:47:27 2021 +0000"
      },
      "message": "Support pass BCP art/vdex/oat files by FD\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nChange-Id: I209085f047c42823ff20415804f65a9b32378b40\n"
    },
    {
      "commit": "b17c908047a2df675ecb4bd0aa2b21114376bbae",
      "tree": "f457b402b2c4455ab0843017dd64335640bf01b1",
      "parents": [
        "8fddc7519d756d4de6c2c1a4b14af5584e9fecba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 08:27:45 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 09:32:51 2021 +0000"
      },
      "message": "Set compilation reason in vdex-only OatFile.\n\nTest: test.py\nBug: 192408935\nChange-Id: Ib87ea546876bfb4c6bf87b60f5a4f8aa306bd186\n"
    },
    {
      "commit": "9060ebe88ee6917bea714d93b522197b4b184267",
      "tree": "fd0cf1f0ad22e93e51ef6edb17e41435955a0664",
      "parents": [
        "5b8eb16cb6476d4e04379fdcfad7ba2c731001ff"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 17 12:57:12 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 28 21:50:07 2021 +0000"
      },
      "message": "Don\u0027t let the oat file close BCP FD passed from outside\n\nBug: 186132447\nTest: odrefresh --use-compilation-os\u003d10 --force-compile\n      # complete successfully with other changes\nTest: TH\nChange-Id: I3393ccd8fdc8ece71dbed8d16ef3c62ba935ea75\n"
    },
    {
      "commit": "f5690ca22446968e6c28ebb06b1d7451e02e203d",
      "tree": "1c52e247ff3a115cb0992d921df0229bcaca6b44",
      "parents": [
        "b3a4e01448a32b2dc53cad8a981ed7c75d12d2cc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 16 14:27:34 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 16 16:57:28 2021 +0000"
      },
      "message": "Reject a vdex file if its dex contents are out of date.\n\nThis will make sure the runtime doesn\u0027t think the APK optimization state\nis \"verify\", when at runtime we\u0027ll actually run from the APK\n\nTest: m\nBug: 191245631\nChange-Id: I46e056e52d1f7ff4a4ec8d952f325c54d9efad8f\n"
    },
    {
      "commit": "f667c33fc88356aa80d455430752719aaae57717",
      "tree": "ab752c06377a4db0855b307f8d9b806065820794",
      "parents": [
        "319333f6ea3408b8c99bd9c644f0f34b66fe31b8"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 27 11:35:44 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "Avoid opening BCP jars if the corresponding FDs exist\n\nWith -Xbootclasspathfds, we already have the FD available in the\nruntime. When loading a BCP oat, it also needs to check the\ncorresponding BCP jar. When the jar\u0027s FD is available, this change\navoids the open by path.\n\nBug: 187327262\nTest: odrefresh --force-compile  # success\nTest: strace  # no more open for such case\n\nChange-Id: I8c488254d9bf923a2e181f578c9ed167cd75335c\n"
    },
    {
      "commit": "93c28ed5e8303eed09d6286725029a21293d3f56",
      "tree": "2194b6025407b02be2f87e2e2b597dd7ad0660e7",
      "parents": [
        "2ef367acf3f95ee4c0459b73c3b18613cfa7d74d"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 14:11:42 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 17:51:59 2021 +0000"
      },
      "message": "Use the system namespace to get the right permitted paths for loading OAT files.\n\nThe ART namespace doesn\u0027t permit e.g. /product/apps, and there may be\nother locations too that need to be configurable from the system linker\nconfig.\n\nTest: Boot\nBug: 188078687\nBug: 130340935\nChange-Id: Id23c45dec6aef8379b125d70f2a47289f34c5a3a\n"
    },
    {
      "commit": "2cca1e029c8b152498d48b548a63dd2aa8697b6c",
      "tree": "bf49f82e8276e51620e97fb265408a79c4e533d6",
      "parents": [
        "79578115a2ab67af3bd61dad2a6a6497f2e0b6b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 21 09:21:16 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 21 13:17:31 2021 +0000"
      },
      "message": "Add number of methods to OatClass.\n\nAnd use it for checks when reading oat file data.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: I3a2433f94397107a2ce3c198d22e660871c505a8\n"
    },
    {
      "commit": "1c7d0ce3c63a14f569e64939c48bf6b7db2ac9a7",
      "tree": "5d5c950f140998c975fbc2321c98e4999f2e8407",
      "parents": [
        "4501517c28357189f60f05494facc7e6ba2a8513"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 19 14:00:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 20 15:52:54 2021 +0000"
      },
      "message": "Extra OatDexFile checks when defining classes.\n\nAdd a check that the class def index from TypeLookupTable is\nvalid and checks that OatClass data is within the oat file.\nAdd a TODO for a check that we cannot do with the data\ncurrently recorded in the oat file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: Ie23a24cf72bb5a3cc432680db2c870a33d58b030\n"
    },
    {
      "commit": "3d76ebebfb50ce6e465f99b96078790a2576ca38",
      "tree": "2b4b41b6444f681d9d4200426afc4b9603bc091d",
      "parents": [
        "6e741a743cda2a85830b8cf85943e68feeebe3c7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 19 15:07:50 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 20 08:00:45 2021 +0000"
      },
      "message": "Change OatClassType to enum class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: I0709a467c92f38e6886d3936b20c2c7869429956\n"
    },
    {
      "commit": "0b943287e7dec0cbe1734752f5a1f30f3c29973b",
      "tree": "9b423991fc85968f2cccf926a39f844ac54f7f59",
      "parents": [
        "5db2fd0e535b056ccb11e137f195b311627b48ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 09:16:00 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 09:57:45 2021 +0000"
      },
      "message": "Reland \"Move the type lookup table to vdex.\"\n\nThis reverts commit 640c448bad41c00599f8f8fb056eba679edc891e.\n\nReason for revert: CL is not the culprit\n\nChange-Id: Ia9a404980601998ade118b0e14008e2bc6317d76\n"
    },
    {
      "commit": "640c448bad41c00599f8f8fb056eba679edc891e",
      "tree": "05c9293b0e17908efe82a5f4048bf092a99996e2",
      "parents": [
        "f4d05ff134347d723e27919ccc89ce9d412b2d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 08:31:29 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 08:31:57 2021 +0000"
      },
      "message": "Revert \"Move the type lookup table to vdex.\"\n\nThis reverts commit c005ada78df5edebac74739b2c344e1a2a3efcba.\n\nBug: 112676029\n\nReason for revert: Fails on asan\n\nChange-Id: Id21b84f1f078d6b1c701559e0cbbd3704d269dfb\n"
    },
    {
      "commit": "c005ada78df5edebac74739b2c344e1a2a3efcba",
      "tree": "a3a682bcc841426ac57629f937d718a5f530ea81",
      "parents": [
        "c8fe6517faf91b45683cddff3c15e08e489e12e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 18:26:20 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 16:31:34 2021 +0000"
      },
      "message": "Move the type lookup table to vdex.\n\nThe table format has been stable for many releases now, so \"promote\" it\nto .vdex, which remains post-OTA.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: Ie1bbb24b4ab9c7864ae7e69e97db5ee5d1fc9ea1\n"
    },
    {
      "commit": "50419f2d4ce9bef92115342692a405f30600e114",
      "tree": "fbec0bb12b706801cf8a5e0941c2923a3071dd82",
      "parents": [
        "f9bf4efcab3d05b6d547e492075de377400d2d88"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 01 18:10:21 2021 +0100"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Thu Apr 01 22:18:59 2021 +0000"
      },
      "message": "Fix crash with secondary dex files on low RAM devices.\n\nBefore a secondary dex files gets dexopted, we create a vdex-only file.\nVdex-only files don\u0027t have dexlayout sections.\n\nTest: 692-vdex-secondary-loader\nBug: 184262593\nChange-Id: I020f82943bb64060bce280771e40dcd01a6d4d40\n"
    },
    {
      "commit": "a129d8aef0dfe39edf39b5537852bc2c60496bfa",
      "tree": "b5eded46436a3ff1b371a6a706cb7cf8a7e0878b",
      "parents": [
        "ec7b19485ba4af8b0fd0804389c470b556322d13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 18 22:23:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 25 18:08:51 2021 +0000"
      },
      "message": "Revamp vdex format for better extensibility.\n\n- Remove class loader context and boot classpath checksum sections.\n  Those are not needed now that VerifierDeps don\u0027t depend on them.\n- Remove remaining quickening encoding.\n- Introduce sections in a vdex file, which can be extended without\n  requiring a version change.\n\nTest: test.py\nBug: 160294863\n\nChange-Id: I4e3e25f34d242dc4de37f30ba9d78bcffbc1436d\n"
    },
    {
      "commit": "4924ea9ad98832f0ec7db841defca82331ee1b13",
      "tree": "66864c55d26b70d054e339518ec1890cd203e69a",
      "parents": [
        "4312f74ccf65a5abbab53c017b3f2b030c89f65a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 08:25:31 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 14:50:24 2021 +0000"
      },
      "message": "Remove Vdex::GetQuickenedInfoOf and all its users.\n\nTest: test.py\nBug: 170086509\nChange-Id: I1e1a4abf71245c0fd37f951c9af85f62feba18ca\n"
    },
    {
      "commit": "ef8c3376a812e943d4e7c4ef96f17e218d11bc7c",
      "tree": "18b28f41b7764a7f14bbc57b69b7d6b37c8c03b4",
      "parents": [
        "35363cf978d4d0b452cb8849041ff7dd6a6718bc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 15:01:42 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 18 16:43:46 2021 +0000"
      },
      "message": "Do not crash on out-of-date oat files.\n\nCheck that the OatHeader is valid before searching\nthe key-value store for \"debuggable\".\n\nTest: New test in dex2oat_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 179221298\nChange-Id: Ib10c919883b31b71810cc876fb38105b48a58bcb\n"
    },
    {
      "commit": "0654153bc5ca22466697681bb6dc4bc8b379975e",
      "tree": "5e21e5c9d4a1257a170d528e69163f974837f03e",
      "parents": [
        "947a8504f0ccce5e8adff2a2c96c33b0aa93c8fc"
      ],
      "author": {
        "name": "Jagadeesh Pakaravoor",
        "email": "jpakaravoor@google.com",
        "time": "Mon Feb 22 21:19:09 2021 -0800"
      },
      "committer": {
        "name": "Jagadeesh Pakaravoor",
        "email": "jpakaravoor@google.com",
        "time": "Fri Mar 12 19:29:57 2021 +0000"
      },
      "message": "Add madvising of .odex, .vdex and .art files\n\n1. When mmaping {.art, .odex, .vdex} files madvise them to MADV_WILLNEED\n2. Add system properties to limit the madvise size/range\n\nTest: presubmit\nBug: 178853586\nChange-Id: I14afc7cc038ebbf6bba5a393ef222050284dd86d\n"
    },
    {
      "commit": "16f60dc094fe283d1fcfd062b3144452e005c133",
      "tree": "7623386d460cd3c9a125aaaf60b1e81196ab48f1",
      "parents": [
        "9a1a5a9ae8611c0eb7dd5bfaffc8682eea3ee7c7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:35:16 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 13:18:41 2021 +0000"
      },
      "message": "Support loading vdex files without odex.\n\nGetDexoptNeeded with \u0027verify\u0027 as filter will return false when a vdex is\navailable.\n\nTest: 628-vdex, 820-vdex-multidex, test.py\nBug: 176960283\nChange-Id: I3ac2f747d1e7f5331a49a22c94983959e3b60122\n"
    },
    {
      "commit": "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa",
      "tree": "6e9bbf5ad71a55f701f740e2995e0b84e9b87307",
      "parents": [
        "7aa2bfc09541ea5d2516738de84c24cd0269fed0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:10:28 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:58:32 2020 +0000"
      },
      "message": "Faster access to unresolved classes from compiled code.\n\nAdd two new load kinds to LoadClass, similar to kBssEntry\nbut using the access-checking entrypoint on the slow-path.\nOne is used for classes that are in the literal package and\nthe other for classes outside the literal package of the\ncompiling class. Associate new .bss entries with these load\nkinds and update them from entrypoints based on the resolved\nclass properties. If the resolved class is public, both\ntypes of entries can be updated, otherwise only the package\nlocal entry can be updated and only if the defining class\nloader of the class is the same as the caller\u0027s defining\nclass loader (which is identical for all code in an oat\nfile) because the run time access check for same package\nrequires both class loader and literal package name match.\n\nTest: Additional tests in 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 161898207\nChange-Id: I281e06ac2825caf81c6d7ee3128af833abd39992\n"
    },
    {
      "commit": "2a530564d39aae5625874b8072b67c0598689ff7",
      "tree": "0d415f3ee688bfce8ff162bf5d985c13bc8d6540",
      "parents": [
        "b96d6f3846103659249ad58fc905fc5a14dafc47"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 16:56:18 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 17:00:45 2020 +0000"
      },
      "message": "Check void pointer instead of uint8_t\n\nAvoid trying to print the addresses as a string if the check fails.\n\nTest: make\nBug: 160067357\nChange-Id: I0de5ec4ed7189d7ec3b4e3cac2758d214e1f27b1\n"
    },
    {
      "commit": "07f78906212edb684b3bf046d1bb661613f81c22",
      "tree": "0ec73044ed2802adb637972ed701935883f445a5",
      "parents": [
        "c92e7032d2f9417c675788268a33396384ec8a13"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 27 11:35:12 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 27 13:09:09 2020 +0000"
      },
      "message": "Replace \"dummy\" with \"placeholder\" for MemMaps.\n\nTest: m\nBug: 161336379\nChange-Id: I0b9e94bb4fe288668aa578507e141f09ea84ccba\n"
    },
    {
      "commit": "211f9d32587deb46c36b52862ea6d5ff9e97cb3f",
      "tree": "50630d90e9dd76372b0f3f601d4b7911e03c7e48",
      "parents": [
        "09261a8c5cd36a8c7a1ae5107da554dd35008b97"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 21 16:10:44 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 28 08:48:48 2020 +0000"
      },
      "message": "Fix deadlock from dl_iterate_phdr() callback.\n\nAvoid allocating any memory from within the callback.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --64\nBug: 156312036\nChange-Id: I1e89a0f5b1d5185d80856cf7b805f53fff605bbb\n"
    },
    {
      "commit": "bc89ed42d6128c27819e5403f6ceca5c18892e23",
      "tree": "38a0490a8a9ee725e099381840baa2a95e776300",
      "parents": [
        "12cde746b872c149a542ada0277040068af6606c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Apr 29 19:59:24 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 13 19:14:21 2020 +0000"
      },
      "message": "Do not execute OAT files that require app images that cannot be loaded\n\nThis change creates a new requires-image flag in the OAT header, which\nis set when the file was created with an image (app image, etc.). If\nthis flag is set, we will not load the OAT file as executable if the\nimage could not be loaded.\n\nGoing forward, this allows the compiler to assume there will be an app\nimage when an app image is generated and in some cases generate better\ncode.\n\nNote that we still must load the OAT file, because there will not always\nbe another way to access the underlying DEX files.\n\nRevert submission 1298633-revert-155218105\n\nReason for revert: Fixing tests and relanding\nReverted Changes:\nI701c91d5b:Revert \"Disable ART run-test 2231-oat-require-app-...\nIc5cda4c75:Revert \"Reject OAT file in speed-profile if app im...\n\nBug: 38313278\nTest: m test-art-host-gtest-oat_file_assistant_test64\nTest: atest android.server.wm.MultiDisplaySecurityTests#testDisplayHasAccess_UIDCanPresentOnPrivateDisplay android.classloaders.cts.UsesLibraryHostTest#testUsesLibrary_full\nChange-Id: I52cca033fa8e2e6de86514c833798c3d99b99477\n"
    },
    {
      "commit": "c390879443dea479fb5b317237ee455d76136be2",
      "tree": "931674a0c3c6a2db7ae82d44477724c55d623afb",
      "parents": [
        "b47b978486572492140b63b0c8c5daa58dc28d41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 06 14:52:04 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 15 08:10:37 2020 +0000"
      },
      "message": "Do not crash for broken stored VerifierDeps.\n\nPropagate the error to the callers. Also avoid filling in\nunused data structures when we want only verified classes.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 151220989\nChange-Id: I3ad0d725251037006128c1f631e6bd6dcec3a592\n"
    },
    {
      "commit": "69828ac1c6de77fadb3660d6f20b52d46440a0a9",
      "tree": "ae0541cff02d6d44cb7326bf04adaf4748416ce9",
      "parents": [
        "e66eeb61946dcaab89ac0fc9a602b96a731ef86c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 09 14:11:02 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 10 14:39:54 2020 +0000"
      },
      "message": "Print oat file location for invalid class status\n\nAim to figure out what oat file is responsible for invalid class\nstatus errors.\n\nBug: 148412019\nTest: make\n\n(cherry-picked from commit 878f7961df1ec867b7dd9f27d382e246ad920d11)\n\nMerged-In: Iff35d478b71c5fcf6b38b8cb0307c9b59521031c\nChange-Id: Iff35d478b71c5fcf6b38b8cb0307c9b59521031c\n"
    },
    {
      "commit": "13fcc3e2ba4b2887907ef9b89b09a9499bbfdc16",
      "tree": "d14472a2920ea5e9211f3868abbeeebb6efd163f",
      "parents": [
        "469016b2ba86f46fd0d3b4a9b7d42591dbc1d91f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 24 12:40:56 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 24 14:23:17 2020 +0000"
      },
      "message": "Remove some dead code from OatFile.\n\nTest: m\nChange-Id: Id1e354df39b8c9e190c27edd52dc9340cc0fcd1c\n"
    },
    {
      "commit": "0010172c7ff79a3af75669f1ff49d5f97e867746",
      "tree": "63fa814d9a60635871174918abe4119c6cb3c11b",
      "parents": [
        "3a809c8e29c17c71d6ad01294b410c18b0cc9d54"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 27 09:39:16 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 06 18:20:00 2020 +0000"
      },
      "message": "Add extra detail to class status CHECK\n\nConvert class status to uint32_t since the CHECK prints chars by default.\n\nTest: make\nBug: 146550994\nChange-Id: Idd4fece569b88eed76594be2ff8d848e2fae686d\n"
    },
    {
      "commit": "69944683c33a316c9ed325ed686d9f81ad3665dc",
      "tree": "fbb5563f7ccd746ab54f98afc563267e608a5c3e",
      "parents": [
        "abd8f052512fa2bb404f1eb0a42ffe0e5d802b7e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 09 15:16:39 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 11 09:54:53 2019 +0000"
      },
      "message": "Follow-up for \"Use provided dex filenames in oat file.\"\n\nAddress late comments for\n    https://android-review.googlesource.com/1180228 .\n\nTest: m test-art-host-gtest\nChange-Id: Ib242db89a630a70b46d603feadaa1a2f3840a02a\n"
    },
    {
      "commit": "abd8f052512fa2bb404f1eb0a42ffe0e5d802b7e",
      "tree": "28bec78b6866aae9713c9eb471680c7aa4fb746b",
      "parents": [
        "3bdb97798d9a00c498833e00b49927f62b9e7f90"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 06 10:49:17 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 10 22:51:35 2019 +0000"
      },
      "message": "Proactively dequicken on debuggable switch.\n\nPreviously we would generally not really consider dex2dex quickening\nwith debuggable processes. This could cause problems for structural\nredefinition since the -quick opcodes are incompatible with the types\nof changes structural redefinition allows. Furthermore this can cause\nsome unexpected behavior where (for example) check-casts might appear\nto pass even if debugger activity should cause it to fail.\n\nIn order to fix these issues we make the runtime more proactively\ndequicken dex-files when we start or switch to JAVA_DEBUGGABLE mode.\n\nTest: ./test.py --target --host\nTest: adb install -t ~/misc/Bandhook-Kotlin/app/build/outputs/apk/debug/app-debug.apk \u0026\u0026 adb shell monkey -p com.antonioleiva.bandhookkotlin -c android.intent.category.LAUNCHER 1\nBug: 134162467\nBug: 144168550\nChange-Id: I2673c91b72ae7048d2ff71a1cf68cf552d4e8004\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": "2191069047034ad891ea15f60a217246edc38d53",
      "tree": "5fcdb37aa8d1e052979631adac01fe74794748b3",
      "parents": [
        "add69acb7db965bd8d817a185e962e5474f690d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:27:03 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 14:04:57 2019 +0000"
      },
      "message": "Revert^4 \"Boot image extension.\"\n\nThis reverts commit f5c5eb30fc71e0c305d678bd3c1c995a5c36d508.\n\nRemoved wrong check for no dex files. Dex files can also be\nspecified with zip-location and file descriptors. Added a\nregression test to dex2oat_test.\n\nFixed the image checksums validation to use the appropriate\npart of BCP rather then full BCP. This fixes errorneous\nrejection of oat files compiled against partial BCP.\n\nChanged dex2oat_image_test to use ART_BASE_ADDRESS to try\nand avoid failures when reserving space for loading the\ncompiled images.\n\nTest: Additional tests in dex2oat_{,image_}_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I062cbecd0020f5c24353eb75643ea5905cb6f4fd\n"
    },
    {
      "commit": "f5c5eb30fc71e0c305d678bd3c1c995a5c36d508",
      "tree": "2f08c5562d3b35b7f0139f772b6324a9689d01ea",
      "parents": [
        "acdb9a350fede0776e1f4d6d04dc3246249345e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 12:25:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:25:07 2019 +0000"
      },
      "message": "Revert^3 \"Boot image extension.\"\n\nThis reverts commit 02820f424714e711bbd4cb4b04a109416eb0c8b8.\nAlso reverts commit beb66b38dcce937d7eee9ef2d07b6402c720f8ee\nthat contained a follow-up fix.\n\nReason for revert: b/144001974\n\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I4da5330c3efa9f0c3508e85344c031d3b360ca0a\n"
    },
    {
      "commit": "02820f424714e711bbd4cb4b04a109416eb0c8b8",
      "tree": "ca7554d4dd148a3832b46c19fd9bd706d83ed4a4",
      "parents": [
        "962a110efb2c6a2b0161f919bfd5921e3dee7168"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 10:31:27 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 15:33:02 2019 +0000"
      },
      "message": "Revert^2 \"Boot image extension.\"\n\nThis reverts commit 9f459c4ef60d771fc4eb8da1f709f479ca23a6ab.\n\nFixed the extension test to be more hermetic. Added a clean\nspec to work around broken dependencies; obsolete images may\nhave been a reason for boot time regressions.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nBug: 143492855\nChange-Id: I37e714d53e66f94f791e6d1e9f4d78bf7bcb2116\n"
    },
    {
      "commit": "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab",
      "tree": "5c998b1bd23d0a348ec77a4fcd760e7e9cac00f7",
      "parents": [
        "9e709debacab08be8adbac366e0555ca302a3bed"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:23:06 2019 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:29:26 2019 +0000"
      },
      "message": "Revert \"Boot image extension.\"\n\nThis reverts commit 4f6ebe89af462ff05d97433deb2bca3f3b011fc2.\n\nReason for revert: b/143492855\n\nBug: 119800099\nBug: 143492855\nChange-Id: I27da7e790f61f836701f8f39c98d14b507af8b9e\n"
    },
    {
      "commit": "4f6ebe89af462ff05d97433deb2bca3f3b011fc2",
      "tree": "856ef32276112b78fb51bd95dfd545217b86cb33",
      "parents": [
        "3155aa4e6167c5f346aa5e90da43ee0e9d04d2ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 15:23:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 12:48:46 2019 +0000"
      },
      "message": "Boot image extension.\n\nAllow the boot image to be split into the primary boot image\nand any number of optional boot image extensions.\n\nTest: New extension test in dex2oat_image_test.\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nChange-Id: If5a2fa1c0facccbfaf0a1f0cb015ea9233f1f4c6\n"
    },
    {
      "commit": "dee09f90d1b445c3a133c392a0afc03c62d75ef1",
      "tree": "3ad816ebd68fff982a7562dbce3f2538eb63f738",
      "parents": [
        "c3c7eb082bf0f965096817adc3ff153a3d61b57d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 23 15:18:20 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 23 15:23:47 2019 +0000"
      },
      "message": "Add the compiler filter to InMemoryDexClassLoader backed by oat files.\n\nOatHeader::GetCompilerFilter requires it.\n\nBug: 143155012\nTest: 692-vdex-inmem-loader\nChange-Id: I96c3aa38361e01b7f109d91a0f5c634f7dae0278\n"
    },
    {
      "commit": "5ee206f3ee081424b323844a4fc91c3d0e89aa89",
      "tree": "c6b3aefcace815a5d4389b94c73ff3706d4179bd",
      "parents": [
        "caf8f4c5aaa1c2827d13309bd59b9f4b7e3424b9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 08 15:09:17 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 09 08:36:57 2019 +0000"
      },
      "message": "Make LinkMethods setup the entrypoint like image_writer.\n\nFor consistency, set the entrypoint the same.\n\nTest: test.py\nChange-Id: Ie069c6e5214d5e00ddcc072dbe6db423d0d7c80e\n"
    },
    {
      "commit": "e80ecf31e0d58a90d6b2a1d65ec090c03abc86dc",
      "tree": "25eb1f6319f3194c79dfcec77753628e424cc476",
      "parents": [
        "d4d6fb50b5e1552c114529854e29c3af5c4eb9c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 15:20:58 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 05 16:12:41 2019 +0000"
      },
      "message": "Rewrite the .data.bimg.rel.ro check in OatFile::Setup().\n\nIn preparation for loading boot image extensions before\nRuntime::Current()-\u003eGetClassLinker() has been initialized,\nchange the check to not rely on Runtime::Current() at all.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ica37c294a19e36e615186a0331d4d18c40c7fe2e\n"
    },
    {
      "commit": "7cde45800e21c270945b43a8989334ffc7422c32",
      "tree": "61f04cf955031cf5e38211e7c7d09fee00f10e30",
      "parents": [
        "6b63d8832a780e8b661595ff0b0610b3cc52aa6a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 05 13:26:11 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 16 08:22:46 2019 +0000"
      },
      "message": "Further clean up boot image address checks.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ib7abd10e94e995e61549b3a3111a640802b5e700\n"
    },
    {
      "commit": "b5649f9b2bce5f4e90be7e2ccfbb9e33ff3105a0",
      "tree": "c5df21484f381370c40af9aa0704f7b4be43e6c6",
      "parents": [
        "e00e20103fe798669b69de79e161650908659d05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 14 15:27:52 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 15 08:49:53 2019 +0000"
      },
      "message": "Allow stripped-down OatDexFile in system server.\n\nBug: 119800099\nTest: boot\nChange-Id: I6629ea1a96dcc945dda532720c7cc7c4dc305ab7\n"
    },
    {
      "commit": "b10f02828b869cf6505bbd6eef6d2ae332c4e91b",
      "tree": "cffcfdf749c1adc68468368135929e17d6b4fded",
      "parents": [
        "3b19de27a40924b60d456a3016d324e8328cad77"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 12 17:30:52 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 14 20:15:38 2019 +0000"
      },
      "message": "Special case one class in jit zygote.\n\nAlso remove obsolete comments.\n\nBug: 119800099\nTest: ZygoteServer.runSelectLoop not compiled at app startup\nChange-Id: Ie5834f411fa039ec4b299cd7c47c2de975d3492a\n"
    },
    {
      "commit": "dc2fbb6d9834733214c6cdedbacd526603754a74",
      "tree": "8b63332d867506fdb09ac7721a8a84b7514131f3",
      "parents": [
        "307b2846c69506836390e15c56547b9b5d55290d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 11 22:55:50 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 12 08:45:48 2019 +0000"
      },
      "message": "jitzygote: create a type lookup table at runtime for bootclasspath dex files.\n\nThe normal configuration has them in the oat files. Create them\nat boot in the jitzygote configuration.\n\nTest: m\nBug: 119800099\nChange-Id: I9ee1690d9541b70eba06818b91865bc603266bf6\n"
    },
    {
      "commit": "3e8aae03770a4acceff2f7fb7d6db68e05602d84",
      "tree": "297b7f7cfeb82f352da84333f7fd584b8d0f8718",
      "parents": [
        "40594870058427d6d1090f18c216f9dd155421e2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 26 18:48:02 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 11 06:57:08 2019 +0000"
      },
      "message": "Fix dex location of boot oat files during preopt\n\nDex location should reflect the path on target when preopting\non host. This previously did not hold and this patch fixes the\nissue. Other paths remain the same as before. A DCHECK is added\nto class linker to guarantee that -Xboot-classpath-locations is\nnot ignored.\n\nSimultaneously it refactors the logic for resolving a relative\npath to make it clearer which path is used for opening files\n(dex file name) and which reflects the location on target (dex\nlocation), as these differ when preopting.\n\nThe patch also adds a missing dex2oat dependency for oat_file_test.\n\nTest: test-art-gtest-{host,target}-oat_file_test\nTest: compiles, no DCHECK crashes\nChange-Id: I0629c7ee505b5fd50649800bb3e08efc1ee44102\n"
    },
    {
      "commit": "7126c5b47d34b9a4d6d7553b8ea48e5085ee6b41",
      "tree": "eeabacfcf1e75997c2c4755bb84ff63706eba46d",
      "parents": [
        "c088b2efe015d49f10597c515a7d749cb0856f84"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 05 00:02:51 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 11:34:09 2019 +0000"
      },
      "message": "Preverify InMemoryDexClassLoader-loaded classes from vdex\n\nThis patch creates a new subclass of OatFile - OatFileBackedByVdex -\nwhich initializes OatDexClass instances using the verification info in\na vdex file created by a previous instance of the class loader.\nThe OatFile is not backed by an actual .oat file.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692 -t 693\nChange-Id: I3fd055abe17ee9739c07f2e2f4fc2543e4ec8c9e\n"
    },
    {
      "commit": "c74ccb8a5ff4cacda6d1ed95f7676f00cc2dd269",
      "tree": "ec9c6802984af94ac48e382a2df04f6e6939cfeb",
      "parents": [
        "21a6ec5a5e9d392e33e4febffaa581da4d4855f2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 19 18:39:58 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 02 16:43:41 2019 +0000"
      },
      "message": "Remove our custom elf.h header.\n\nIt tends to clash with the system header, which we can use instead.\n\nBug: 73344075\nTest: Generated oat files on host are identical.\nChange-Id: I12db1dd9e9ec039d7c157650dc6cb61fe6a2524a\n"
    },
    {
      "commit": "50928116be503deed341fbc84c0647d5687b12a1",
      "tree": "2ab09470c05eff72860eb8df14dfcc1fba002ec4",
      "parents": [
        "b9c29f625bc27968d80f9eafa988dc14af0a1c28"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 22 17:06:28 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 25 10:59:19 2019 +0000"
      },
      "message": "Move elf_utils.h to libelffile library as well.\n\nAlso move some of our ART-specific utils form elf.h.\n\nBug: 73344075\nTest: generated oat files on host are identical.\nChange-Id: I587afc30875b9ddb57220fb3d4e764f9bb7a0e25\n"
    },
    {
      "commit": "e3e0f70f2d58674d6cfd324674d8808ca479f5a9",
      "tree": "f2bbef9ef18cb8357acc7a3ceb90c7c4feeec78b",
      "parents": [
        "02998cf18a03467f4c935f9d09cfd18c531b3d4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 07:02:02 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 22 16:21:06 2019 +0000"
      },
      "message": "Return the same dex location for dex file whether backed by dex file or not.\n\nBug: 126901248\nTest: oat_file_assistant_test\nChange-Id: Idae49fb00bfad7007cc55e53a83e4a3e42f53e07\n"
    },
    {
      "commit": "2faab0064bccdf06a454ba5fc37f2cfeceab78bc",
      "tree": "bc51a211068019d77e7739164adf5be5c6333b7b",
      "parents": [
        "5f1465ff689eccbb1b6d15160d1a3700793956da"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 16:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 20 15:20:54 2019 +0000"
      },
      "message": "Create libelffile library for ELF file manipulation.\n\nMove some of our tooling to library to make it reusable.\n\nRemove MIPS support from the ELF builder.  This is slightly\neasier than making it independent of the runtime.\n\nBug: 110133331\nTest: test.py -b --host\nChange-Id: I93343808d0e27ee8e1117e713a2503e8179fc245\n"
    },
    {
      "commit": "1cedb4a2779fd161f781503fd5de08cab0a1c85b",
      "tree": "a9c0b7082e0d5d2f1b931eac7db3fcf9b0d46862",
      "parents": [
        "7909e1e4cc741b38b25328e2f9077beb7ecd018b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:13:28 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:15:00 2019 +0000"
      },
      "message": "ART: Move .bss mappings check before .bss init.\n\nPreviously the check was done before we compared the dex\nfile checksums, so an out of date oat file could have\nfailed the check. Now we\u0027re doing the check only if we\u0027re\ninitializing the .bss section for use by an executable oat\nfile, i.e. after matching the dex file checksums.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119601889\nChange-Id: Ib79d84c5bc2cf0674fc1f76071c589d49663e13c\n"
    },
    {
      "commit": "59ae4f949c26266a60ba0318995b46b4308312bb",
      "tree": "93ceebafd3b019ac3f7c36c828ce8f43c7c71a25",
      "parents": [
        "6e78158c7a0acad7fcb5c9e1b45ab7acda796671"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 14:06:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:38:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in OatFile.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: Ia5a3c0bb5fdfba7cf88b82768c6722493e258554\n"
    },
    {
      "commit": "206348cea8b086a484b8bde37b2e281e5f7db638",
      "tree": "1e83b6484dbd9218ace7c94d266dc90ed7e66505",
      "parents": [
        "58a268aa3569d8ad4f0e831de578620e1079ed59"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 05 11:11:33 2018 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Jan 28 09:37:57 2019 -0800"
      },
      "message": "Selectively allow dead reference elimination\n\nAllow dead reference elimination in methods not containing\n@ReachabilitySensitive accesses or calls, when the class is marked\n@DeadReferenceSafe.\n\nAdd 1339-dead-reference-safe to aggressively check that everything\nworks as intended.\n\nBug: 111453875\n\nTest: art/test/testrunner/testrunner.py --host --64 -t 1339-dead-reference-safe\n\nDetect ReachabilitySensitive annotations.\n\nChange-Id: I70c20431fdbcfcfd2692b2255d12ad59e37cb669\n"
    },
    {
      "commit": "8baa11a3626a8230a55e2e32b2d1281995a27ae4",
      "tree": "4dcab53f983682e4da30146fcd7f68803fe34d21",
      "parents": [
        "26e2eb689f595e2f1d3cd436198bc1233c4179db"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 24 10:30:03 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 24 18:52:14 2019 +0000"
      },
      "message": "Adjust ResolveRelativeEncodedDexLocation.\n\nNow that jar files are in the apex, relax the prefix check between\nthe absolute location of the oat file and the jar location for host\ncompilation.\n\nFor example we now have:\n- /system/framework/boot-core-oj.art\n- /apex/com.android.runtime/core-oj.jar\n\nWhereas before, the jar and the art file had the same prefix path.\n\nTest: m\n\nChange-Id: Ic216229dab7a853c64c98a36e32b387559f9cc0d\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "c4a924d8c74241057d957d360bf31cd5cd0e4f9c",
      "tree": "8520f52a87e80e1b372f2a54eb0a870b817f87cf",
      "parents": [
        "29a533e30277e159327c24e27ed609d26479b2cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 19 18:02:47 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 19 18:28:57 2018 +0000"
      },
      "message": "Keep dex location from OatDexFile.\n\nThis is needed for loading boot image with -Xbootclasspath:\nand -Xbootclasspath-locations: for app preopt. These options\nare necessary for loading additional components of the boot\nclass path for preopt with a partial boot image.\n\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 119868597\nChange-Id: I5e42f85c08eb9126c1045258deacc55fc7eebe00\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "875b4f26517ce215342746f07e41cda4c1991237",
      "tree": "16d061e67632c2980af958383db77883eabbdf1f",
      "parents": [
        "3573c3669b281e0fa6c59019d4e9de5d37e651ea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 12:59:15 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Avoid some tidy nullptr warnings\n\nSprinkle some (D)CHECKs to tell tidy our expectations.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I315b1602b20475402dd8383e1accc49e5a63eb5c\n"
    },
    {
      "commit": "f6cfd003cf87de0b3f2420893af93230d9ed1f38",
      "tree": "9f5c1a3325a4b144e25a87102c30426ee217d6e2",
      "parents": [
        "1e152a6090c546f4a6184a5610c85cae7ac77068"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 01 16:53:31 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 01 18:27:38 2018 +0000"
      },
      "message": "ART: Clean up android_dlopen_ext() call.\n\nRemove the unnecessary ANDROID_DLEXT_FORCE_FIXED_VADDR flag.\nWe do not produce oat files with non-zero minimum `p_vaddr`.\n\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nChange-Id: I892eb10798f3c72544d100a5968f08309b980b60\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "f4efa9ed0d7616bd32b258562d6977d9b7554af2",
      "tree": "826f880e65c88f85929c64907a414013f0901801",
      "parents": [
        "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 14:12:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 17:34:47 2018 +0100"
      },
      "message": "Remove oat_data_begin checks from OatFile.\n\nMake it a CHECK() directly in the ImageSpace instead. This\ncheck was a rather weird way to prevent the use of dlopen()\nfor boot image on host because it would load the oat file\nat the wrong address. This is now done by refusing to use\ndlopen() on host when we have a memory `reservation`.\n\nAlso clean up affected files for bugprone-argument-comment.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 77856493\nChange-Id: I6f0f9d5a0542574017d98acc2f4f30a585b483f4\n"
    },
    {
      "commit": "c55bb390d88b8eb62a50932f7f9b47c2a3733f16",
      "tree": "ec2e74f3f8404dffcb9bfde4e7ffa3416a35543d",
      "parents": [
        "89468aeaa6a67ae4025b30d427391186306d6522"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 00:02:02 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:37:12 2018 -0700"
      },
      "message": "Revert^2 \"ART: Refactor typedef to using\"\n\nThis reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1.\n\nReason for revert: fixed attributes.\n\nBug: 32619234\nTest: m test-art-host\nTest: m test-art-target-gtest-unstarted_runtime_test\nChange-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20\n"
    },
    {
      "commit": "ee07743e03042c2ca36e0c9513847a9e7d2509f1",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "message": "Revert \"ART: Refactor typedef to using\"\n\nThis reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd.\n\nReason for revert: Attributes on the wrong side.\n\nBug: 32619234\nChange-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b\n"
    },
    {
      "commit": "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd",
      "tree": "7e55557e118eb5fffe03ad3456e00d8469a36232",
      "parents": [
        "70dfb6983492aff1c52cc1b52044258aef51f47f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 10:58:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Refactor typedef to using\n\nAdd clang-tidy\u0027s modernize-use-using.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If50d37b5152af4270784e3cde7951292a9e19033\n"
    },
    {
      "commit": "e0669326c0282b5b645aba75160425eef9d57617",
      "tree": "3bb05553ee5f14081bb4ea8193fd29fa938e722f",
      "parents": [
        "56b0773d515527df60a38084cef3b813fefb5b9d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 03 15:44:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 04 12:57:49 2018 +0100"
      },
      "message": "Remove PIC option from oat files.\n\ndex2oat has been producing only PIC code for some time,\nso there\u0027s no need to record it in the oat file anymore.\nAlso get rid of the now unnecessary relocation logic\nthat was using the flag.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I070071ca5a808371f67883f4ae93d633a76231d0\n"
    },
    {
      "commit": "025059b5bc5974717e94d95cf2d82ff1ad51e75d",
      "tree": "bbb46a417b33ab81b6a1cc0180cd7d670a20013c",
      "parents": [
        "651184bdcfb2cbff2010dbb7e4d5e0c0c9373ae4",
        "7f00f5a1fa25f9b6414905983e7ac2739f662615"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 31 23:34:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 23:34:50 2018 +0000"
      },
      "message": "Merge changes from topic \"fdsan_art_fdfile\"\n\n* changes:\n  Fix various benign double fdsan warnings in tests.\n  Use fdsan in FdFile.\n  Clean up FdFile constructors.\n  Remove FdFile::DisableAutoClose.\n  Add DupCloexec to atomically dup and set FD_CLOEXEC.\n"
    },
    {
      "commit": "3ec8fb62386e9bdf0b54d630d90a55b3f40cf20d",
      "tree": "357b1112e5cda29972d1e25e1e755196828f341e",
      "parents": [
        "fcefab5ecf8b9abc6fa6479141085f5c132b7a4b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 17:47:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 17:47:38 2018 +0100"
      },
      "message": "Fix DlOpenOatFile::Dlopen() for mac build.\n\nTest: none\nBug: 77856493\nChange-Id: I23d84da604f4bf85c66957434a9fefbf6e4e28ae\n"
    },
    {
      "commit": "c09cd0513b860c4301ca7bd6a9065b583d102295",
      "tree": "1c7aa4ed2b9b5b1335829461e764c94565afb71d",
      "parents": [
        "40f8a74cba008af768316f0b5bfe9502174b6d02"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 23 16:36:36 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 11:50:53 2018 +0100"
      },
      "message": "Reserve boot image memory in one go.\n\nLoad boot image components into the reserved memory.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I214f947979bc0bbfc6df4312527504e90b88a01d\n"
    },
    {
      "commit": "afeec9fbaaed320536e924d5842d8058d0d75511",
      "tree": "533762df1c9cce2df1283f262a4c939f4459afe0",
      "parents": [
        "35696a098a7432414322773d9b94e6a112b1f3b6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 14:05:56 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 18:25:30 2018 -0700"
      },
      "message": "Remove FdFile::DisableAutoClose.\n\nRemove a footgun that also makes it impossible to use fdsan, since we\ndon\u0027t know whether the FdFile actually owns the fd or not.\n\nBug: http://b/113558485\nTest: mma\nChange-Id: I6a7767c33925db631852579f75d2def9ff6a44d5\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "35d5b8a2c5d2fce03be59aa003c3bf3c1b481be0",
      "tree": "7665f6d1527be61af13c8ef53f10833dd4200cfd",
      "parents": [
        "b28683f43231e65860ecf91c96a8c0234542c019"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "message": "ART: Do not use std::\u003ccontainer\u003e::at().\n\nThese functions are specified as throwing std::out_of_range\nand we do not use exceptions.\n\nTest: m\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I67c365ed6d779c101a18b9f386c751c48ca76e16\n"
    },
    {
      "commit": "b40d361019897e8b8484b772ccc0be433abafb5f",
      "tree": "cfb4498ee5757be7cec06f8e4a866e7faabfadba",
      "parents": [
        "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "message": "ART: Finish old move of OatDexFile\n\nThe class has been made standalone so it can be forward-declared,\nbut not all nested references had been updated.\n\nTest: mmma art\nChange-Id: Idc5f0af24af17dcae286dee290f729ba61693a11\n"
    },
    {
      "commit": "882ed6bcccf60e55b61aa1860d9a15a7e92af959",
      "tree": "98df8864025233a5ab2de61e27789308aadd969d",
      "parents": [
        "2b40dd35c65ad644d448611750f5b577e97594a1"
      ],
      "author": {
        "name": "Steve Austin",
        "email": "steveaustin@google.com",
        "time": "Fri Jun 08 11:40:38 2018 -0700"
      },
      "committer": {
        "name": "Steve Austin",
        "email": "steveaustin@google.com",
        "time": "Thu Jun 21 16:22:12 2018 -0700"
      },
      "message": "Add low_4gb MemMap and remove ashmem support for Fuchsia\n\nTest: Tested with Fuchsia build system go/fuchsia-android\nChange-Id: I61b09614d6f4d24bf9c975baa1f34c6b5735ca3d\n"
    },
    {
      "commit": "ea341d2830298b666d7c6faf369d2fc3fe94fef8",
      "tree": "ae20b9be257fcd1bcef71698ed06307c2932cced",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 11 10:33:37 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 13:06:42 2018 +0100"
      },
      "message": "Rewrite TypeLookupTable.\n\nImprove bit-packing of the data to store twice as many bits\nof the hash as previously. Check for bucket mismatch after\nthe first partial hash conflict (previous comments alluded\nto the bucket check but it was not implemented).\n\nAvoid an unnecessary unique_ptr\u003c\u003e indirection by making the\nTypeLookupTable moveable.\n\nTest: Rely on Treehugger.\nBug: 79514364\nChange-Id: I9fa6f712b037a6e6904d09c88670966486f56621\n"
    },
    {
      "commit": "2300b2d45aba525a163688e5e8faa7448dbfcaef",
      "tree": "734e02b52a162b28f17e637320ffa08a555a8115",
      "parents": [
        "42805fa0afeefbc4fd4e3339940582bdda9c77bd"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 10 14:20:10 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 11 16:48:36 2018 -0700"
      },
      "message": "Remove MemMap dependency on libbacktrace\n\nRemove the dependency on BacktraceMap/libbacktrace for MemMap.\nThe removed code was entirely debug, but we may want to add back\nsome of it to facilitate test debugging.\n\nThis removes the dependency from libartbase on libbacktrace and\nmakes it possible to use libartbase from libdexflie without\ncausing a cyclic dependency.  This facilitates moving\nArtDexFileLoader and some other code into libartbase, and gets\nrid of some debt accumulated during all these refactorings.\n\nBug: 78652467\nTest: make -j 50 checkbuild\nChange-Id: Ic575a764817ba660b851f7d5b5c60e43f8356fea\n"
    },
    {
      "commit": "30025095524e471ec347633e39f26ed0606bea65",
      "tree": "533cbe1808445dcd4dd6d8b7dacc180fcc29b90a",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 19 14:43:29 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 24 14:39:06 2018 +0100"
      },
      "message": "Pass the fd to OatFile::Setup to avoid selinux errors.\n\nbug: 77853712\nTest: test.py\nChange-Id: I069cda5296b561284d71b067924e1bc4a8562710\n"
    },
    {
      "commit": "74b9994598f497ee3c6a72bbacad9926527f67f5",
      "tree": "b876a06735c5e729da62a42e3aa5bd4d79a6ff32",
      "parents": [
        "8a78f81a16a7c8225b48bf634b67f5697f72e15f",
        "79e2607ab50163bfdc283f4a49decec26a216df5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "message": "Merge \"Move profile dependent modules to libartbase\""
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "9c4a015cf01989597fd899011dba310b704dacaa",
      "tree": "17101dd177beb28c1d28c8eddab645bc7d1af984",
      "parents": [
        "6485701497edf2fd4e5296c3715929ad44ea9752"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 12:23:54 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 09 23:30:08 2018 +0000"
      },
      "message": "Move more runtime code to libartbase, libdexfile\n\nMove some code that logically belongs to libartbase or libdexfile to\nthose places respectively.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: Idfded5d24b40d8587011681e6235b6672846da19\n"
    },
    {
      "commit": "9992e095643f6746361df03c4c98e742d9ad5899",
      "tree": "8abf49af54ee57fc0acebf2a3d9cafd87d6ec48e",
      "parents": [
        "a5867bfeb34529dad71220046e7327cef23af207",
        "e47f60c482648172334aaca59e6c1ab7a3d42610"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 09 10:17:11 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 09 10:17:11 2018 +0000"
      },
      "message": "Merge \"Retrieve String/Class references from .data.bimg.rel.ro.\""
    },
    {
      "commit": "8ba5641ddc43fc13cdb0158bd9f3237c4a90a356",
      "tree": "4dad508f24b675e87dd31ff26e597289a329c5cc",
      "parents": [
        "66f40dbc3e56c7102820842ec49a55b70cf0e151",
        "b066d43b1d9184899aff32b1f243d092611ad9c6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 08 17:45:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 08 17:45:59 2018 +0000"
      },
      "message": "Merge \"Load ArtMethod* from .data.bimg.rel.ro entries.\""
    },
    {
      "commit": "e47f60c482648172334aaca59e6c1ab7a3d42610",
      "tree": "ae0672b12a6ad200e1c38962c77bccfc3e5cb531",
      "parents": [
        "b066d43b1d9184899aff32b1f243d092611ad9c6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 21 13:43:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 08 10:40:12 2018 +0000"
      },
      "message": "Retrieve String/Class references from .data.bimg.rel.ro.\n\nFor PIC AOT-compiled app, use the .data.bimg.rel.ro to load\nthe boot image String/Class references instead of using the\nmmapped boot image ClassTable and InternTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --pictest --npictest\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --pictest --npictest\nBug: 71526895\nChange-Id: Id5703229777aecb589a933a41f92e44d3ec02a3d\n"
    },
    {
      "commit": "b066d43b1d9184899aff32b1f243d092611ad9c6",
      "tree": "5409177f52b1f1c648297913cb0e0b2808b9048d",
      "parents": [
        "fe491c7b9cdd64ff4ccc10f6b212cb92a59fc765"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 03 13:14:37 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 08 10:40:10 2018 +0000"
      },
      "message": "Load ArtMethod* from .data.bimg.rel.ro entries.\n\nIntroduce a new .data.bimg.rel.ro section in oat files where\nwe store offsets of boot image objects from the beginning of\nthe boot image. At runtime we relocate these entries using\nthe actual boot image address to turn offsets to pointers.\n\nUse the .data.bimg.rel.ro to prepare the boot image methods\nused by HInvokeStaticOrDirect for PIC AOT app compilation.\nLoading the ArtMethod* from .data.bimg.rel.ro instead of the\n.bss avoids the initial call to the resolution trampoline.\n\nTest: Additional test in 522-checker-sharpening\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --pictest --npictest\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --pictest --npictest\nBug: 71526895\nChange-Id: Ie5f5b1f622704877b36730377146e59092e46c0c\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "c6dfc7ac7fedc5ba5bcc6aac9cd344a7496cd474",
      "tree": "8dd0a1efa4a1c59281e3752c4334a4f147345227",
      "parents": [
        "1ccfa59c180c62f88091048c3f7f65f1d511ed0c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 02 14:16:41 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 02 14:24:09 2018 +0000"
      },
      "message": "ART: Do not mmap boot image tables for non-executable oat files.\n\nFix zygote crash causing boot loop in fall-back mode (trying\nto run without boot image) by allowing loading of oat files\nthat need mmapped boot image tables as non-executable\nwithout the boot image.\n\nNo regression test provided (would require boot test).\n\nTest: Rely on TreeHugger.\nBug: 74092284\nChange-Id: Ic233ac470a2ae0151235f9b2145c4aa529348b3a\n"
    },
    {
      "commit": "0e09dfc9cbdd6c2510dbe50dba95cf9d2d815e79",
      "tree": "630d5fd5019ebb802a1f8bf0b000befcc179f902",
      "parents": [
        "d2b32234aba1cea49b7b9ba3697a1ef2f13186a6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 12 19:01:09 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 13 11:33:58 2018 -0800"
      },
      "message": "Add --compilation-reason option to dex2oat\n\nThe compilation reason is an optional metadata specifying the reason for\ncompiling the apk. If specified, the string will be embedded verbatim in\nthe key value store of the oat file.\n\nThis will allow a more precise performance monitoring based on the actual\nreason for compilation (e.g. install time vs background dexopt time).\n\nTest: dex2oat_test\nBug: 73102540\nChange-Id: I73c7fcc73e37a695f1684d9e282c7cc5be3030f8\n"
    },
    {
      "commit": "fc604a7065142b61a4d2f468ddb46733a916b4cd",
      "tree": "b529fed07e9fd9518767dd8757154693d521a0aa",
      "parents": [
        "67a3d45c89c0e43f7206936a7438dfed79fea159"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 15:43:37 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 09 13:14:53 2018 -0800"
      },
      "message": "ART: Be more robust with multidex uncompressed-dex odex files\n\nReject odex/vdex files that mix embedded and uncompressed dex files.\nThis simplifies the code and allows early detection of mismatches\nand corruption.\n\nBug: 73086368\nTest: m test-art-host\nTest: m test-art-host-gtest-oat_file_test\nTest: manual (with bug\u0027s environment)\nChange-Id: Icccb3ca29b6c5f5adefe3735c91b8b6eac113af6\n"
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\n"
    },
    {
      "commit": "c3a22aa19bbe35ff8447460b29e07d42937a39de",
      "tree": "9f795deb249eebcf573dfe07a98d70c1d52ce898",
      "parents": [
        "d3233abdf14f173bb99e3905e8543ffff845230e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 19:53:20 2018 -0800"
      },
      "message": "Add shared separate data section for compact dex\n\nAdded a shared dex data buffer for compact dex files, this buffer\nis referenced by all compact dex files in a vdex file. Repurposed\nthe existing data_off / data_size fields in the header.\n\nAfter the shared buffer is filled up, it is placed after the dex\nfiles in the oat writer and the dex file headers are fixed up to have\nthe correct offsets / sizes to the shared buffer.\n\nMotivation:\nMake it easy to deduplicate data across dexes.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I17855a0c78b20be3d323d12dedb9c695962be3ed\n"
    },
    {
      "commit": "f30752709e1131ae1a4c16f22cc7a0960c198e77",
      "tree": "c671f0ac704f7a702fed77295a1d5fe690425394",
      "parents": [
        "2e1791b74406fba9930bbe5dfa5358d2d2c07e1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 08 12:41:19 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 23 14:38:35 2018 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\"\n\nBug: 63920015\nBug: 70854754\n\nTest: oat_writer_test.cc, test.py\n\nRevert was due to userdebug/user differences, which is fixed with:\nhttps://googleplex-android-review.googlesource.com/#/c/platform/build/+/3434091/\n\nThis CL also fixes oatdump when the dex code is not in the .vdex file.\n\nThis reverts commit e166e67666bf4b23e4ed0a98f5e2bb3cae9cee7d.\n\nChange-Id: Iec924be2ff8f03cf2ebe306e7a0018241f33beb0\n"
    },
    {
      "commit": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "c1fc44972b27dcf5eef384319de2f698d088459e",
      "tree": "f30b14c921da532afadc8d6ec68c7e7c97f279c2",
      "parents": [
        "52f6cc022efdc3b380bd1d88de31660b46dfd81d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 10 14:19:36 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 10 14:24:18 2018 -0800"
      },
      "message": "ART: Fix Mmap reuse flag in vdex load\n\nOnly load with reuse\u003dtrue if there\u0027s actually a map.\n\nFollow-up to commit ec2cdf4286921131a5f9b3ed12060657ec40f636.\n\nBug: 71579677\nBug: 71804760\nTest: m test-art-host\nChange-Id: I1154942584becc4e8bb3873166479376916f2702\n"
    },
    {
      "commit": "f4bf58d9b13972117c640ea1d7bfa6e6dfc189ea",
      "tree": "a6bdf10f36796c1924e9dca6bfcf1477269c8073",
      "parents": [
        "d6b7e8c63f8eca25460f56f66dcae15eaa897ff0",
        "ec2cdf4286921131a5f9b3ed12060657ec40f636"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "message": "Merge \"Try to mmap vdex file within the address range of the ELF file.\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    }
  ],
  "next": "2c64a837e62c2839521c89060b5bb0dcb237ddda"
}
