)]}'
{
  "log": [
    {
      "commit": "679730e6c4be680b3e72b55a4200de9590641009",
      "tree": "ca7d0719aed00457a2c898cf2dc56300956ea875",
      "parents": [
        "6834d3414308e3d536bc685dbb3d60fe70186f23"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 15:06:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 15:06:48 2018 +0100"
      },
      "message": "Remove static GcRoot\u003c\u003es from Field, Method, Constructor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I648b88339995761fb81180286ef48a42bbd2f83d\n"
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "4eb1779101686c864aac0ad504b61ee1d5c4a4a8",
      "tree": "1bd0dcf4d6c8ba044f8836ddd737cb272ddf0813",
      "parents": [
        "faa7b29f1e0c311e42ab5a265cb1b17036ca5a10"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Fri Apr 06 14:26:23 2018 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Fri Apr 06 14:38:06 2018 -0700"
      },
      "message": "patchoat: Move nullptr CHECK\n\nWe now check \u0027out\u0027 for nullptr prior to dereferencing it.\n\nTest: Treehugger\nChange-Id: I4b0f871a24894107b895789a1b73b95847438dcc\n"
    },
    {
      "commit": "c7d25083a51e73bef66f15198f84767de84beb0f",
      "tree": "b7ee963b65e88fc819e2be9dbcde0cdc3e3237dc",
      "parents": [
        "ffbe188c087f9e4908c7cb77e297d26402ba6bb3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 09 12:06:45 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 09 20:22:59 2018 -0800"
      },
      "message": "ART: Make patchoat more resistant\n\nDisable relocation, disallow dex-file fallback. These are unwelcome\nwhen patching.\n\nRefactor to have one set of options.\n\nBug: 73887870\nTest: m test-art-host\nTest: Flash-wipe device, boot\nChange-Id: Ic7698cb83d1a8b4bb318af472f388dc88981c49c\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": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "88c6d26dd8686bdb366d54937a505f10f3bf1cd8",
      "tree": "2f07c4ef2144c4a909760260389d070fe22af05e",
      "parents": [
        "38321bb87c3630afaef76f312e90df5bca6a0554"
      ],
      "author": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Tue Feb 13 15:26:21 2018 -0800"
      },
      "committer": {
        "name": "Christopher Morin",
        "email": "cmtm@google.com",
        "time": "Tue Feb 20 16:35:18 2018 +0000"
      },
      "message": "patchoat: take directories instead of filenames\n\npatchoat was already ignoring the basename part of the filename passed\nto it for both --output-image-file and --output-image-relocation-file.\nWe can therefore just pass in the directories instead.\n\nBug: 72828459\nTest: make test-art-host-gtest-patchoat_test\nChange-Id: I1a699d1f6746f068078ae768d30690431578d84e\n"
    },
    {
      "commit": "ae6832f12bbbe00d79a8ea82a16584c562fb3f8b",
      "tree": "5ae3de542c0b46052e6176298279bfaa2f4c4b10",
      "parents": [
        "b1c724cc1e57878faed18cee007a26b9da7e3cf2"
      ],
      "author": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Fri Feb 09 19:12:35 2018 -0800"
      },
      "committer": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Fri Feb 16 14:00:05 2018 -0800"
      },
      "message": "Have patchoat --verify verify symlinks\n\npatchoat --verify now verifies that the vdex and oat symlinks in\n/data/dalvik-cache point to the correct vdex and oat files in /system/.\nThis is to protect attacks that would change the symlink targets.\nRefactoring of patchoat code was done too.\n\nBug: 66697305\nTest: make test-art-host-gtest-patchoat_test\nTest: remove a symlink and ensure patchoat verification fails\nTest: modify a symlink and ensure patchoat verification fails\nChange-Id: I18e8f9f6363cf18ad8fa879aeb4d8c7badf679a7\n"
    },
    {
      "commit": "b348b3b28469d6afe720a202d1a8d23e7345c4ff",
      "tree": "fed067eb9a30585e3526cf876d3c3bafee35d0c3",
      "parents": [
        "8006cf1cd24d32809c937619d8d8568c8a1645ea"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 26 09:02:49 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 26 09:04:58 2018 +0000"
      },
      "message": "ART: patchoat compilation fix for mac sdk\n\nUpdates format strings for int64_t value.\n\nBug: 66697305\nTest: m -j32\nChange-Id: Icc460724264acacdbdadb691a17f187813877412\n"
    },
    {
      "commit": "754b7575e65f0e0cc8b080b268378daf54881c65",
      "tree": "335b707c603aebed1db283f8af7f0341ed8d35c0",
      "parents": [
        "d78ca5213b780ca3165acb68e44f88f639e8ca45"
      ],
      "author": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Fri Jan 19 18:04:46 2018 -0800"
      },
      "committer": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Thu Jan 25 13:12:14 2018 -0800"
      },
      "message": "patchoat: add ability to verify relocated .art files\n\nPatchoat can verify that a relocated .art file hasn\u0027t been modified\nafter generation using the --verify flag.\n\nTest: adb shell /system/bin/patchoat --verify \\\n        --input-image-location\u003d/system/framework/boot.art \\\n        --output-image-file\u003d/data/dalvik-cache/arm64/system@framework@boot.art \\\n        --instruction-set\u003darm64\nBug: 66697305\n\nChange-Id: If6ea02a0527381c520078cd6f3ae2c275a8a8ab1\n"
    },
    {
      "commit": "3856af0d6e09525a4e774bec729dd781a72d5549",
      "tree": "7ed02c48c7cc5c185cbdd5b4c2c135aa995ef228",
      "parents": [
        "688a46384c3a631f553fb97c349f6174d0180467"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Mon Oct 23 13:53:13 2017 -0700"
      },
      "committer": {
        "name": "Chris Morin",
        "email": "cmtm@google.com",
        "time": "Thu Jan 18 07:32:10 2018 -0800"
      },
      "message": "Reland: Enable patchoat to write image relocation files\n\nThis adds an off by default feature to patchoat whereby it can write\nimage relocation information (i.e., which offsets are patched up by\npatchoat) to .rel files. .rel file writing is enabled by specifying\nthe name of boot.art.rel file using command-line parameter\n--output-image-relocation-file\u003d...\n\nThe currently intended use case is to make the Android build process\nstore these files on the system image next to boot*.art files. At boot\ntime, in follow-up commits, these .rel files will then be used to\nverify that all differences between /system boot*.art and\n/data/dalvik-cache boot*.art files can be explained by relocation. The\ngoal is to mitigate /data/dalvik-cache boot*.art being a persistence\nvector.\n\nTest: ./art/test/testrunner/run_build_test_target.py art-gtest-debug-gc\nTest: make test-art-host-gtest-patchoat_test\nTest: ART_HEAP_POISONING\u003dtrue make test-art-host-gtest-patchoat_test\nTest: make test-art-target-gtest-patchoat_test\nTest: ANDROID_ROOT\u003dout/target/product/sailfish/system \\\n        ANDROID_DATA\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/ \\\n        out/host/linux-x86/bin/patchoat \\\n        --input-image-location\u003d\u003cfull path to\u003e/out/target/product/sailfish/dex_bootjars/system/framework/boot.art \\\n        --output-image-file\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/boot.art \\\n        --instruction-set\u003darm64 --base-offset-delta\u003d0x10000000\n        produces same boot*.art files as prior to this change\nTest: ANDROID_ROOT\u003dout/target/product/sailfish/system \\\n        ANDROID_DATA\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/ \\\n        out/host/linux-x86/bin/patchoat \\\n        --input-image-location\u003d\u003cfull path to\u003e/out/target/product/sailfish/dex_bootjars/system/framework/boot.art \\\n        --output-image-relocation-file\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/boot.art.rel \\\n        --instruction-set\u003darm64 --base-offset-delta\u003d0x10000000\n        produces no boot*.art files, but produces expected boot.art.rel files\nBug: 66697305\n\nChange-Id: Ia6b548c61429c61a62706d4021f8e6f22c49082e\n"
    },
    {
      "commit": "24e4f73f21c098e6fdffc5fc28fd3d185f94c27d",
      "tree": "5ca19b04f91a01aecfa0f78f576af78cecd6c071",
      "parents": [
        "fbe5f2f85244bf57707afb5520b2f9aa189d9d55"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 22:21:24 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 22:24:10 2018 +0000"
      },
      "message": "Revert \"Enable patchoat to write image relocation files\"\n\nThis reverts commit fbe5f2f85244bf57707afb5520b2f9aa189d9d55.\n\nTest is failing very often on the buildbots.\n\nBug: 66697305\n\nChange-Id: I9be7471b1c988bdddeca732c39b9323125e4384d\n"
    },
    {
      "commit": "fbe5f2f85244bf57707afb5520b2f9aa189d9d55",
      "tree": "ad98d2749023f6661b485b0466fc992505fa3019",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Mon Oct 23 13:53:13 2017 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jan 10 09:17:41 2018 -0800"
      },
      "message": "Enable patchoat to write image relocation files\n\nThis adds an off by default feature to patchoat whereby it can write\nimage relocation information (i.e., which offsets are patched up by\npatchoat) to .rel files. .rel file writing is enabled by specifying\nthe name of boot.art.rel file using command-line parameter\n--output-image-relocation-file\u003d...\n\nThe currently intended use case is to make the Android build process\nstore these files on the system image next to boot*.art files. At boot\ntime, in follow-up commits, these .rel files will then be used to\nverify that all differences between /system boot*.art and\n/data/dalvik-cache boot*.art files can be explained by relocation. The\ngoal is to mitigate /data/dalvik-cache boot*.art being a persistence\nvector.\n\nTest: ./art/test/testrunner/run_build_test_target.py art-gtest-debug-gc\nTest: make test-art-host-gtest-patchoat_test\nTest: make test-art-target-gtest-patchoat_test\nTest: ANDROID_ROOT\u003dout/target/product/sailfish/system \\\n        ANDROID_DATA\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/ \\\n        out/host/linux-x86/bin/patchoat \\\n        --input-image-location\u003d\u003cfull path to\u003e/out/target/product/sailfish/dex_bootjars/system/framework/boot.art \\\n        --output-image-file\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/boot.art \\\n        --instruction-set\u003darm64 --base-offset-delta\u003d0x10000000\n        produces same boot*.art files as prior to this change\nTest: ANDROID_ROOT\u003dout/target/product/sailfish/system \\\n        ANDROID_DATA\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/ \\\n        out/host/linux-x86/bin/patchoat \\\n        --input-image-location\u003d\u003cfull path to\u003e/out/target/product/sailfish/dex_bootjars/system/framework/boot.art \\\n        --output-image-relocation-file\u003dout/target/product/sailfish/dex_bootjars/system/framework/arm64/boot.art.rel \\\n        --instruction-set\u003darm64 --base-offset-delta\u003d0x10000000\n        produces no boot*.art files, but produces expected boot.art.rel files\nBug: 66697305\nChange-Id: If18814f03dba3d72ae15981625473f4da303b1d6\n"
    },
    {
      "commit": "170331f0e44a0e07fcfe0b5932517e0500f5cd1f",
      "tree": "4bb837aa3b6e19c898df23894beb61957885e985",
      "parents": [
        "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "message": "ART: Remove base/logging from heap-inl.h\n\nHide the single uncommon VLOG and remove the include. Fix up\ntransitive includes.\n\nTest: m\nChange-Id: I917df597cb62c57040c1fb0e0079df4d95e5a658\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63",
      "tree": "f92b309ddc43c2254b6067346a653170fbbf7316",
      "parents": [
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 13:26:39 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 17:52:35 2017 +0100"
      },
      "message": "Use mmapped boot image intern table for PIC app HLoadString.\n\nImplement new HLoadString load kind for boot image strings\nreferenced by PIC-compiled apps (i.e. prebuilts) that uses\nPC-relative load from a boot image InternTable mmapped into\nthe apps .bss. This reduces the size of the PIC prebuilts\nthat reference boot image strings compared to the kBssEntry\nas we can completely avoid the slow path and stack map.\n\nWe separate the InternedStrings and ClassTable sections of\nthe boot image (.art) file from the rest, aligning the\nstart of the InternedStrings section to a page boundary.\nThis may actually increase the size of the boot image file\nby a page but it also allows mprotecting() these tables as\nread-only. The ClassTable section is included in\nanticipation of a similar load kind for HLoadClass.\n\nPrebuilt services.odex for aosp_angler-userdebug (arm64):\n  - before: 20862776\n  - after: 20308512 (-541KiB)\nNote that 92KiB savings could have been achieved by simply\navoiding the read barrier, similar to the HLoadClass flag\nIsInBootImage(). Such flag is now unnecessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --pictest\nTest: testrunner.py --target on Nexus 6P.\nTest: testrunner.py --target --pictest on Nexus 6P.\nTest: Nexus 6P boots.\nBug: 31951624\nChange-Id: I5f2bf1fc0bb36a8483244317cfdfa69e192ef6c5\n"
    },
    {
      "commit": "cd87c3ee6fefc505010c795284cfc4bca076edf2",
      "tree": "074c0326206fe4a52dc8ebfa09657ef040d88022",
      "parents": [
        "39d44ba52b512cdfa7a0a2fccc7f77d28a15329e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:11:57 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:26:54 2017 +0100"
      },
      "message": "Clean up ImageHeader section getters.\n\nTest: m art-test-host-gtest\nTest: testrunner.py --host\nChange-Id: Iaea7ce6f9bc3ff3c6d9bb6fb598aa62333ebf30c\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "0c18338ebae6b3597c882887f8354b64abb5e90f",
      "tree": "fde8624a51b99ef7338784c863a9edf55dc2d08b",
      "parents": [
        "10d39085d5e064ae0afdc898eb32741a660c4b9d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 22:26:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Replace or remove some ObjectCallback Walk functions\n\nReplace with visitor functions in RegionSpace and SpaceBitmap. Remove\nold ObjectCallback version in HeapBitmap. Fix up users. Move some\nthread-safety annotations.\n\nMove ObjectCallback definition to the only remaining user (ModUnionTable).\n\nTest: m\nChange-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c\n"
    },
    {
      "commit": "51d80ccca5eb2ea0eef0de836dcc03e0545f63db",
      "tree": "14ff2bf5b9a9ca86d8a8d6f736cf27d8a1d47554",
      "parents": [
        "19df565ffcb30cb7b5217f074771078f0bb6cc1c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:05:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:04:07 2017 -0700"
      },
      "message": "ART: Refactor abort code\n\nRemove Runtime::Aborter and let Runtime::Abort set the abort message\non target.\n\nThis works around a missing tail-call optimization that leads to a\nsuperfluous frame on the call-stack when aborting.\n\nPartially reverts commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 62810360\nTest: m test-art-host\nTest: Manual inspection of abort dump\nChange-Id: Ie4efc8bbdc8b665b23081b37a11921fe26b182b4\n"
    },
    {
      "commit": "a3d27ebd2802fd6031cc928a67752541775bf52b",
      "tree": "96c4a460fbf81fd00b8c71063f5ef9ae3bc56eda",
      "parents": [
        "d38b67c9892b603f57a6b51a1b9d7f4e610158aa"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 11 13:50:59 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 14 10:29:55 2017 +0100"
      },
      "message": "ScopedFlock: Refactor it to be a subclass of FdFile.\n\nMakes callers cleaner, since they only have to worry about\ndealing with regular File objects that they know will be locked\nfor the duration of their existence. Prevents issues and other\nclunky code relating to acquire\n\nTest: scoped_flock_test, test_art_host\nBug: 36369345\n\nChange-Id: I2c9644e448acde6ddac472d88108c7d9a4e1a892\n"
    },
    {
      "commit": "b2d18fa4e33ca119654ced872c70fe198b0b2db5",
      "tree": "9f0e3ac72b9b7b08794e1ecf458620ba19437465",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 06 20:46:10 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 11:36:45 2017 -0700"
      },
      "message": "ART: Clean up asm_support.h\n\nThe includes are only ever really needed for tests. Factor out\ngeneration of the test function into asm_support_check.h\n\nFix up missing includes, mainly intern_table.h.\n\nTest: m\nTest: m test-art-host\nChange-Id: I435199e6211e368be0a06c80d8fa95b9593aca31\n"
    },
    {
      "commit": "b8cc1754535f27fff1f1cb8324a543797eaacbcd",
      "tree": "49db8fe104068092f99c0a6beaadd5101e3f2db5",
      "parents": [
        "eac4f281302c8e28622fc86354ce88ec02cf5a12"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 21:28:50 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 21:28:50 2017 -0700"
      },
      "message": "ART: Shut down runtime in patchoat\n\nWhen in a debug build, or under sanitization, shut down the runtime\nafter patching an image. This avoids tripping leak checks, while\nkeeping regular shutdown fast (similar to dex2oat).\n\nBug: 37728254\nTest: m SANITIZE_HOST\u003dtrue test-art-host\nChange-Id: I812cf0c7e60745081b3c1c0e68d4631a43783ead\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "8c19d2431f45861ca11cf5ebc4fdaf10200f2458",
      "tree": "2d376ce322be680898d55fde929e67032d4c711c",
      "parents": [
        "4e03442619834c56dbf79a3493eb8a2d91b93e7f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 06 12:35:10 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 29 16:51:26 2017 -0700"
      },
      "message": "Refactor image writer\n\nAim to have common functions for copying references and pointers.\nRequired for adding support for faster image fixups.\n\nTest: test-art-host -j32\n\nBug: 34927277\nBug: 34928633\nChange-Id: Ia654efc483b332eea3535570496bfeccd7c635ee\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\n"
    },
    {
      "commit": "4bc11d0585b8c09c57a811361e6879d62a3206ce",
      "tree": "3b8c30a615cb501932c2315bde9406de9d055ae7",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Feb 01 09:53:54 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Feb 21 15:57:51 2017 +0000"
      },
      "message": "\"Revert^4 \"Remove unused code for patching oat files.\"\n\nThis reverts commit cb6a5916cce4f18c7183fa8731446a084fb28fe5.\n\nTest: m test-art-host\nChange-Id: I8029dcc93e7fa614d8d50030362d3133caabfe54\n"
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\n"
    },
    {
      "commit": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "9cd522b50a5f0209e97a2e6bcf8c9c350d3f3f83",
      "tree": "503af07a0a6122d161a81dfed2d2e64f8e501d5a",
      "parents": [
        "c3b7bf3bcc55ec3c684210176ff6ddeb9d33ac19"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 17:05:59 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 17:08:57 2017 +0000"
      },
      "message": "Remove now unused dex_cache_resolved_types_ from ArtMethod.\n\nTest: test-art-host test-art-target\nChange-Id: I004c040da165934f74eb8b8e85e99e7c6621c2df\n"
    },
    {
      "commit": "78985875702c52657066da158c0246ef07115385",
      "tree": "c2df327bbd61e6c231effce854c0bf816fd6fe04",
      "parents": [
        "c9f76628ce1dc54f852b689ed1722b7e154b2a9d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 21:18:34 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 21:18:34 2017 +0000"
      },
      "message": "Revert \"Remove unused code for patching oat files.\"\n\noat_file_assistant_test fails on target.\n\nBug: 33192586\n\nThis reverts commit c9f76628ce1dc54f852b689ed1722b7e154b2a9d.\n\nChange-Id: Ie3b8900ed16d0f4033a76c7eb60ac8e9ad13f089\n"
    },
    {
      "commit": "c9f76628ce1dc54f852b689ed1722b7e154b2a9d",
      "tree": "6f27d109c43d5e23a8b213e48021f5cd070a17f9",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 12 15:27:45 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 17 09:34:40 2017 +0000"
      },
      "message": "Remove unused code for patching oat files.\n\npatchoat is now only used for patching images. It no longer needs to\nsupport patching of non-PIC oat files. This change removes code from\npatchoat that was specific to patching of non-PIC oat files.\n\nBug: 33192586\nTest: m test-art-host\nTest: device boots\nChange-Id: I8918a708e441493a21f25d537ed0b74748bb9641\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "58c3f6a0d15a4340c0a11ab7fbc8c4b990c64b77",
      "tree": "18788ed5f6ffb44679acaee8faff9a5caf237f13",
      "parents": [
        "e4cdd4dbcbc75e373917d22214cd431643cd3610"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 01 14:21:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 06 11:01:52 2016 -0800"
      },
      "message": "Reduce calls to DescriptorEquals\n\nStore the low 3 bits of the descriptor hash inside of class set\nentries. Compare these bits before comparing descriptors.\n\nSimpleperf interpret-only compile of facebook:\nmirror::Class::DescriptorEquals(char const*): 3.66% -\u003e 1.03%\n\nBug: 32641252\n\nTest: test-art-host\n\nChange-Id: I8d898d4ac7c95383c49401fbcd85bfde226e026c\n"
    },
    {
      "commit": "ad06b985bb8792bc82835acbe93eda8f9839c6d2",
      "tree": "4d380c3dd6c1b6cd0512ea0fad14c5616ab54d62",
      "parents": [
        "85347bd18d47066ea9a214d29cec994472ad18ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 17 16:38:59 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 17 16:43:37 2016 +0000"
      },
      "message": "Make ImageWriter and PatchOat helper classes nested.\n\nNested classes are better for encapsulation. For example,\nwe\u0027ve had an art::FixupRootVisitor in both image_writer.cc\nand patchoat.cc and we didn\u0027t get an ODR violation only\nbecause these two files are never used in the same process.\n\nTest: Rely on the TreeHugger.\nChange-Id: I39a86994923a9c0faa5f05d8c9ede982ce9c0c4c\n"
    },
    {
      "commit": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "12b58b23de974232e991c650405f929f8b0dcc9f",
      "tree": "bc08011e3b9f4c132fc605dc54d1d5f50c932a29",
      "parents": [
        "b0b2080b4cea8365052d1be973e927f8ee85f609"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Nov 01 11:55:29 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 02 16:31:04 2016 -0700"
      },
      "message": "Clean up the runtime read barrier and fix fake address dependency.\n\n- Rename GetReadBarrierPointer to GetReadBarrierState.\n- Change its return type to uint32_t.\n- Fix the runtime fake address dependency for arm/arm64 using inline\n  asm.\n- Drop ReadBarrier::black_ptr_ and some brooks code.\n\nBug: 12687968\nTest: test-art with CC, Ritz EAAC, libartd boot on N9.\nChange-Id: I595970db825db5be2e98ee1fcbd7696d5501af55\n"
    },
    {
      "commit": "3e2e2f1bfb01d9e0066fd737d2a94e1782ed8d2b",
      "tree": "d79fc7d8bbf116a8709b6bb6a755bf46cc9e771f",
      "parents": [
        "9fbeb7e4adc72bfcb5ccd42dd994f8a8be4a549f",
        "7fe56583220d813980f2241e0df13f5aa6627611"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Oct 18 09:23:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 18 09:23:04 2016 +0000"
      },
      "message": "Merge \"Fix handling of dex cache arrays for method types.\""
    },
    {
      "commit": "27b88f3a2aaaa2dd3e03706d02590a07a96d8c30",
      "tree": "02f1e5917e9f740751c046c09036bec7be170ad9",
      "parents": [
        "72288c0cce9c4f1ac02dd56b39aab097b5d4bf11",
        "f57589fd40e5b69dad5aff060ccef756507f381a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 17 22:47:01 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 17 22:47:01 2016 +0000"
      },
      "message": "Merge \"Remove logging dependency on runtime\""
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "38a4223fcc0493553d9ad324a1dc145869eb663a",
      "tree": "a55f0ae7b46175db7cd66844a614952ce4bd5ec5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1",
        "31e88225b2ef68e7f32f11186acf922c74ddabab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 20:29:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 17 20:29:37 2016 +0000"
      },
      "message": "Merge \"Move most mirror:: args to ObjPtr\""
    },
    {
      "commit": "31e88225b2ef68e7f32f11186acf922c74ddabab",
      "tree": "ca50f60634854056bb652e7c375e5ccca2def5cd",
      "parents": [
        "602142692643d8cd2c48d9aaeece26470f702e3b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 18:43:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 11:36:39 2016 -0700"
      },
      "message": "Move most mirror:: args to ObjPtr\n\nFixed possible moving GC bugs in ClinitImageUpdate class.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I0bf6578553d58b944aaa17665f1350bdf5ed15ec\n"
    },
    {
      "commit": "7fe56583220d813980f2241e0df13f5aa6627611",
      "tree": "3d89b9a43c162cfd613e7538302115d9ca3d08d0",
      "parents": [
        "cfdff144f154df876987fefb340058a975c43381"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 14 18:49:12 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 17 16:29:32 2016 +0100"
      },
      "message": "Fix handling of dex cache arrays for method types.\n\n- Add support for relocating method type dex cache arrays.\n- Add missing call to MethodTypeDexCachePair::Initialize in the\n  class_linker.\n- Fix alignment calculation for method_types in\n  DexCacheArraysLayout.\n- Removed unused MethodTypeOffset(uint32_t) method.\n\nFixes tests with --pic.\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I2bba7228762b9e9834e7659fe62090be78afdfa8\n"
    },
    {
      "commit": "f5b0f2cef8554efaa90adc6a1ae04c2b533970ed",
      "tree": "431874a41548ba5d18598a5b1b520de042e012a9",
      "parents": [
        "4c91f05a9ad59759760fb8c1543684dfdb9ab7dc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 14 01:04:26 2016 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 14 16:52:42 2016 -0700"
      },
      "message": "Ensure OpenDexFilesFromImage closes file to prevent file descriptor leak\n\n(cherry picked from commit 645e477c2ce7a59ac98bc86463826cf082a13ad8)\n\nTest: m -j32 test-art-host\nBug: 32095919\nChange-Id: I44541edeb403a508e1b9794ee09fb1f55e3f42bf\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "0e8443995af602bcc2e70dcef1d20ee48acec934",
      "tree": "2d81b8db23bea139e40e33e4e9b8c69027fb1e56",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 08 13:43:31 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 21 11:42:21 2016 +0100"
      },
      "message": "Collapse ART\u0027s AbstractMethod class into Executable\n\nAfter the OpenJDK 8 pull there is now a common base class\nfor Method and Constructor that can be used instead.\n\nMethods that are abstract on Executable but on Android\nwere implemented in AbstractMethod are now consistently\nrenamed to \"{method}Internal\", declared final and\ngiven package-protected access.\n\nFor consistency with all other private, natively\nimplemented methods, the method getDeclaredAnnotations()\nhas been renamed getDeclaredAnnotationsNative().\n\nBug: 28666126\nBug: 31052885\nTest: make test-art-host and cts run of CtsLibcoreTestCases\nChange-Id: Ibfe6af6a47fe0cfffd0859ffbe58980aeb84e053\n"
    },
    {
      "commit": "7b49e6cade09bc65b3b5f22d45fc9d0a7184e4f2",
      "tree": "36bb77d376708ba0f054c9820f4b7ed51437fbb2",
      "parents": [
        "3bac5443975cd6312e7c6282b94014db25f369d7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Sep 01 11:06:18 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 12 14:39:07 2016 +0100"
      },
      "message": "Introduce VDEX file, use it for DEX files\n\nThis patch introduces a new output file called VDEX. In the future,\nVDEX files will store pre-validated DEX files which do not need to be\nre-extracted and re-verified when recompiling, e.g. due to new\nprofiling information or after a system update.\n\nWith this CL, the OatWriter writes DEX files into the VDEX and the\nrest of its output into OAT. The OatFile class and related classes\nare updated to load the VDEX at runtime and mmap the DEX file section\nfrom it. Patchoat creates symlinks to the source VDEX files in the\ntarget directory or copies the files if passed in as file descriptors.\n\nThe feature can be disabled by setting the environment variable\nART_ENABLE_VDEX to false.\n\nTest: m test-art-host\nBug: 30937355\nChange-Id: I54dcaececf6814c258c80524ec15e2e2ef69c8dd\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23",
      "tree": "bb6e65a3434806dc58f286ee75ad3b78ba9d6c36",
      "parents": [
        "d99565069c64fefc069005286de04599dc2619b8"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 10:37:42 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 16:18:36 2016 -0700"
      },
      "message": "ART: Implement a fixed size string dex cache\n\nPreviously, the string dex cache was dex_file-\u003eNumStringIds() size, and\n@ruhler found that only ~1% of that cache was ever getting filled. Since\nmany of these string dex caches were previously 100,000+ indices in\nlength, we\u0027re wasting a few hundred KB per app by storing null pointers.\nThe intent of this project was to reduce the space the string dex cache\nis using, while not regressing on time that much. This is the first of a\nfew CLs, which implements the new fixed size array and disables the\ncompiled code so it always goes slow path. In four other CLs, I\nimplemented a \"medium path\" that regresses from the previous \"fast path\"\nonly a bit in assembly in the entrypoints. @vmarko will introduce new\ncompiled code in the future so that we ultimately won\u0027t be regressing on\ntime at all. Overall, space savings have been confirmed as on the order\nof 100 KB per application.\n\nA 4-5% slow down in art-opt on Golem, and no noticeable slow down in the\ninterpreter. The opt slow down should be diminished once the new\ncompiled code is introduced.\n\nTest: m test-art-host\n\nBug: 20323084\n\nChange-Id: Ic654a1fb9c1ae127dde59290bf36a23edb55ca8e\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "75f0885d7c3d72a0351912b6d47682e1c860efdf",
      "tree": "d8a586b205ad3a502d8a007565a0140591d340ce",
      "parents": [
        "27d99ed24328509cd3df7f895ce2696a1884bb21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 08:06:07 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 21 11:26:47 2016 -0700"
      },
      "message": "ART: Rename ArtMethod JNI field\n\nThe field is multi-purpose, rename it to data and clean up\naccessors in preparation of more checks.\n\nTest: m test-art-host\nChange-Id: Ib4b84b7b1a51ca201544bc488ce8770aa858c7fd\n"
    },
    {
      "commit": "a62cb9bb6cb2278cb41ab0664191623e178c6a4f",
      "tree": "62263dac644e2d80a34a04f2649e4741a1bed6f4",
      "parents": [
        "bb8d501c9bb882a8927c6ceda07bf9577e06c3e1"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jun 30 09:18:25 2016 +0000"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jul 07 10:01:04 2016 +0000"
      },
      "message": "Revert \"Revert \"Optimize IMT\"\"\n\nThis reverts commit 88f288e3564d79d87c0cd8bb831ec5a791ba4861.\n\nChange-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115\n"
    },
    {
      "commit": "88f288e3564d79d87c0cd8bb831ec5a791ba4861",
      "tree": "dd051a7b2985d1af3fea91ad6000de4bdc701a19",
      "parents": [
        "e36389f20c83083c0aaba2dcac0888951e55cae1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:17:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:41:25 2016 +0000"
      },
      "message": "Revert \"Optimize IMT\"\n\nBug: 29188168 (for initial CL)\nBug: 29778499 (reason for revert)\n\nThis reverts commit badee9820fcf5dca5f8c46c3215ae1779ee7736e.\n\nChange-Id: I32b8463122c3521e233c34ca95c96a5078e88848\n"
    },
    {
      "commit": "badee9820fcf5dca5f8c46c3215ae1779ee7736e",
      "tree": "982948a67a88a1f9a734c935f919f8d307969f48",
      "parents": [
        "614968198625a6693666bdc1e5609e2f663f5638"
      ],
      "author": {
        "name": "Nelli Kim",
        "email": "nelli.kim@samsung.com",
        "time": "Fri May 13 13:08:53 2016 +0300"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 10:05:47 2016 -0700"
      },
      "message": "Optimize IMT\n\n* Remove IMT for classes which do not implement interfaces\n* Remove IMT for array classes\n* Share same IMT\n\nSaved memory (measured on hammerhead):\nboot.art:\nTotal number of classes: 3854\nNumber of affected classes: 1637\nSaved memory: 409kB\n\nChrome (excluding classes in boot.art):\nTotal number of classes: 2409\nNumber of affected classes: 1259\nSaved memory: 314kB\n\nGoogle Maps (excluding classes in boot.art):\nTotal number of classes: 6988\nNumber of affected classes: 2574\nSaved memory: 643kB\n\nPerformance regression on benchmarks/InvokeInterface.java benchmark\n(measured timeCall10Interface)\n1st launch: 9.6%\n2nd launch: 6.8%\n\nChange-Id: If07e45390014a6ee8f3c1c4ca095b43046f0871f\n"
    },
    {
      "commit": "e42888f9df4163303244070c65d5229d3e201742",
      "tree": "c3c3e380ed16676186040f1da6042fc2cd58e041",
      "parents": [
        "7f98c9a6babe3a21d84ce1f1e1273c99975a47f5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 14 10:49:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 27 12:45:30 2016 -0700"
      },
      "message": "Write conflict tables in image\n\nAdd image sections for runtime methods and conflict tables. This\nmakes it that we do not need to fake up a length prefixed array\nfor runtime methods.\n\nReduces .art private dirty and PSS.\n\nSystem wide .art PSS goes from 32.5MB to 30.5MB after system boot.\n\nBusiness card .art private dirty goes from 588K to 504K.\n\nIncreases image size by ~100K.\n\nBug: 27906566\n\n(cherry picked from commit cda9386add68d94697449c6cb08b356747e55c21)\n\nChange-Id: I38cbe3150c3eeb385b8cad7cf93614e3980f4162\n"
    },
    {
      "commit": "a13abbac97d38d726f9e7d5d786b571a5d37c227",
      "tree": "aec05c6218144261c55dbd64f9c97f555bc5202c",
      "parents": [
        "121c8a6494f2224830ed0ca33df5af0d8c077647"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 21 10:23:16 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 21 12:01:48 2016 -0700"
      },
      "message": "Fix heap check.\n\nPreviously, we only checked the image we were patching. This did not\nwork if the referent was in another image. Fixed the DCHECK to check\nall the boot images.\n\nBug: 28286961\n\n(cherry picked from commit 488849c584337a1aae8413a1d1e0fad8043bf672)\n\nChange-Id: If2e8e48b500935d0969e8673816d28218888bd13\n"
    },
    {
      "commit": "d12f9c13599a6b5893cffd02c9b8d35b4db93bf3",
      "tree": "342ff38f30c85e0ac997fe3eb8401c3e3e0ee8db",
      "parents": [
        "20eef176101924d5047895214bad4e73b8ae35ec"
      ],
      "author": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Tue Mar 22 10:06:33 2016 +0600"
      },
      "committer": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Thu Mar 31 10:17:18 2016 +0600"
      },
      "message": "ART: Save or erase the file even if I/O failed\n\nIt should close the file in any case.\n\nChange-Id: Idb7db15bfecb0ac47839be3544cc2dce91096d7b\nSigned-off-by: Serdjuk, Nikolay Y \u003cnikolay.y.serdjuk@intel.com\u003e\n"
    },
    {
      "commit": "ec1514a91a34586aca3fd75d1565ad5992c54929",
      "tree": "a6b4df93baa8775eac5c7170391a5b94cca93bc4",
      "parents": [
        "895375bb30716a488bf7b8234e900d1e15de1d21"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 17 21:32:45 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 18 15:27:47 2016 -0700"
      },
      "message": "Add patchoat check that input oat file has patch section.\n\nDo this check before opening the output file in case this could be\ncausing the file to become truncated.\n\nBug: 27723864\n\n(cherry-picked from commit 99503b9805def2ed7d4fe4bf285c6fdd8ddce6ed)\n\nChange-Id: Icf71016adae5404e4f8588f2f5e23da6405ef2e7\n"
    },
    {
      "commit": "7a1c0148a9bfbd15132c949f7758719027e9deb4",
      "tree": "ebd69eee5596e32bf18381801224a23bac809b4a",
      "parents": [
        "275f97e225f534582b446eb7b9eb00c6757255d9"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 17 15:59:38 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 17 15:59:38 2016 -0700"
      },
      "message": "Remove TEMP_FAILURE_RETRY for unlink\n\nunlink(2) does not generate EINTR error\n\nChange-Id: I546b00a61b8ffcbd43b01f5ae6ff31f335be00ab\n"
    },
    {
      "commit": "6eb6a39bdcf669655190d40d20f8d2e663b262f4",
      "tree": "1b56bd9527b56c8d24598245de0597bbb4f73d50",
      "parents": [
        "0665090c880ec22655ff8b82084746c4407ea792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 10 20:18:37 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 12 16:26:03 2016 -0800"
      },
      "message": "ART: Simplify patchoat\n\nRemoved unused configurations. Cut out cruft that isn\u0027t used anymore\nsince multi-image. Make it smaller to not require new selinux\npermissions for OTAs.\n\nSplit up the main function, to make the flow clearer for image vs\napp/oat.\n\nBug: 25612095\nBug: 26317072\n\n(cherry picked from commit 02bc0b70beedfe258c2147c2b4a205fbf3d6eebc)\n\nChange-Id: Ieb55bd1a13cbb44fd0e2979a8a61a509df9c1e7e\n"
    },
    {
      "commit": "4a26f17b055cadc949c3e9fdfa637fe5656339d9",
      "tree": "d3cee26249b5ac72c57a7125ae2a73765bf77d96",
      "parents": [
        "caef579e906abc5c3174ba65e5205ea7fd5c44ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 26 14:26:18 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 26 17:49:12 2016 -0800"
      },
      "message": "Remove GetImageRoots read barrier for image relocation\n\nFixes CC assertion that failed if an app image was loaded when the GC\nwas running.\n\nBug: 26786304\nChange-Id: I47bea7b4b947332b57be2e2db604c2c25d92b7e2\n"
    },
    {
      "commit": "fbc31087932a65e036a153afab3049dc5298656a",
      "tree": "c728b9039a71db3be9cae888ad5e1afc31f34a13",
      "parents": [
        "c7f4e3a5aeaa23342b4e03b0d751f60ac5c5815c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 24 11:59:56 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 14:22:15 2016 -0800"
      },
      "message": "Revert \"Revert \"Load app images\"\"\n\nThis reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c.\n\nBug: 22858531\n\nChange-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295\n"
    },
    {
      "commit": "1bc977cf2f8199311a97f2ba9431a184540e3e9c",
      "tree": "580a02752d8e447f6dce7cce01386c7e2a9a87f4",
      "parents": [
        "f7fd970244f143b1abb956e29794c446e4d57f46"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "message": "Revert \"Load app images\"\n\nFails when a method is duplicated (see test 097-duplicate-method)\n\nBug: 22858531\n\nThis reverts commit f7fd970244f143b1abb956e29794c446e4d57f46.\n\nChange-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20\n"
    },
    {
      "commit": "f7fd970244f143b1abb956e29794c446e4d57f46",
      "tree": "aac1f57ac70747957f609bb46305dfeca87645a1",
      "parents": [
        "95005291d8ebdd1d2ac58ffc5181fef4fbbf2383"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 11:16:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 22 15:01:55 2016 -0800"
      },
      "message": "Load app images\n\nSupport in-place patching of the app image based on boot image\nlocation and app oat location. Only loads for art run test so far\nsince we do not automatically generate app images for app installs.\n\nN5 maps launch time (~200 runs):\nBefore: 930ms\nAfter: 878.18ms\nAfter + image class table: 864.57ms\n\nTODO:\nOatdump support.\nStore class loaders as class roots in image.\n\nBug: 22858531\n\nChange-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1\n"
    },
    {
      "commit": "ea0831f60d26e3297e6463634a9fbb6384f00661",
      "tree": "6b970dced071048d59d1857e4703521d76566f99",
      "parents": [
        "664d7cfba0e734ba8917c260e424ea559b7e8f9f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 29 13:17:37 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 06 10:17:01 2016 -0800"
      },
      "message": "Re-enable adding intern table to image\n\nChanged intern table to have a stack of tables similarily to\nClassTable. Adding an image intern table adds to the front of the\nintern table stack. Also some cleanup.\n\nBug: 26317072\n\nChange-Id: I7bbf9485b5dbbbf3707fed21e29de3beccfb8705\n"
    },
    {
      "commit": "0d2af30df4000101b7c4b4e6b6350460a141edc8",
      "tree": "a2599d57c060914fb10c9ba06f96ccd8a17a42e0",
      "parents": [
        "376a6f3dbae7b71a6fc2c339ec416d3407277308"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 04 17:38:06 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 04 19:08:51 2016 -0800"
      },
      "message": "Fix multi-image TODOs in patchoat.\n\n- Reinstated checks that were still valid (one check was removed).\n- Removed unused path that patches only images.\n\nBug: 26317072\n\n(cherry-picked from commit e271fe1e2797205c57c052212c32139234f781ea)\n\nChange-Id: I0e140cb110abbfa469c097c805657ecfdc8552d6\n"
    },
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "ceb07b3285eaab350a8cd12f7d74be3e40a255dd",
      "tree": "4d5f7c1ab47ea6b8399d2112b69a818a0519b2de",
      "parents": [
        "836ee764c86892aff1dca6b0f8b27e32c7374cc7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 10 09:33:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 10 10:28:19 2015 -0800"
      },
      "message": "Revert \"Revert \"Add support for LZ4 compressed image files\"\"\n\nNeeded to call compiler_driver_-\u003eSetSupportBootImageFixup(false).\n\nBug: 22858531\n\nThis reverts commit 83d4d72aa0e4170209ab50c67ba22e46b71352c1.\n\nChange-Id: Iaed6a810a0c088f1f2c57cf2f12087f3978a3de1\n"
    },
    {
      "commit": "83d4d72aa0e4170209ab50c67ba22e46b71352c1",
      "tree": "5444d2ba3e49c4bc8f7997ed0886264f53902ca6",
      "parents": [
        "c6f41b5b3ca3d7ac3c12ad3995ffef4e831973a0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 08:26:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 08:26:32 2015 +0000"
      },
      "message": "Revert \"Add support for LZ4 compressed image files\"\n\nTentative. Looks like it breaks image_test for hammerhead:\nart/compiler/linker/arm/relative_patcher_thumb2.cc:36] Check failed: target_offset \u0026 1u \u003d\u003d 1u (target_offset \u0026 1u\u003d0, 1u\u003d1) \n\nBug: 22858531\n\nThis reverts commit c6f41b5b3ca3d7ac3c12ad3995ffef4e831973a0.\n\nChange-Id: I9bc5738a8b5c8f8bc8b73309f9420fd691bc79a9\n"
    },
    {
      "commit": "c6f41b5b3ca3d7ac3c12ad3995ffef4e831973a0",
      "tree": "c32c87552120021c091540e010722eb317d04441",
      "parents": [
        "d7d23eec777a8b84909f3364700fc1e8a075e5a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 04 15:38:50 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 09 11:40:19 2015 -0800"
      },
      "message": "Add support for LZ4 compressed image files\n\nAdded dex2oat option --image-format\u003d(store|lz4). Using lz4 means\nthat the main image section (all data other than header and bitmap)\nare stored in a compressed state.\n\nN5 results:\nBoot image size: 8067128 -\u003e 2827605\nDecompression time 18.93ms\nDecompression rate: 426MB/s\n\nPatchoat is not currently supported since it maps the source image\ndirectly. In order to support compressed images we would need to\nrecompress the output image and then write it back out to a file.\nAlso there are not many cases where we would want to patch a\ncompressed image since they are going to be dirty memory when\nuncompressed anyways. Might as well just patch as we are loading.\n\nBug: 22858531\n\nChange-Id: I8c54ccf73408273011161a61bb891736735074d9\n"
    },
    {
      "commit": "41dc8cef5d1f86e3ade30b8aaf20d29d8d0c712b",
      "tree": "000d84e9b7d321b86349da577f744977ecf191d6",
      "parents": [
        "bf0e73604f836e3b8f7d6481e83110c3426350b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 04 15:07:48 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 04 15:19:10 2015 -0800"
      },
      "message": "Combine class sets when writing a class table\n\nReduces the boot.art size since we allocate a new class set with the\ndefault load factor. The load factor in the combined class table is\nhigher to pruning classes, this reduces the size of the boot image.\n\nAlso fixes the hypothetical case where the class table being written\nhas multiple class sets.\n\nBoot.art size\nBefore: 8122368\nAfter: 8044544\n\nSlight cleanup in patchoat.cc.\n\nBug: 22858531\nChange-Id: I31b3ea2004ece6f6c853ee906074bb2792dee958\n"
    },
    {
      "commit": "208a5cb383dd9dcd3461f89b74af5df67dc8d794",
      "tree": "9ed531a445d24a7685e577b1c5822e50dc1c1b1d",
      "parents": [
        "5337bbfbd1cd502bb2842698a6b2a543ab6a6c32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 02 15:44:07 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 03 16:29:03 2015 -0800"
      },
      "message": "Store class tables in the image\n\nReduces how long it takes to load an application image.\n\nN5 boot.art size\nBefore: 8007680\nAfter: 8122368\n\nAlso reduces boot time by how long AddImageClassesToClassTable\nused to take (~20ms).\n\nChanged class hashes to be uint32_t to fix cross compilation. We need\nserialized hash tables to be valid with different pointer sizes.\n\nBug: 22858531\n\nChange-Id: I463fc83f499ff75f509e80c253a55b9116ee5b89\n"
    },
    {
      "commit": "4b00d3415beb7a816a3b5948f43f3b2e4b856ea8",
      "tree": "a54f8c2704fbe9b9ffebdc0f1984a777beb80ac0",
      "parents": [
        "991842a5273d20695dd5f35eb9a9e28c386c5b4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 13 10:42:08 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 16 15:05:36 2015 -0800"
      },
      "message": "Refactor some patching logic\n\nReduce duplication since app images in-place relocation will require\nthis code also.\n\nBug: 22858531\nChange-Id: Ibb901b67267e27ef3bc2a0baff77189d4dcd018a\n"
    },
    {
      "commit": "073b16c8429d302d5413e8ffc488b03b8f770780",
      "tree": "a417fd8042df8c0a9621f9097643ecaede4deeab",
      "parents": [
        "5165b6ba1fda85d769c5092a65f07bcfffb0b3e7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 10 14:13:23 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 11 19:22:33 2015 -0800"
      },
      "message": "Image space cleanup for app images\n\nRemoved Heap::GetImageSpace, added Heap::GetBootImageSpace.\n\nGeneralized some logic in the class linker for image spaces.\n\nBug: 22858531\n\nChange-Id: Ib3e12bb061a247e232d3dc93b0d6b35eb3a34d25\n"
    },
    {
      "commit": "42bddcec51e71d206f6d3b30a881ee6c1d50a63c",
      "tree": "2035b4dd7dcbefbe83c04d41987e520eeb8798f0",
      "parents": [
        "78232f2482e71fef255796633da68bb769baa93a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 15:16:56 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 17:18:58 2015 -0800"
      },
      "message": "Add low_4gb support to MapFile and MapFileAtAddress\n\nMotivation is to use this for loading app images in low 4GB at a\nnon fixed address.\n\nAdded test.\n\nBug: 22858531\nChange-Id: I0f79a4a7bfbfbdfc112e41b25c8682b1fb932ab7\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "059ef3ddb2088f926ac452889e0953fdcd646a5e",
      "tree": "36067457d7e4aba11be908ddd235734d29b7c4f2",
      "parents": [
        "f71ad9ede9ae322a897e8fe407208dc35c5dee65"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 13:54:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 16:11:21 2015 -0700"
      },
      "message": "Always visit object class from VisitReferences\n\nWe don\u0027t want to unload classes which have instances.\n\nSlight increase in CMS GC time from ~6.5s to ~7.3s on\nEvaluateAndApplyChanges.\n\nBug: 22720414\nChange-Id: I467ff9c9d55163d2a90b999aef3bdd7b3f648bac\n"
    },
    {
      "commit": "5e289b2bca7a0bc67fcf00a1017d70db8b363113",
      "tree": "c27deaacb51e42ff6407d521b9834e637bfa465a",
      "parents": [
        "4b7b5fcda0f97ed874de0ccd18940030e6c71f04",
        "0eb76d2603a52d3e8759fcf480586886d70433d1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 17 17:20:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 17 17:20:46 2015 +0000"
      },
      "message": "Merge \"Make patchoat match offset when given a patched image\""
    },
    {
      "commit": "cf36d493124d8048efa0bd6f67d817ce3cd6b725",
      "tree": "fac1336f54ea477ce1afe2e99a04b68db38c7ac8",
      "parents": [
        "1cad8c7c63b600a3da83bf05fb645e08ac8fafc0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 12 19:27:26 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 10:04:42 2015 +0100"
      },
      "message": "ART: Compress LengthPrefixedArray on 32-bit targets.\n\nPreviously, the LengthPrefixedArray\u003cArtMethod\u003e on 32-bit\ntargets contained a 64-bit length field followed by the\nArtMethod elements with size only a multiple of 4, not 8.\nConsequently, an odd-length array broke the alignment for\nthe following array which would have the 64-bit length\nplaced at an unaligned address.\n\nTo fix that, we make the length field 32-bit and explicitly\npass the alignment information to the LengthPrefixedArray.\nThis also makes the 32-bit boot image a bit smaller.\nOn Nexus 5, AOSP, ToT, the field section is 11528B smaller\nand the method section is 21036B smaller. 64-bit targets\nshould see the same savings for the field section but no\ndifference for the methods section.\n\nChange-Id: I3e03e7b94129025c8a1c117c27645a34dec516d2\n"
    },
    {
      "commit": "0eb76d2603a52d3e8759fcf480586886d70433d1",
      "tree": "8d38a89d6de7be77c437c9df12bf646b793ba639",
      "parents": [
        "4500fcbe682d666a24c2e8f6e0cb90cfb35d3fa3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 11 18:03:47 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 14 19:34:57 2015 +0000"
      },
      "message": "Make patchoat match offset when given a patched image\n\nPreviously if we gave patchoat a patched image and a already patched\n(but improperly relocated) oat file it would not correctly patch the\noat file to the same offset as the image.\n\nBug: 22599792\nBug: 23119724\nChange-Id: I8773022bd75c2e0b7eb529893b147cbd8792bcad\n"
    },
    {
      "commit": "54d220eb9cc51215d75b9e0fe921b94bebbb3fd6",
      "tree": "fe08749dea3ca6cad97bce48416beb37203efdf5",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 30 16:20:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 18:15:22 2015 -0700"
      },
      "message": "Move ArtFields and ArtMethods to be a length prefixed array\n\nFixes race conditions between changing method and fields arrays\nbeing seen in the wrong order by the GC.\n\nBug: 22832610\nChange-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "7bf2b4f1d08050f80782217febac55c8cfc5e4ef",
      "tree": "61b26b116454c5a114ac4b2f55c71153be7a9d43",
      "parents": [
        "569e81e500725f52116b7d0342ec80a6d1e0089b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 10:11:59 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 14:22:19 2015 +0100"
      },
      "message": "Revert \"Revert \"Remove interpreter entrypoint in ArtMethod.\"\"\n\nThe start of the interned strings in the image was not aligned\nproperly, now that ArtMethods just need to be word aligned.\n\nThis reverts commit 7070ccd8b6439477eafeea7ed3736645d78e003f.\n\nbug:22242193\n\nChange-Id: I580c23310c33c239fe0e5d15c72f23a936f58ed1\n"
    },
    {
      "commit": "569e81e500725f52116b7d0342ec80a6d1e0089b",
      "tree": "c09e96441fa483fc8ba7f6ef2ead5e2aa137d951",
      "parents": [
        "d5bd4fdd46dce3c33abf17376fbceadcc1aff547",
        "7070ccd8b6439477eafeea7ed3736645d78e003f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:42:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 09:42:05 2015 +0000"
      },
      "message": "Merge \"Revert \"Remove interpreter entrypoint in ArtMethod.\"\""
    },
    {
      "commit": "7070ccd8b6439477eafeea7ed3736645d78e003f",
      "tree": "e32dca6b4342ce7b42952e0d9150a85fba361562",
      "parents": [
        "fa2c054b28d4b540c1b3651401a7a091282a015f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "message": "Revert \"Remove interpreter entrypoint in ArtMethod.\"\n\nBuild failures on bots. Investigating.\n\nThis reverts commit fa2c054b28d4b540c1b3651401a7a091282a015f.\n\nChange-Id: Id65b2009aa66cb291fb8c39758a58e0b0d22616c\n"
    }
  ],
  "next": "d5bd4fdd46dce3c33abf17376fbceadcc1aff547"
}
