)]}'
{
  "log": [
    {
      "commit": "5db5d67e5f88c5762f02651cb6d30ce675721c87",
      "tree": "8ce9eecb4262cadcb5b367ec8cb79cd11d6ec103",
      "parents": [
        "9ee6fe008dcbb3f1a5373bb587d16f115883183a",
        "3856af0d6e09525a4e774bec729dd781a72d5549"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 18 17:29:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 18 17:29:15 2018 +0000"
      },
      "message": "Merge \"Reland: Enable patchoat to write image relocation files\""
    },
    {
      "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": "f6a8a557e0e3099a2c458a81a4b48623989330a5",
      "tree": "e82439e60546643d34b888fd79c04ae7b4d899c0",
      "parents": [
        "1372c9772d37f43147d3791c998173811f04594c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 15 18:10:50 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 18 14:47:33 2018 +0000"
      },
      "message": "Set runtime hidden API access flags\n\nThe hiddenapi tool encodes new access flags into boot class path\ndex files, but we do not want to use those at runtime. They are\ncumbersome to decode and interfere with other flags.\n\nThis patch introduces new runtime access flags kAccHiddenApiBits,\ntwo consecutive bits in the space occupied by intrinsic ordinals\nwhich are used to encode the four categories of APIs in\nHiddenApiAccessFlags::ApiList. ClassLinker converts one encoding\nto the other when a new method/field is loaded from DexFile.\n\nDexHiddenAccessFlags have been made an internal class of new\nHiddenApiAccessFlags class which contains all the code related\nto encoding/decoding these flags for both DexFile and runtime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ie055dc3440c44e8815030e652f08d9ee3dba69e5\n"
    },
    {
      "commit": "78d9ab0d831d54bda25421a961a50089a517f6ca",
      "tree": "743fa6cfea20a58b95c5afb363f8237d946790d5",
      "parents": [
        "23c6cf437b12864fb637b8cbe4018f8608135b0d",
        "f4eedfe973638ab22116acf6b85a1cf8a439db97"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 18 10:58:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 18 10:58:31 2018 +0000"
      },
      "message": "Merge changes I310e3daf,I3f662586\n\n* changes:\n  Remove blocking case from RegisterNativeAllocation.\n  Revise 004-NativeAllocations test.\n"
    },
    {
      "commit": "23c6cf437b12864fb637b8cbe4018f8608135b0d",
      "tree": "03ceb08c7dc1e6b1e2fba6f87043664017b1bda3",
      "parents": [
        "7c6137448f21e48d8a6dc917393b32930096223e",
        "f4ed7e8b19b24444a7cdd600a8c211aafd3bc0d3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 17 23:19:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 17 23:19:33 2018 +0000"
      },
      "message": "Merge \"Fix misc issues with non-generated-code fault handlers\""
    },
    {
      "commit": "f147a3f896e0726e3a4d47e7092e0cc6930c559e",
      "tree": "333e0c95e207fd1ff876a5b178ef83c0533b9937",
      "parents": [
        "bfd1d2d0559966d7d3d9a22e1645da86289603e9",
        "66c9df1ed77f9da986dcf87f6b9bc1a2e86c3385"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 17 21:38:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 17 21:38:03 2018 +0000"
      },
      "message": "Merge \"Add logic for deduplicating in dexlayout\""
    },
    {
      "commit": "bfd1d2d0559966d7d3d9a22e1645da86289603e9",
      "tree": "6759e913bb3ea4f4d807b071205ce7aff4338ca3",
      "parents": [
        "688a46384c3a631f553fb97c349f6174d0180467",
        "bf92b3f2d3374eab6bc40cc41574b51aae5a3718"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 21:11:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 17 21:11:18 2018 +0000"
      },
      "message": "Merge \"Clean up art_quick_check_instance_of entrypoints.\""
    },
    {
      "commit": "f4ed7e8b19b24444a7cdd600a8c211aafd3bc0d3",
      "tree": "9d1757bf86470cfb0e1294568f7e3b13a38ffb22",
      "parents": [
        "ec0be6e7018ed686134532101ee8fed0a412857f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 17 11:52:36 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 17 11:52:36 2018 -0800"
      },
      "message": "Fix misc issues with non-generated-code fault handlers\n\nWe had a few issues preventing the use of FaultHandler with\nnon-generated code. The first was we would only call these handlers in\ngenerated code. The second is that we would segfault if we tried to\nremove any of them due to an typo\u0027d iterator name.\n\nAdded a test that this all works.\n\nTest: ./test.py --host -j50\nBug: 72064989\nChange-Id: I0d4d5235ac7c1c165a4a14dfbda72ef7060772f3\n"
    },
    {
      "commit": "bf92b3f2d3374eab6bc40cc41574b51aae5a3718",
      "tree": "e61d010ac4ce27810d0d34ffeca694a46c2a2fd5",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 17 18:11:30 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 17 18:19:32 2018 +0000"
      },
      "message": "Clean up art_quick_check_instance_of entrypoints.\n\nTest: Rely on TreeHugger.\nChange-Id: I848b8b711ac6bfa90999701a518e2e70b42c3d57\n"
    },
    {
      "commit": "91c04897159dd2b23bc731421b43d887956dc360",
      "tree": "20f638c520dce0d6a5f836400ed8b523aa2e44a8",
      "parents": [
        "a4377a8bc2254b675c6245645159bf292603f76a",
        "e73550ddf8a8d8d22998476f8c16f90461af91fa"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 16:31:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 17 16:31:23 2018 +0000"
      },
      "message": "Merge \"Make libdexfile usable from libunwind\""
    },
    {
      "commit": "e73550ddf8a8d8d22998476f8c16f90461af91fa",
      "tree": "b486127cd046e2d940b619a953779073c1c7836a",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 16 12:35:41 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 13:55:36 2018 +0000"
      },
      "message": "Make libdexfile usable from libunwind\n\nCan not depend on libutils as that causes build cycle.\nUse just jni_headers instead.\n\nMake the library available in vendor builds.\n\nFill one of the basic dex Open methods which does not\ndepend on the ART runtime.\n\nAdd some needed definitions to elf.h for libunwind.\n\nBug: 66919073\nTest: m test-art-host-gtest\nChange-Id: Ie3a42c127a19c1b986934723688e9f8903ba8fb9\n"
    },
    {
      "commit": "66c9df1ed77f9da986dcf87f6b9bc1a2e86c3385",
      "tree": "b4dbd3e9be729b7dc2e305d44d608379dddc701b",
      "parents": [
        "34554c9a6aadd66845a25d1b23a64759f6692e32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 14:45:20 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 16:24:41 2018 -0800"
      },
      "message": "Add logic for deduplicating in dexlayout\n\nAdded logic for dedeplicating blobs, this is only used for code items\nin compact dex for now. This currently provides 0.74% code size\nreduction on golem\n\nDisabled for now since quickening is fragile and does not play well\nwith deduped code items currently.\n\nFuture work is to fix quickening and dedupe after quickening to get\nthe most code size savings.\n\nTest: test-art-host-gtest\nBug: 63756964\n\nChange-Id: Iec770d9c1f5171288aca8329a6ca6992375101bc\n"
    },
    {
      "commit": "34554c9a6aadd66845a25d1b23a64759f6692e32",
      "tree": "d19388fbe0aafeea033ef9d2daf38c84d3b2d97a",
      "parents": [
        "e28567f36f559f5ba7aa70fbe6341ce3e30987db",
        "8740c66cbfbeb3b7f306279c843650c3b18f2dca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 22:54:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 22:54:46 2018 +0000"
      },
      "message": "Merge \"Use efficient encoding for compact dex code item fields\""
    },
    {
      "commit": "e28567f36f559f5ba7aa70fbe6341ce3e30987db",
      "tree": "60da09a6821743091cddd5924bf790bd1b6afac0",
      "parents": [
        "bac1f5f35adbe89ad5f40315d86df7d927fc65e2",
        "fc49fecbc59330cccf2c17dd2b011153c0f6bda1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 22:30:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 22:30:03 2018 +0000"
      },
      "message": "Merge \"Revert^3 \"Ensure that methods requiring interpreter entrypoint always have it.\"\""
    },
    {
      "commit": "fc49fecbc59330cccf2c17dd2b011153c0f6bda1",
      "tree": "d430a8412d277b7807d1225c7ac33ecfc59bbfa9",
      "parents": [
        "4b3dec38319a8d4af51e401ca13987cf0c2dd98d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 22:28:36 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 22:28:36 2018 +0000"
      },
      "message": "Revert^3 \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThis reverts commit 4b3dec38319a8d4af51e401ca13987cf0c2dd98d.\n\nReason for revert: Failing on debuggable-gcstress\n\nBug: 62821960\nChange-Id: Id143ffa2d9c379566328a03f3cbce1713ae31e51\nTest: None\n"
    },
    {
      "commit": "bac1f5f35adbe89ad5f40315d86df7d927fc65e2",
      "tree": "e7e2c4f4b6373440952343f915441b1dddd9d93c",
      "parents": [
        "3dcbac8fb6c483e67e22826555cc3f26b9f76ed9",
        "4b3dec38319a8d4af51e401ca13987cf0c2dd98d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 20:38:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 20:38:06 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Ensure that methods requiring interpreter entrypoint always have it.\"\""
    },
    {
      "commit": "3dcbac8fb6c483e67e22826555cc3f26b9f76ed9",
      "tree": "60da09a6821743091cddd5924bf790bd1b6afac0",
      "parents": [
        "3b7916d83ff013145705cc0734a5645162cd781b",
        "77ef93baca92ca0477568eb2f9141477d1e89080"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 20:21:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 20:21:01 2018 +0000"
      },
      "message": "Merge \"Make ClassLoaderContextTest pass when OUT_DIR is used\""
    },
    {
      "commit": "8740c66cbfbeb3b7f306279c843650c3b18f2dca",
      "tree": "f6c095c184fdf3e5fb2f243acdc818ce20e928a5",
      "parents": [
        "dcbe96b23b8be48d4cce799caf5a9a207b137f06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 14:50:02 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 11:24:02 2018 -0800"
      },
      "message": "Use efficient encoding for compact dex code item fields\n\nUse a compact format for compact dex code items. In the common case,\nthere are only 4 bytes worth of fields.\n\nThis is accomplished by shrining the fields and adding an optional\npreheader before each code item that describes fields that don\u0027t fit\nin the fast path case. The preheader may use up to 12 extra bytes.\nExperiments showed that the preheader is only non empty for ~1% of\ncode items.\n\nCompactDex code item:\n0-12 bytes: Optional preheader\n\u003cCode item pointer\u003e\n4 bits: register size\n4 bits: ins size\n4 bits: outs size\n4 bits: tries size\n11 bits: num code item units\n5 bits: preheader flags\n[Dex Instructions]\n\nStandard dex code item:\nSee: https://source.android.com/devices/tech/dalvik/dex-format\n\u003cCode item pointer\u003e\n16 bits: register size\n16 bits: ins size\n16 bits: outs size\n16 bits: tries size\n32 bits: num code item units\n[Dex Instructions]\n\nAlso change code item alignment to be 2 byte aligned for code items\nthat don\u0027t have payload instructions that require 4 byte alignments.\n\nResults (on golem).\nThe CL reduces vdex size by an average of 4.3%. Interpreter performance\nis 0.3-1% slower, but may be noise.\n\nTest: test-art-host\n\nBug: 63756964\n\nChange-Id: I836fd098063dd1573a3dfb6ac465a6d33d2cb2c9\n"
    },
    {
      "commit": "4b3dec38319a8d4af51e401ca13987cf0c2dd98d",
      "tree": "a145d8fd79e74952b7b395018ccc4818b4a5417d",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sun Jan 14 05:59:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 18:41:17 2018 +0000"
      },
      "message": "Revert^2 \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThe code in test 067-preemptive-unpark is able to cause a method to\nhave a null entrypoint. This is a valid (though rare) state. The check\nwe had did not account for it and failed. Made the DCHECK explicitly\nallow for null entrypoints.\n\nThis makes the check consistent with the code around lines 363 and 398\nlower in the function.\n\nThis reverts commit c971f6e06a43e70a2d86cb4b3ad0e13a9ae9a06c.\n\nReason for revert: fixed issue causing test 067 and others to fail.\n\nTest: ./test.py --host -j50\nTest: ./test/testrunner/testrunner.py -j50 -t 067-preemptive-unpark\n\nBug: 62821960\n\nChange-Id: I537e05fd52fa4c8859d4102ac9475cacd75d7437\n"
    },
    {
      "commit": "77ef93baca92ca0477568eb2f9141477d1e89080",
      "tree": "ab9baf48673e808e44aff6dad0526bb204e1fb8d",
      "parents": [
        "52f6cc022efdc3b380bd1d88de31660b46dfd81d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 11:18:31 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 18:23:50 2018 +0000"
      },
      "message": "Make ClassLoaderContextTest pass when OUT_DIR is used\n\nIf one uses OUT_DIR when building android and it is not a subdirectory\nof ANDROID_BUILD_TOP then the ClassLoaderContextTest cannot be run\nsuccessfully from make. We change the test so it will print an error\nand pass anyway in a situation to make testing easier.\n\nTest: OUT_DIR\u003d/something/not/near/tree ./test.py --host -j50\nBug: 72042237\nChange-Id: Ic55d161350f064facbdb6329c20ab53c96067a1b\n"
    },
    {
      "commit": "a7db026ff647eefb589043dbb55bbf28637755e8",
      "tree": "7e8c2ac3b279483405191b417bdcf03e892e6b27",
      "parents": [
        "2b9c35be35a759ba2032692648f5bbcb1e7e78c8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:13:35 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:17:09 2018 +0000"
      },
      "message": "Add a new runtime option for target SDK version\n\nSDK version can be set through VMRuntime, but we also need a way\nof setting it in dex2oat.\n\nBug: 64382372\nTest: make test-art-host\nChange-Id: I82b9360be59a8bc1984006379d8011d50a0199c3\n"
    },
    {
      "commit": "f4eedfe973638ab22116acf6b85a1cf8a439db97",
      "tree": "069f788a9e70dab0016ec87a4508ee9eccbb72d3",
      "parents": [
        "f12a1b04ce205555bd938fb580efff78a4d9cec6"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Dec 29 14:48:42 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 16 15:56:13 2018 +0000"
      },
      "message": "Remove blocking case from RegisterNativeAllocation.\n\nTo avoid causing jank for dubious reasons.\n\nTest: art/test/testrunner/testrunner.py -b -t 004-NativeAllocations --host\nTest: vogar --mode host libcore/luni/src/test/java/libcore/libcore/util/NativeAllocationRegistryTest.java\n\nBug: 70831911\n\nChange-Id: I310e3daf5bd3b65097b6011d6a96fb42ac50132b\n"
    },
    {
      "commit": "2b9c35be35a759ba2032692648f5bbcb1e7e78c8",
      "tree": "4825fdb4a4ecd27922dc9c945b30423534e67010",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 12 15:44:43 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 15:32:12 2018 +0000"
      },
      "message": "Introduce new build tool: hiddenapi\n\nNew tool `hiddenapi` iterates over all class members inside given\nDEX files and modifies their access flags if their signatures\nappear on one of two lists - greylist and blacklist - provided as\ntext file inputs. These access flags denote to the runtime that\nthe marked methods/fields should be treated as internal APIs with\nrestricted access.\n\nTwo bits of information are encoded in the DEX access flags. These\nare encoded as unsigned LEB128 values in DEX and so as to not\nincrease the size of the DEX, different modifiers were chosen to\ncarry the information under different circumstances.\n\nFirst bit is encoded as the inversion of visibility access flags\n(bits 2:0). At most one of these flags can be set at any given time.\nInverting these bits therefore produces a value where at least two\nbits are set and there is never any loss of information.\n\nSecond bit is encoded differently for each given type of class\nmember as there is no single unused bit such that setting it would\nnot increase the size of the LEB128 encoding.\n - Bit 5 for fields as it carries no other meaning\n - Bit 5 for non-native methods, as `synchronized` can only be set\n   on native methods\n - Bit 9 for native methods, as it carries no meaning and bit 8\n   (native) will make the LEB128 encoding at least two bytes long\n\nThis tool is meant to be applied on boot class path DEX files and\nas such, this encoding is not part of the DEX specification and may\nchange in the future. Access flags returned by ClassDataItemIterator\nare stripped of these hidden flags and thus fully transparent to the\nruntime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ifc237ff8a35a8b470b7fc682a9cb879370d1e6e9\n"
    },
    {
      "commit": "13a92d5273d1a362fb54c95ec143cc5fff68f28f",
      "tree": "179a430862e5afd4beae38cccab3d1ac04d1ee9e",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208",
        "fb6b0b1b04081f9ef7a240f702d8ce4e61a02e9f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 15 16:43:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 15 16:43:32 2018 +0000"
      },
      "message": "Merge \"ART: Add support for VMStack.getAnnotatedStackTrace\""
    },
    {
      "commit": "16d1870b034d10a4015ae0cfb01af901165b1f1e",
      "tree": "b42846b16f95a1b74499b8631d67707368b5d008",
      "parents": [
        "c3e60f38c81a3dd4ff49dca0f05f84a8b464004f",
        "c971f6e06a43e70a2d86cb4b3ad0e13a9ae9a06c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Jan 14 02:08:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jan 14 02:08:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Ensure that methods requiring interpreter entrypoint always have it.\"\""
    },
    {
      "commit": "c971f6e06a43e70a2d86cb4b3ad0e13a9ae9a06c",
      "tree": "9fa6be931e7bc8d0f47b0eb2d91a683ffcf1c3f1",
      "parents": [
        "94730ef9ca432b5ede81e928cffc4006911aa650"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 14 00:22:04 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 14 00:29:51 2018 +0000"
      },
      "message": "Revert \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThis reverts commit 94730ef9ca432b5ede81e928cffc4006911aa650.\n\nDebug tests failing.\nRan: test/run-test --always-clean --prebuild --compact-dex-level none --optimizing --no-relocate --runtime-option -Xcheck:jni --64 --build-with-javac-dx  067-preemptive-unpark\n\nBug: 62821960\n\nChange-Id: Ia4fb7b7b3a60879662dea50ce32b1cfb5e0a3eff\n"
    },
    {
      "commit": "8892c6bd9235e7ae697039c901aaeea1597a7473",
      "tree": "fa10893a270bad91d3503a761f140cbe9c97a74c",
      "parents": [
        "210531f8775c89feb90d430cd5b6026b4cf8ef89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 15:10:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:47 2018 +0000"
      },
      "message": "Move debug info offsets into a side table\n\nAdd a compact side table for figuring out the debug info offsets\nfor a given method index. This reduces dex size by ~1.2%.\n\nThe debug table is keyed by method index and has leb encoded\noffsets for the offsets. This means the table is smaller if debug\ninfos are encoded by method index order.\n\nTo prevent expansion for method indicies without debug info, there\nis a bitmap that specifies if a method index has a debug info offset.\n\nMotivation: Reduce code item size and allow more deduping in the\nfuture.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: Ib983e85c1727f58c97676bde275f4a9756314da0\n"
    },
    {
      "commit": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c",
      "tree": "8881cea1d86cf000f6c33b388827fe53b403b140",
      "parents": [
        "017adc29ab0384fa042fdea21cdbf6cfaf4019f2",
        "fa3db3d377bfaceb51c9a97864b17ce02538b7e0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:39:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 13 01:39:23 2018 +0000"
      },
      "message": "Merge \"Change compiler tests to have aligned code item\""
    },
    {
      "commit": "fa3db3d377bfaceb51c9a97864b17ce02538b7e0",
      "tree": "e499305451300d3a7a9a2c4e86d5392846f889e2",
      "parents": [
        "b12293f196dffe3df29a17a054565bac1b578a4f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 14:42:18 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 00:29:43 2018 +0000"
      },
      "message": "Change compiler tests to have aligned code item\n\nPreviously, the code item was not necessarily 32 bit aligned. This\ncaused bus errors on armv7.\n\nAlso create a real dexfile object instead of casting 0 initialized\nmemory to a dex file pointer. We just got lucky before that the cdex\nboolean was false.\n\nTest: test-art-target-gtest\nBug: 63756964\nBug: 71605148\n\nChange-Id: Ic7199f2b97bbd421de1d702efa5c6531ff45c022\n"
    },
    {
      "commit": "017adc29ab0384fa042fdea21cdbf6cfaf4019f2",
      "tree": "81ec402eb034df9b6a72f7a6a7946e635322c948",
      "parents": [
        "5a2492b8c0b8903ac4fe5bbb518824a91de4da47",
        "94730ef9ca432b5ede81e928cffc4006911aa650"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "message": "Merge changes from topic \"userdebug-jdwp\"\n\n* changes:\n  Ensure that methods requiring interpreter entrypoint always have it.\n  Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f",
      "tree": "092a24b5bbe671d6a15cfa265f45f7416bb8411a",
      "parents": [
        "b12293f196dffe3df29a17a054565bac1b578a4f",
        "02f6ed6bf01e1d87d8af111359f8553720bf8a92"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Jan 12 18:40:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 18:40:02 2018 +0000"
      },
      "message": "Merge changes from topic \"dex2oat-pgo\"\n\n* changes:\n  Setup PGO for dex2oat and related libraries\n  Do not call _exit() for PGO instrumentation\n"
    },
    {
      "commit": "94730ef9ca432b5ede81e928cffc4006911aa650",
      "tree": "254cb5436566b2449283574f60129287d944d814",
      "parents": [
        "2ce6fc80711af9afa3ecda8fdff6f4ed80aa3022"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 10 15:33:34 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 09:34:08 2018 -0800"
      },
      "message": "Ensure that methods requiring interpreter entrypoint always have it.\n\nThere were some situations where a method that requires an interpreter\nentrypoint could end up having an oat-entrypoint. This could cause issues\nwith debugging and single stepping inside of the code.\n\nTest: ./test.py --host -j50\nBug: 62821960\nChange-Id: I5da04dfe18898ea8dc2b92d12a9782ef5f028e54\n"
    },
    {
      "commit": "ab89892e3098d4d9ec186c6dd22d903c5835437c",
      "tree": "5cf3ec089d49e0a913cd4d38b111d0c1cfef6896",
      "parents": [
        "b612f9ad3c6a23d9eef1a86a5c29db1ac9374604"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 04 10:37:48 2018 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Jan 12 08:19:24 2018 -0800"
      },
      "message": "Do not call _exit() for PGO instrumentation\n\nBug: http://b/63768402\n\nFor PGO instrumentation, the profiles are written by an atexit callback.\nExit normally and do not call _exit()  when PGO instrumentation is\nhinted with the ANDROID_PGO_INSTRUMENTATION build flag.\n\nTest: Build and verify that the atexit() callbcak is invoked during PGO\ninstrumentation.\n\nChange-Id: I5024d965627392aee5a04e106946bb47ca48b5d6\n"
    },
    {
      "commit": "d97a2d17924bc4b19674c6ec7dd494a4dca3d70e",
      "tree": "9065f265af4eca6b3921e1d498e947747eb56fe2",
      "parents": [
        "3837c878f6e846eff19640298c3500d57bc5c69e",
        "71d3c88c37b236d197d1fc9016282505bc24bc2c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 12 15:47:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 15:47:59 2018 +0000"
      },
      "message": "Merge \"Allow mmap reuse in lower 4GB\""
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "2ce6fc80711af9afa3ecda8fdff6f4ed80aa3022",
      "tree": "9fa6be931e7bc8d0f47b0eb2d91a683ffcf1c3f1",
      "parents": [
        "1530591dbd05238236dc6dfe4bdb9118ce7ca3f7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 18 16:42:36 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 11 09:52:00 2018 -0800"
      },
      "message": "Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n\nWe need to support using a best-effort JDWP when we have the\nENABLE_JDWP attribute without the JAVA_DEBUGGABLE attribute. This is\nused on eng and userdebug builds. We do this by making the plugin try\nto change the runtime to debuggable if possible and to allow getting\nan ArtTiEnv which is a best-effort version of JVMTI by calling GetEnv\nwith (JVMTI_VERSION_1_2 | 0x4000000). This is needed since if the\nruntime isn\u0027t debuggable we cannot guarantee compatibility with the\nJVMTI specification in all cases due to compiler optimizations such as\ninlining. By creating this special version agents are able to\npositively signal that they are able to deal with this uncertainty.\n\nWe also support using openjdkjvmti without being JAVA_DEBUGGABLE. This\nis done by either only allowing the best effort ArtTiEnvs or by\nchanging the environment to be debuggable if we are loaded early\nenough.\n\nMoving the runtime to debuggable state involves deoptimizing the boot\nimage and throwing out any image files associated with non-debuggable\noat-files.\n\nBug: 62821960\nTest: ./test.py --host -j50\nTest: Manual\nTest: Build, Test debugging system_server and other processes.\nChange-Id: I2233299fceb83c76785e5de09e51eaf18b7922e8\n"
    },
    {
      "commit": "c1fc44972b27dcf5eef384319de2f698d088459e",
      "tree": "f30b14c921da532afadc8d6ec68c7e7c97f279c2",
      "parents": [
        "52f6cc022efdc3b380bd1d88de31660b46dfd81d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 10 14:19:36 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 10 14:24:18 2018 -0800"
      },
      "message": "ART: Fix Mmap reuse flag in vdex load\n\nOnly load with reuse\u003dtrue if there\u0027s actually a map.\n\nFollow-up to commit ec2cdf4286921131a5f9b3ed12060657ec40f636.\n\nBug: 71579677\nBug: 71804760\nTest: m test-art-host\nChange-Id: I1154942584becc4e8bb3873166479376916f2702\n"
    },
    {
      "commit": "52f6cc022efdc3b380bd1d88de31660b46dfd81d",
      "tree": "a11c2aa6eaf70540c5a46268b60a3544d956e04a",
      "parents": [
        "22861a9732e26e45f546c16eb1a99cd2693c2bd9",
        "797ffe58b2797b2ed9e314b56838aee4f1308c8c"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 10 19:44:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 19:44:26 2018 +0000"
      },
      "message": "Merge \"Remove extra sizeof().\""
    },
    {
      "commit": "b4182a351fceaf397c2dce1655703912b2f85437",
      "tree": "248d5d2e86db3d6f7bc4bb6980175788982117c7",
      "parents": [
        "9d402eb63cc243fa89f1b5d954f95cd149cf1437",
        "dc682aa9d0eae1a851af059434adb6f6cf8f06f8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 10 17:27:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 17:27:34 2018 +0000"
      },
      "message": "Merge \"Use 28 bits for type check bit string.\""
    },
    {
      "commit": "71d3c88c37b236d197d1fc9016282505bc24bc2c",
      "tree": "73a5d1dd00277311d88ab018acc1b8ffb0047557",
      "parents": [
        "f4bf58d9b13972117c640ea1d7bfa6e6dfc189ea"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 03 15:58:36 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 10 14:54:47 2018 +0000"
      },
      "message": "Allow mmap reuse in lower 4GB\n\nNeeded to remap parts of ELF file which has been loaded in low 4GB\n\nBug: 71579677\nTest: test-art-host-gtest\nTest: testrunner.py --host --optimizing\n\nChange-Id: Ia8002fe9aa51f185b686371fa121f5cc7f45cc47\n"
    },
    {
      "commit": "dc682aa9d0eae1a851af059434adb6f6cf8f06f8",
      "tree": "f93f00493ee5887b05b42a6a5dd99eb6794daad4",
      "parents": [
        "d6b7e8c63f8eca25460f56f66dcae15eaa897ff0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 04 18:42:57 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 10 14:30:26 2018 +0000"
      },
      "message": "Use 28 bits for type check bit string.\n\nAnd reverse the order of fields in the Class::status_. This\navoids generated code size increase:\n  - ClassStatus in high bits allows class initialization\n    check using \"status_high_byte \u003c (kInitialized \u003c\u003c 4)\"\n    which is unaffected by the low 4 bits of LHS instead of\n    needing to extract the status bits,\n  - the type check bit string in the bottom bits instead of\n    somewehere in the middle allows the comparison on ARM\n    to be done using the same code size as with the old\n    layout in most cases (except when the compared value is\n    9-16 bits and not a modified immediate: 2 bytes less for\n    9-12 bits and sometimes 2 bytes more for 13-16 bits; the\n    latter could be worked around using LDRH if the second\n    character\u0027s boundary is at 16 bits).\n\nAdd one of the extra bits to the 2nd character to push its\nboundary to 16 bits so that we can test an implementation\nusing 16-bit loads in a subsequent CL, arbitrarily add the\nother three bits to the 3rd character. This CL is only\nabout making those bits available and allowing testing, the\ndetermination of how to use the additonal bits for the best\nimpact (whether to have a 4th character or distribute them\ndifferently among the three characters) shall be done later.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 64692057\nChange-Id: I38c59837e3df3accb813fb1e04dc42e9afcd2d73\n"
    },
    {
      "commit": "f4bf58d9b13972117c640ea1d7bfa6e6dfc189ea",
      "tree": "a6bdf10f36796c1924e9dca6bfcf1477269c8073",
      "parents": [
        "d6b7e8c63f8eca25460f56f66dcae15eaa897ff0",
        "ec2cdf4286921131a5f9b3ed12060657ec40f636"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "message": "Merge \"Try to mmap vdex file within the address range of the ELF file.\""
    },
    {
      "commit": "797ffe58b2797b2ed9e314b56838aee4f1308c8c",
      "tree": "6d69622c6f715f92696cbb07c57086e5dd472658",
      "parents": [
        "ea443af9fd561ee3c3649ec98cafe8ecda077371"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 09 16:21:46 2018 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 09 18:18:49 2018 -0800"
      },
      "message": "Remove extra sizeof().\n\nImproves code readability.\n\nTest: device boots\nChange-Id: Ia1e834b57e42343dcc5e8005a1c5b03196db50c0\n"
    },
    {
      "commit": "d6b7e8c63f8eca25460f56f66dcae15eaa897ff0",
      "tree": "eb39f8cf17e2895b72dffcff0d72d878b235511f",
      "parents": [
        "ea443af9fd561ee3c3649ec98cafe8ecda077371",
        "b4f154137c9d170fb8739f8bd3882421a6e8c152"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Jan 10 01:42:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 01:42:44 2018 +0000"
      },
      "message": "Merge \"Fix calculation of non-free region count.\""
    },
    {
      "commit": "b4f154137c9d170fb8739f8bd3882421a6e8c152",
      "tree": "7f05b24596a98dc16f70da58dd5c47b58cf9067d",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Jan 05 18:29:34 2018 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jan 09 14:44:22 2018 -0800"
      },
      "message": "Fix calculation of non-free region count.\n\nCalculation of number of non-free region also included\nregion allocations for evacuation. This could have lead\nto premature denial of region allocations to mutators.\n\nDefinition of FreeLarge() function has been moved to -inl.h file.\n\nBug: 70732633\nTest: make test-art-host\nChange-Id: I98e29ca94b101254ef33cf8bca1dd71c93bb253d\n"
    },
    {
      "commit": "1530591dbd05238236dc6dfe4bdb9118ce7ca3f7",
      "tree": "ac04c8fcf7aaaceb302b2e429a29383443643d6e",
      "parents": [
        "2567a12b88b4b005508d5464dcb566f286777b3f",
        "e44ee0c3d073e00e88f3a29f2a42129c3eba84e7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 09 20:44:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 09 20:44:21 2018 +0000"
      },
      "message": "Merge \"Do not abort if we fail to allocate a thread-peer on shutdown\""
    },
    {
      "commit": "2567a12b88b4b005508d5464dcb566f286777b3f",
      "tree": "6e5fe2408f46d8b2f139d3b17dfb6709c2ae06aa",
      "parents": [
        "8e4749393e2761da6d08e447529b1bbeae60618a",
        "8bd7d1bb2858cdfebe8d00350c584b62221479a0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 09 20:44:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 09 20:44:04 2018 +0000"
      },
      "message": "Merge \"Allow map name to be empty in DumpNativeStack.\""
    },
    {
      "commit": "21cf2581844c478db3627d3e0259c205bce76ae7",
      "tree": "f74e21fe818dfe4fe40db8b774751b1a8aeaf628",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 17:09:48 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 09:26:09 2018 -0800"
      },
      "message": "Convert to StandardDex in fixup_dex_dex_file\n\nIn fixup_dex_file, run dexlayout to convert compact dex back to\nstandard dex since the output is supposed to be standard dex.\n\nFixed a bug in dexlayout where conversion from compact dex -\u003e\nstandard dex was not supported becuase the dex header was always\npreserved.\n\nTest: test/testrunner/testrunner.py  --host ---redefine-stress --compact-dex-level fast\nBug: 63756964\n\nChange-Id: Id13e8593458213e7040d053c35e8914404ae5381\n"
    },
    {
      "commit": "fb6b0b1b04081f9ef7a240f702d8ce4e61a02e9f",
      "tree": "ae24c7d7bf4493ab9dc881c7b3b95ef8f706974d",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:47:56 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 08 18:48:47 2018 -0800"
      },
      "message": "ART: Add support for VMStack.getAnnotatedStackTrace\n\nAdd Thread.CreateAnnotatedStackTrace to return an array that\ncontains an AnnotatedStackTraceElement for each stack frame,\nwith the StackTraceElement describing the frame, an array\ncontaining all objects that are locked at the described location,\nand optionally for the top frame an object the thread is blocked\non, waiting for or sleeping on.\n\nAdd a test.\n\nBug: 70538431\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 168\nChange-Id: I0d92e3d8182c4a592549a6445854816f71afd29e\n"
    },
    {
      "commit": "e44ee0c3d073e00e88f3a29f2a42129c3eba84e7",
      "tree": "65180639908c568845a2dd7402fa9c935df2cbeb",
      "parents": [
        "812d4d4091b07c83a340e775325b7f42c8521574"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 10:26:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 21:59:52 2018 +0000"
      },
      "message": "Do not abort if we fail to allocate a thread-peer on shutdown\n\nWe were aborting if we failed to allocate the \"Shutdown thread\" a\njava-peer. This can sometimes happen if there is very constrained\nmemory during shutdown for some reason. Since the thread-peer is only\nobservable in very rare situations (and the runtime is shutting down\nanyway) we will instead simply continue without it.\n\nWe also change a test that was hitting this situation to handle not\nhaving a thread peer.\n\nBug: 71623806\n\nTest: while ./test/run-test --host \\\n                            --prebuild \\\n                            --compact-dex-level none \\\n                            --optimizing \\\n                            --no-relocate \\\n                            --runtime-option -Xcheck:jni \\\n                            --pic-test \\\n                            --64 \\\n                            --build-with-javac-dx \\\n                            004-ThreadStress;\n      do; done\nTest: ./test.py --host -j50\nChange-Id: Ib159d03e9f4b0e4d5b1b071d4b85e94620679bb0\n"
    },
    {
      "commit": "8bd7d1bb2858cdfebe8d00350c584b62221479a0",
      "tree": "bd7ae503f0a4da512a1cc9f4cf166207aaa959be",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 08 11:12:40 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 08 11:12:40 2018 -0800"
      },
      "message": "Allow map name to be empty in DumpNativeStack.\n\nFor the gdb jit interface, functions in the stack trace will come from\nmaps that have no names. Print a special name for these maps and also do\nnot allow addr2line to run on these maps either.\n\nTest: Build and ran a stack through that use the jit gdb interface.\nChange-Id: I39d3f7e24a38df0a02214d1014a5d0b2e0174dd7\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\n"
    },
    {
      "commit": "4cb6347613e37c98bf40d8bb5e6583ac81f4d856",
      "tree": "065ca3d73f5f8b0a86dab92b5b4784a7e4486707",
      "parents": [
        "118c59cf6af50e128d29609c9046a4af15826976",
        "7b38e692caa474bf0470349d016ef8f4502d50b9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "message": "Merge \"ART: Take classloader into account for AttachAgent\""
    },
    {
      "commit": "118c59cf6af50e128d29609c9046a4af15826976",
      "tree": "c0f82859babac12e3e000964a328ddc2498b74bb",
      "parents": [
        "71a7b36894114d02860d2e64b9396dbd5e0b9b38",
        "fe92d1227f74a383172c0f339884c69e151fb404"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jan 08 08:11:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 08:11:23 2018 +0000"
      },
      "message": "Merge \"ART: Verifier support for VarHandles\""
    },
    {
      "commit": "71a7b36894114d02860d2e64b9396dbd5e0b9b38",
      "tree": "ceb72fb04618577004707042f4f7a9086da0dbeb",
      "parents": [
        "bf84c1bbdbfd8d1e071ac8f3d6cc09e934212b5b",
        "4131d1096ac57a29ba1939c1cf2cb74144c16c92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jan 08 08:10:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 08:10:48 2018 +0000"
      },
      "message": "Merge \"ART: Additional Atomic methods\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "7b38e692caa474bf0470349d016ef8f4502d50b9",
      "tree": "df3dbcdce59af2ecaddb124bf315132593b3eedb",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 19:18:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 05 10:16:18 2018 -0800"
      },
      "message": "ART: Take classloader into account for AttachAgent\n\nTake a classloader into account for attaching an agent, if given.\nThis will use the library path from the classloader to find the\nagent library.\n\nSwitch to libnativeloader to do the actual loading.\n\nBug: 70901841\nTest: m test-art-host\nChange-Id: I59ec55178792bc738fb06e0299522e207dd4a784\n"
    },
    {
      "commit": "b496af808eaf3af5ebac50aef4fbec33323b5016",
      "tree": "9a2a93352c34113b936335f0561ffc69c4c0a046",
      "parents": [
        "daa27bcedade7ff2ee50fbdcbec11a4291b447ee",
        "473191c4093aac1ec50bc275c588287fa37a981e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "message": "Merge \"ART: Clean up library loading\""
    },
    {
      "commit": "daa27bcedade7ff2ee50fbdcbec11a4291b447ee",
      "tree": "9b99a0a2c20052ab253e81dd6270cf06eb142865",
      "parents": [
        "70a58af9c733bc14c4573dddd282b3c02ccf4985",
        "6238c8331bf89ce35a377c6475034243a0791f28"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 17:36:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:36:37 2018 +0000"
      },
      "message": "Merge \"Remove DexFile direct accesses to CodeItem\""
    },
    {
      "commit": "70a58af9c733bc14c4573dddd282b3c02ccf4985",
      "tree": "46fe53c06014ec4809f5f4c1dbd1e1c941349619",
      "parents": [
        "9382c0d53f91f3788a5254495917898d8b61fe00",
        "2c64a837e62c2839521c89060b5bb0dcb237ddda"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 17:36:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:36:25 2018 +0000"
      },
      "message": "Merge \"Change ClassStatus to fit into 4 bits.\""
    },
    {
      "commit": "9382c0d53f91f3788a5254495917898d8b61fe00",
      "tree": "f60debd2cd618b0dcf9702cce2ceb41a7a89442f",
      "parents": [
        "183d794842338e7bf2702c5a5e9ea942586e8de7",
        "29895820587ae6fb40ce51cbe5c887de9f50f87b"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Jan 05 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:26:20 2018 +0000"
      },
      "message": "Merge \"Print peak regions allocated metric at GC perf dump\""
    },
    {
      "commit": "2c64a837e62c2839521c89060b5bb0dcb237ddda",
      "tree": "65475ed2e313ff17354e741bac7e9c85739b8b95",
      "parents": [
        "6cd0005698181e4cef2247b632d396e605d58fa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 04 11:31:56 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 05 11:27:50 2018 +0000"
      },
      "message": "Change ClassStatus to fit into 4 bits.\n\nIn preparation for extending the type check bit string from\n24 to 28 bits, rewrite ClassStatus to fit into 4 bits. Also\nperform a proper cleanup of the ClassStatus, i.e. change it\nto an enum class, remove the \"Status\" word from enumerator\nnames, replace \"Max\" with \"Last\" in line with other\nenumerations and remove aliases from mirror::Class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 64692057\nBug: 65318848\nChange-Id: Iec1610ba5dac2c527b36c12819f132e1a77f2d45\n"
    },
    {
      "commit": "183d794842338e7bf2702c5a5e9ea942586e8de7",
      "tree": "5aa95fee0bb646743e98cc87d32b5d590c85392a",
      "parents": [
        "bd018439d78f89c84df061173521dbd91666c02e",
        "809f5b1652eb68ad496af138370d2cc198510322"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jan 05 11:21:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 11:21:30 2018 +0000"
      },
      "message": "Merge \"Explicitly document functions generated with macro ART_GET_FIELD_FROM_CODE.\""
    },
    {
      "commit": "fe92d1227f74a383172c0f339884c69e151fb404",
      "tree": "c8cb4777ef1335e2ef1da22ca239524b6aa33214",
      "parents": [
        "4131d1096ac57a29ba1939c1cf2cb74144c16c92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 02 10:45:17 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 05 10:38:26 2018 +0000"
      },
      "message": "ART: Verifier support for VarHandles\n\nExtends checking of signature polymorphic methods to support VarHandle\naccessor methods.\n\nBug: 65872996\nTest: run-test --host 954\nChange-Id: I696bfdfbf1cd99f7cd6720cda5911dd4f5e66ada\n"
    },
    {
      "commit": "4131d1096ac57a29ba1939c1cf2cb74144c16c92",
      "tree": "d3ac7e0732eac24602718ee2d2af33641b4cf13e",
      "parents": [
        "bd018439d78f89c84df061173521dbd91666c02e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 14:04:42 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 05 09:34:26 2018 +0000"
      },
      "message": "ART: Additional Atomic methods\n\nA few additional methods on the Atomic class to support the\ninterpreter VarHandles implementation.\n\nMinor renaming of Atomic::FetchAnd{Or,And}.* to\nAtomic::FetchAndBitwise{Or,And}.*.\n\nMinor updates for consistency in the choice of argument names and doc\ncomments.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: Iae35286935fbb270478082fed2fe74abb7b68c57\n"
    },
    {
      "commit": "b6f3464a934910e84e9a76e9f453bec71bffed5c",
      "tree": "5b43e419a96763d272e8c034ea1489e1db99d64f",
      "parents": [
        "2f1ca4c99fe779a52bea32fab78fd6da59971eeb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 11:01:48 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 18:19:36 2018 -0800"
      },
      "message": "Ensure shutdown thread has a java peer.\n\nUsing JVMTI it is possible to be running user-supplied code both on\nthe shutdown thread and on other threads while the shutdown thread is\nrunning. Specifically some real-world JVMTI agents rely on being able\nto suspend the shutdown thread while they do cleanup work. In order to\nsupport this we will make sure that the shutdown thread is given its\nown java peer so it can be suspended by other threads.\n\nBug: 66904725\nBug: 62821960\n\nTest: ./test.py --host -j50\n\nChange-Id: I1c89537c47fd3dd41aa4c0e7f7a6940d1c5ba913\n"
    },
    {
      "commit": "6238c8331bf89ce35a377c6475034243a0791f28",
      "tree": "7de5c1baa9bfe88100b73ca055e7fbf4895ba4d5",
      "parents": [
        "a821bb1a71637dbd2e251795fce26f5f6f937299"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 09:55:13 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 15:25:47 2018 -0800"
      },
      "message": "Remove DexFile direct accesses to CodeItem\n\nMotivation: StandardDexFile and CompactDexFile should be able to a\nhave different layout for code items.\n\nAlso addressed comments from a previous CL.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I5ea7a853b8095f68b4443ded0f599f2ac5efbd3a\n"
    },
    {
      "commit": "a61e97fd3cae77ec62c3f3bbe944a7eb4bfa87bf",
      "tree": "ba69bf3d1292afd424838e462562a84f0a7760e1",
      "parents": [
        "6cd0005698181e4cef2247b632d396e605d58fa3",
        "73f21d45a41aaad1a02eecdf3bbdbf78ef599d5e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 17:59:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 04 17:59:31 2018 +0000"
      },
      "message": "Merge \"Remove CodeItem accessor functions\""
    },
    {
      "commit": "ec2cdf4286921131a5f9b3ed12060657ec40f636",
      "tree": "32f15162b6b74ed247e75eeb9b9cbe936760eca5",
      "parents": [
        "ee58c02b5959944a2db198a2d58355651ed29d53"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 08 16:21:25 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 04 17:08:50 2018 +0000"
      },
      "message": "Try to mmap vdex file within the address range of the ELF file.\n\nAdd ELF section for the vdex file and mmap it there at runtime.\nThis ensures that the data is at predictable location, which\nis needed to be able to reference it from native debug-info.\n\nThis does not change the amount of memory allocated, or the\nlocation of the data on disk.  However, it does change how\nthe memory is allocated - it replaces two allocations\n(ELF and vdex) by just one (ELF which includes the vdex).\n\nBug: 71579677\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\n\nChange-Id: Ie2abd36c8b6617a527368e71f932998bbe5ad38c\n"
    },
    {
      "commit": "809f5b1652eb68ad496af138370d2cc198510322",
      "tree": "d88f0ef90b317ae1f6d8356d132f267fa40951a2",
      "parents": [
        "3165bb09dc04b61abd04bf8e263dd85d610694e4"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 14:05:59 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 14:32:51 2018 +0000"
      },
      "message": "Explicitly document functions generated with macro ART_GET_FIELD_FROM_CODE.\n\nThe ART_GET_FIELD_FROM_CODE macro is used to generate the following\nset of functions:\n\n  art{Get,Set}\u003cKind\u003e{Static,Instance}FromCode\n  art{Get,Set}\u003cKind\u003e{Static,Instance}FromCompiledCode\n\nwhere \u003cKind\u003e is in {Byte,Boolean,Short,Char,32,64,Obj}.\n\nHowever, finding the definitions of these functions from their names\nwas difficult, as these definitions (and their name) are\ngenerated. This change explicitly mentions the name of the functions\ngenerated with macro ART_GET_FIELD_FROM_CODE in a commment, in order\nto improve their grep-ability.\n\nTest: mmma art\nChange-Id: I22bf4851c562801c491ccdea2d9d9c9f965b9a6f\n"
    },
    {
      "commit": "3165bb09dc04b61abd04bf8e263dd85d610694e4",
      "tree": "3a4e2d4b6001b2bc8e7a8860565943c285e61f63",
      "parents": [
        "a3e50959997f5c3e3b2d7e200b3b022757845f20",
        "4557b3858a66aa20e42bce937e1f0620aad880a2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 04 09:02:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 04 09:02:46 2018 +0000"
      },
      "message": "Merge \"ART: Rename Atomic::CompareExchange methods\""
    },
    {
      "commit": "473191c4093aac1ec50bc275c588287fa37a981e",
      "tree": "df5b6493b21498097c29b5c9772cd1606f1bd29c",
      "parents": [
        "a3e50959997f5c3e3b2d7e200b3b022757845f20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 03 23:27:37 2018 -0800"
      },
      "message": "ART: Clean up library loading\n\nRetrieve the library path from the classloader before attempting to\nload, instead of getting it passed down. This allows unifying said\nloading behavior for follow-up changes.\n\nFix up test code to support the new required data in classloader\nobjects.\n\nBug: 70901841\nTest: m test-art-host\nTest: device boots\nChange-Id: Iaccaeb56422877abac9f7fe6f5a17364c8adf4ca\n"
    },
    {
      "commit": "b0ddceb337f614dc2600d19b82fb4a6596aa7d4c",
      "tree": "ed9d3cb8668c54b0274653de2bbd7c90b08fa3ea",
      "parents": [
        "00359cd27da40020e0a539515590fac3a46be1e4",
        "38b8b25b7deff92627586405c80182a19e7c18f9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 03 15:47:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 03 15:47:24 2018 +0000"
      },
      "message": "Merge changes Idd405a2c,I7052da55\n\n* changes:\n  ART: Faster type check bitstring initialization.\n  Replace TypeStaticIf\u003c\u003e with std::conditional\u003c\u003e (C++11).\n"
    },
    {
      "commit": "38b8b25b7deff92627586405c80182a19e7c18f9",
      "tree": "60c804df353e436d5f783830971bd9d3112caeeb",
      "parents": [
        "ca420e49fc97983c2b49f42823bba68e3af26998"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 02 19:07:06 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 03 14:08:38 2018 +0000"
      },
      "message": "ART: Faster type check bitstring initialization.\n\nReuse depth from recursive call instead of calculating it\nrepeatedly at every level of recursion. Pass pointers by\nvalue instead of reference.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --jit\nBug: 70734806\nChange-Id: Idd405a2c3b04adbfd544639358dc562b32e4c34f\n"
    },
    {
      "commit": "ca420e49fc97983c2b49f42823bba68e3af26998",
      "tree": "caefec604b3e1dea7b4bd3dcb96fe473dab38b05",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 03 13:37:04 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 03 14:08:08 2018 +0000"
      },
      "message": "Replace TypeStaticIf\u003c\u003e with std::conditional\u003c\u003e (C++11).\n\nTest: m\nChange-Id: I7052da55bfe4d69b2ac62965689b89e4f8548056\n"
    },
    {
      "commit": "4557b3858a66aa20e42bce937e1f0620aad880a2",
      "tree": "8f34d8f014b11f17c6351bb955fcc74c940b8d16",
      "parents": [
        "90f20973356900e340998e8e2b34230e5c4c8fb0"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 11:47:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 12:45:40 2018 +0000"
      },
      "message": "ART: Rename Atomic::CompareExchange methods\n\nRenames Atomic::CompareExchange methods to Atomic::CompareAndSet\nequivalents. These methods return a boolean and do not get the witness\nvalue. This makes space for Atomic::CompareAndExchange methods in a\nlater commit that will return a boolean and get the witness value.\n\nThis is pre-work for VarHandle accessors which require both forms.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I9c691250e5556cbfde7811381b06d2920247f1a1\n"
    },
    {
      "commit": "73f21d45a41aaad1a02eecdf3bbdbf78ef599d5e",
      "tree": "88d52c615cd8ec5bd8d2fad44fddeef0911e2458",
      "parents": [
        "d096b3a09f0e7129813fb663fec5b5f131565d71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 14:26:50 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 17:53:21 2018 -0800"
      },
      "message": "Remove CodeItem accessor functions\n\nThese are replaced by the accessor helpers.\n\nBug: 63756964\nTest: test-art-host\nTest: test/testrunner/testrunner.py --host -j30\n\nChange-Id: Ic93d60b68b684eeb5f69be286b4e15b8f8f97542\n"
    },
    {
      "commit": "d096b3a09f0e7129813fb663fec5b5f131565d71",
      "tree": "0de72a4281f997a8d8ae3713734ab556c530f68b",
      "parents": [
        "e8f53e692bc45d864186aa12036d8f856e4f727d",
        "6362e233c6fddd1c18bb0fb4520c575bf190bc69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 02 22:19:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 02 22:19:20 2018 +0000"
      },
      "message": "Merge \"ART: Refactor VMStack code\""
    },
    {
      "commit": "e8f53e692bc45d864186aa12036d8f856e4f727d",
      "tree": "c2358ce03e46e4b581f7f09dae170a351f502394",
      "parents": [
        "39a5c9ad3cf431bfb75ea756bea650e6552d7aef",
        "f6e31474096a3c25b2d0c872fc120d7479b62367"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 02 21:46:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 02 21:46:32 2018 +0000"
      },
      "message": "Merge \"Fix default method verifier check for compact dex\""
    },
    {
      "commit": "f6e31474096a3c25b2d0c872fc120d7479b62367",
      "tree": "72d8cee843375af8b8c8c7919ae930c9e5df2bfd",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 13:32:08 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 11:41:47 2018 -0800"
      },
      "message": "Fix default method verifier check for compact dex\n\nAdd a feature flag and mark if the compact dex file was\ngenerated from a dex file that supported default methods or not. This\nis done to maintain the existing verifier behavior differences for\ndex files that do and don\u0027t support default methods.\n\nFixed callers to use a virtual function instead of always checking\nthe dex file version.\n\nRe-enabled run-test 975.\n\nBug: 70930171\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I46ac5d3cde0d0c9f41cbc68cccaf954b531e0edf\n"
    },
    {
      "commit": "aadcbc64c674995ccdaf686789c8d39ada9913ad",
      "tree": "2b0c9c473437e49ac3c85f8a04ce979ffced880b",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 14:05:42 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 02 09:08:00 2018 -0800"
      },
      "message": "ART: Refactor Agent into Agent and AgentSpec\n\nSeparate configuration/loading and runtime state.\n\nTest: m test-art-host\nChange-Id: I69bb91e13ef10b9e1ce313f45b0b809b913d8e10\n"
    },
    {
      "commit": "ffad66818572eb902f281057f85fa5bf031c66d5",
      "tree": "29d019b3c47ad155e911b811a9827659c912b284",
      "parents": [
        "ee821204e80b736a4c1e59c359436358b68a0671"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 02 10:18:58 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 02 10:31:09 2018 +0000"
      },
      "message": "ART: Add test for ArrayElementVarHandle offsets.\n\nFixes omission in 005ac512de3d734624a5db39bb14b71763ba730d.\n\nTest: art/test.py --host -g -j32\nBug: 65872996\nChange-Id: I085f8a56661012ca3b5a380d8c644aec88b7e441\n"
    },
    {
      "commit": "fe0daaeef3f180a876b04af30278f777593f0c42",
      "tree": "4b1b2ebb4458286f9655293ebf4feab435ab18d9",
      "parents": [
        "fbd5b0e3a37cc46116d910a0b53f52bb7a0f2b16"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 11:51:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 18:18:44 2017 +0000"
      },
      "message": "Use code item accessors in dex file verifier\n\nMotivation: Remove the code item friend keyword here.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I9f89c9a1ea5ed861f7ced6fa5546ff1c51b46b68\n"
    },
    {
      "commit": "fbd5b0e3a37cc46116d910a0b53f52bb7a0f2b16",
      "tree": "e56ce9fe2826ffe34d50c398bf1d42315c477116",
      "parents": [
        "ebe55a88b145a97a4261519a578e9ce1ba587316",
        "dc578c7e47b2db623b382932bfe4dbc6dce41aa4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 18:17:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 28 18:17:26 2017 +0000"
      },
      "message": "Merge \"Move dex exception helpers to their own file and use dex accessor\""
    },
    {
      "commit": "6362e233c6fddd1c18bb0fb4520c575bf190bc69",
      "tree": "57440ea457b460b0ccffa89bedd1f08a92d7f399",
      "parents": [
        "ebe55a88b145a97a4261519a578e9ce1ba587316"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:43:25 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 16:48:22 2017 -0800"
      },
      "message": "ART: Refactor VMStack code\n\nMake GetThreadStack generic wrt/ a function being called to generate the\nstack. In preparation for new code.\n\nBug: 70538431\nTest: m test-art-host\nChange-Id: I7e2b6583b28ad89bc645acdc9549f2f0a25ea055\n"
    },
    {
      "commit": "dc578c7e47b2db623b382932bfe4dbc6dce41aa4",
      "tree": "409e6dc0c338bf75c1ce55acfae91fe86ef3028e",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 11:51:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 13:24:11 2017 -0800"
      },
      "message": "Move dex exception helpers to their own file and use dex accessor\n\nAlso change the input argument to be a code item accessor\ninstead of a code item pointer. This removes the dependency on\nthe code item layout.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If75a168d0b5a77d08fa3c6ba38d00705158911db\n"
    },
    {
      "commit": "94c589db78da2b66bc681c6480819ca4bd4d3326",
      "tree": "dd790ffa1c358e4fa41af5468f52909bc1035cfa",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 12:43:01 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 12:45:52 2017 -0800"
      },
      "message": "ART: Mark Dbg GCs as debugger\n\nChange Heap::CollectGarbage to accept explicit GcCause, but implicitly\ndefault to kGcCauseExplicit.\n\nChange Dbg functions that run an explicit GC to set the cause to\nkGcCauseDebugger.\n\nTest: m test-art-host\nChange-Id: I53d4073fca01c1de78d14a58dff33004c7971981\n"
    },
    {
      "commit": "1d32a16f93d8bb479523fd237277ecbbff5bf1f4",
      "tree": "399e9c129d6d1bc6ca761026654711ba774879a4",
      "parents": [
        "9ad08a3ea53487066cd39fafa46b98bb70685b14",
        "55256cb60e11d4fac71affb4b9760a2931a3598d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 22 20:09:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 22 20:09:22 2017 +0000"
      },
      "message": "Merge \"Extensions to check JNI.\""
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "8b3479b6b5c69a802fec2c36ddb785f6636d53f7",
      "tree": "4260efbc89fc5a589035ee48110c0b88f68dbf3b",
      "parents": [
        "3e12798f1756198e808a44eccad92c75baafcdae",
        "b91f9c154a816620f01206e119f036d9d28ce683"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 20 20:44:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 20:44:11 2017 +0000"
      },
      "message": "Merge \"Make GetState() handle overflowed state and 0 path to root\""
    },
    {
      "commit": "b91f9c154a816620f01206e119f036d9d28ce683",
      "tree": "a63aca252021ddcfa218dc768c6ebe59412cc4f7",
      "parents": [
        "ffc3be6b4a58c1ed172a5c890f8b8583a416998f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Dec 19 15:01:28 2017 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 20 12:28:16 2017 -0800"
      },
      "message": "Make GetState() handle overflowed state and 0 path to root\n\nFix GetState() so that it deals correctly with an overflowed state in\nwhich the path to root is entirely zero. We don\u0027t try to salvage\nthe DCHECK for now. Fix the stated invariants to be more consistent\nwith the code.\n\nBug: 69564627\nTest: AOSP builds \u0026 runs. Host tests pass.\nChange-Id: Idd975f03d4292e4fc52ad7714bbb2b1b98e17f96\n"
    },
    {
      "commit": "3859966d5c0d4a2d98e6012b458ef0b7e218c9b4",
      "tree": "9c8fd69a71d9eff0f759bf4cdf16327d300bbf50",
      "parents": [
        "ffc3be6b4a58c1ed172a5c890f8b8583a416998f",
        "fbf9670f31d09c47078d43fd85ee2bda23273d26"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 20 15:04:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 15:04:09 2017 +0000"
      },
      "message": "Merge changes from topic \"alternate-jdwp\"\n\n* changes:\n  Add adbconnection plugin\n  Add fd-forwarding transport lib\n  Add support for selecting alternate JDWP implementations\n"
    },
    {
      "commit": "29895820587ae6fb40ce51cbe5c887de9f50f87b",
      "tree": "6cdc56e23e2b7491c645c89ec9bbe7f2302a4fa6",
      "parents": [
        "1e61f980e8beaa6121baecd122db17bab5429e1b"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 15 15:37:40 2017 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Dec 19 16:34:52 2017 -0800"
      },
      "message": "Print peak regions allocated metric at GC perf dump\n\nMaximum (of all GC iterations) peak regions allocated\nis printed during GC perf dump which reflects space\npressure on allocator.\n\nBug: b/69633530\nTest: Any bench with -XX:DumpGCPerformanceOnShutdown cmdline flag\nChange-Id: I0e2960825c5637955e9dfb677e5ed65ed852ba93\n"
    },
    {
      "commit": "a6615945258f003756ce7f344670a2802fad7037",
      "tree": "ebeb5b97ff910ec282c4d32104d73a4372979051",
      "parents": [
        "69b2560d6aa74b38cbbd22b8fdabbfb38e814835",
        "e166e67666bf4b23e4ed0a98f5e2bb3cae9cee7d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 19 22:55:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 19 22:55:03 2017 +0000"
      },
      "message": "Merge \"Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\""
    },
    {
      "commit": "fbf9670f31d09c47078d43fd85ee2bda23273d26",
      "tree": "c2ee763c73f3cf89cfe3aed6230c1830b27583b3",
      "parents": [
        "3979571aa1dfc907569fb7e27ab225ca89f6f86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 13:27:13 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 14:52:08 2017 -0800"
      },
      "message": "Add adbconnection plugin\n\nThis plugin will take care of creating and managing a debugger connection\nthrough the adb daemon. This involves sending DDMS messages from the\nruntime, loading the JDWP agent when required, and setting up the\nconnection. We need this since DDMS packets can be sent even if there has\nnot been a full handshake done with the JDWP agent.\n\nAdd an \u0027adbconnection\u0027 value to \u0027-XjdwpProvider:...\u0027 to allow one to\nrequest that the adbconnection plugin be used to provide JDWP\nfunctionality.\n\nBug: 62821960\nTest: Manual, Flash walleye, debug apps\n\nChange-Id: Id9bed589b7c5e3830e6cdfbfee460b091459a27b\n"
    },
    {
      "commit": "69b2560d6aa74b38cbbd22b8fdabbfb38e814835",
      "tree": "56e3e3649d35812aae5bea6bd1510c307c99b1fc",
      "parents": [
        "5b2c96bda3a816075679ff81fd61f2d6f00a0981",
        "641a3afee3e6879b71ae9fe47b92680580901a49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 19 21:36:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 19 21:36:50 2017 +0000"
      },
      "message": "Merge \"Add code_item_accessors-no_art-inl and use it in dexlist, dexdump\""
    }
  ],
  "next": "641a3afee3e6879b71ae9fe47b92680580901a49"
}
