)]}'
{
  "log": [
    {
      "commit": "8991ad0ec70a5d63a0cedb96f87b4e8bea2d2b9d",
      "tree": "5f4246e572cf54d46becc49f9f382d0044d1b797",
      "parents": [
        "5d7015cd64085068b1685d44339b4b705ef3f065"
      ],
      "author": {
        "name": "Wei Li",
        "email": "sirius.liwei@huawei.com",
        "time": "Thu Sep 13 16:43:39 2018 +0800"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 25 06:38:11 2018 +0100"
      },
      "message": "Improving ART debugging and printing VmSize when OOM occurs\n\nVmSize debugging information is added to quickly identify whether\nthe process address space or the system memory is insufficient\n\nTest: 1 Manually trigger an OOM exception\n      2 Checking whether the keyword VmSize exists in the OOM\n      exception log\n      3 art/test.py --host --64 -r\n\nSigned-off-by: Wei Li \u003csirius.liwei@huawei.com\u003e\nSigned-off-by: Jinguang Dong \u003cdongjinguang@huawei.com\u003e\n\nChange-Id: I0ea53f5136c06aba27712f95335ca722e7d30d95\n"
    },
    {
      "commit": "563ada2e5570d947ee2b96e3651ded3692be33be",
      "tree": "649679d2e1249053a98237130a9b944181aa21ef",
      "parents": [
        "a93364cbd4ebf4b8c309c4c18f30e16c8f9a8997"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 04 11:28:31 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Sep 19 16:58:49 2018 +0100"
      },
      "message": "ART: Add wrappers for membarrier and memfd_create()\n\nAdds art::membarrer() and art::memfd_create() as wrappers around the\nsimilarly named linux syscalls. These wrappers can fail due to missing\nOS support so code that uses them needs to deal with this.\n\nUpdates the JIT code cache to use art::membarrer().\n\nBug: 111199492\nTest: art/test.py --host\nChange-Id: I122746e6293e7201077e834d8a5ed7bbba45e283\n"
    },
    {
      "commit": "e496a640270c1d02b64c839dbce86eff9128d5e4",
      "tree": "897996b3d9169c87a3ff77efbcdf7a087693413a",
      "parents": [
        "ae9c6e52bb08730e2bd4a61692f7098b0ec0dafd",
        "f94117029115e183256f393e31b9aeeb15428d40"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 07 15:14:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 07 15:14:48 2018 +0000"
      },
      "message": "Merge \"ART: Remove utils.h\u0027s ParseUint \u0026 ParseInt\""
    },
    {
      "commit": "38d29fda9849b2e0e46a26a91b711e29177692cb",
      "tree": "6cd525d6c582238b2f46d2f924b2290049ae5025",
      "parents": [
        "83d04472775fb933a65f0ffddbba9dcaea58fa7e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 07 12:58:37 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 07 13:15:51 2018 +0100"
      },
      "message": "ART: Simplify cache flush calls\n\nRemove need to cast to char* for Flush{Data,Instruction}Cache.\n\nTest: Treehugger\nChange-Id: I880c327d59624a04bc2a44a741bc40756a0fd3eb\n"
    },
    {
      "commit": "f94117029115e183256f393e31b9aeeb15428d40",
      "tree": "8d04c65a5b8c96e234b70674ab27dbeefc8893f1",
      "parents": [
        "454a5c248135d94d32dd7d38b21e742661e57d67"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 17:16:57 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 17:16:57 2018 -0700"
      },
      "message": "ART: Remove utils.h\u0027s ParseUint \u0026 ParseInt\n\nUse the versions from libbase, instead. Removes a runtime-int warning.\n\nBug: 32619234\nTest: mmma art\nChange-Id: I5a9a9e2647b1d93eee6d9ea2bf37cc09390e8c16\n"
    },
    {
      "commit": "f233136f2ca25316643b7f409df7af55a762f98a",
      "tree": "a5aee0db607b4dc4d08e695426ebb74abcaabc35",
      "parents": [
        "9999327c8fbcab1d57f609457d68085ddefb7eb7"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 11 15:14:10 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 06 13:47:10 2018 +0100"
      },
      "message": "ART: Add FlushInstructionPipeline()\n\nUse membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED), where available, to\nflush CPU instruction pipelines after JIT code cache updates. This is\nneeded on architectures where TLB updates do not require a TLB\nshootdown.\n\nBug: 65312375\nBug: 66095511\nBug: 111199492\nTest: manual (requires kernel \u003e\u003d 4.16).\nChange-Id: I96811c611133ba765a546a09432c0c951ad39e10\n"
    },
    {
      "commit": "2a7867fa6bbc2a75fa4f5d8d23a173f8e5065f4d",
      "tree": "258f6edc9be4bf551234b65c8250d3bd3a8f4a8c",
      "parents": [
        "fe62f672694a70d151d0b55bbce718b5d66a5f5a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 23 17:14:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 23 17:14:34 2018 -0700"
      },
      "message": "ART: Fix CheckedCall\n\nWe use it for POSIX calls, not pthread-style calls.\n\nBug: 111766751\nTest: m test-art-host\nChange-Id: I7f8ecd70ef89ee121cb69a73c2d8847417082ef6\n"
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\n"
    },
    {
      "commit": "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": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\n"
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\n"
    },
    {
      "commit": "8c0961f9e061ee4b04c1c4ba8ad5cca13bcf884d",
      "tree": "f6e5a970a6bcc0935e150cb6c28a520bf31ba964",
      "parents": [
        "2b1a21ed3581f77f34d582507177ebce33565534"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 23 16:11:38 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 24 09:24:29 2018 -0800"
      },
      "message": "Move missed files to libdexfile\n\nReduce the dependencies on utf and utils in preparation for separate\ndirectory.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      make -j 50 dexdump2 dexlist\n\nChange-Id: Icdecf895dafec63ef903514eef79d459abc14925\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": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "3425d028568f4e467e456f1fa0b75846b078bba6",
      "tree": "a013b62ad56ba91d6c65f57dab019456628b2de4",
      "parents": [
        "844a4edc7f72e33a3b328c3d53ef710909d2273d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 03 16:22:05 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 03 21:24:28 2017 -0700"
      },
      "message": "Rename CHECK_MEMORY_CALL to CheckedCall\n\nRenamed CHECK_MEMORY_CALL to CheckedCall and moved it to utils. Will\nuse this new call for most madvise/mprotect in ART.\n\nTest: test-art-host\nBug: 66910552\n\nChange-Id: I32908012b310673a9c6488796f8009bb4432579b\n"
    },
    {
      "commit": "3f093891e55383055eecc940b724ee1f24f50123",
      "tree": "289006f142414b62066c55bc21b1a6b4d2d18656",
      "parents": [
        "f2d23eefe95c35df3c910ae02834bb725147a277"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 14 15:11:01 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 25 14:12:16 2017 -0700"
      },
      "message": "ART: Change GetAndroidRoot() handling\n\nChange ART\u0027s very static setup for the root (\u003dsystem) directory.\nThis change still prefers the value of the ANDROID_ROOT environment\nvariable. But as a second step, check the path of the running\nlibart(d) and try to derive a folder by removing the library and\nlibrary path component. Only if that fails attempt the static\n\"/system.\"\n\nThis requires a change to GetAndroidRoot\u0027s return type to std::string.\n\nAdd a test of GetAndroidRootSafe to utils_test.\n\nBug: 65679670\nTest: m\nTest: m test-art-host-gtest-utils_test\nTest: m test-art-host\nTest: device boots\nChange-Id: Ica99eef8b0ab798f951d63a326f0e599a4a8b469\n"
    },
    {
      "commit": "b8a55f8a62b1309efe52ec0290dfdcf60f34a550",
      "tree": "1f2a62ba7c4d4e95577414721cc274d0ee82fe7d",
      "parents": [
        "30744106517d64fb218ec5a96edbec797ad5a091"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 16:21:43 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 18:41:25 2017 +0100"
      },
      "message": "ART: Faster PrettyMethod().\n\nRewrite DexFile::PrettyMethod() to avoid copying strings.\nThis improves the performance, especially when requesting\nthe signature.\n\nAvoid code duplication in ArtMethod::PrettyMethod() and\ndelegate to DexFile::PrettyMethod().\n\n10 million invocations of ArtMethod/DexFile::PrettyMethod()\nfor \"void Main.main(java.lang.String[] args)\" with (+) or\nwithout (-) signature, time in ms:\n      host/32-bit  host/64-bit angler/32-bit angler/64-bit\nAM+: 10407-\u003e 5020  6374-\u003e 3302  32413-\u003e13140  17558-\u003e10003\nDF+:  7280-\u003e 4259  3881-\u003e 2828  19287-\u003e 9331  10343-\u003e 7375\nAM-:  2682-\u003e 1599  2025-\u003e 1186   7206-\u003e 4271   7447-\u003e 4166\nDF-:   861-\u003e  871   653-\u003e  640   1574-\u003e 1430   1828-\u003e 1712\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Ifb79abe1a7f4fc6adc10a34f5d49dc6681d06699\n"
    },
    {
      "commit": "120aa286ab6adf3e76a31bc61fb4e583e5158d71",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "5bfead584f56b2a1cfb69f78c385965ec57f7e8b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 05 16:03:03 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 14 17:47:25 2017 -0700"
      },
      "message": "Store layout info in dex files\n\nStore layout info for code sections inside of the oat file. This will\nbe used to advise the kernel when dex files are loaded in\na follow up CL.\n\nAdded unit test in dex2oat_test.\n\nBug: 63178181\nTest: test-art-host\n\n(cherry-picked from commit 75c5ed6e75f70002db5fa7c609137c04dd2bdf40)\n\nChange-Id: I4777506886bde42ff0affdac412a8395e8013a40\n"
    },
    {
      "commit": "367b9d8694b28896f681f00195cf4980536fe3f3",
      "tree": "fd9bc8499b8a86660da2cd00a8a09a0d9118e97b",
      "parents": [
        "0af0ec2b59e624861dc3461ba9ce192fd350fd12"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 15 18:18:39 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 17 22:00:18 2017 +0000"
      },
      "message": "Also return vdex file from DexFile.getDexFileOutputPath\n\nTest: m test-art-host\n      device boots\nBug: 33168521\n\nChange-Id: I812d5ba2d8fdab484ea40964da1e642e0bc21da4\n"
    },
    {
      "commit": "a01b5249c529829f47774d15b890b4716e935068",
      "tree": "fb5fff9aae945586eb91ffef6c2a72897ea8c544",
      "parents": [
        "7a0ab7862e61d8006d661ec80b670809068f5bb0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 27 10:15:27 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 03 10:18:19 2017 -0700"
      },
      "message": "Make base64 explicitly check dst_size for nullptr\n\nAlso moved it out of utils.h and into common_runtime_test.h since it\nis only used for tests.\n\nTest: ./test.py --host -j40\nChange-Id: Ib3c18cb510be833928482c0b2f47f9fb02933f7f\n"
    },
    {
      "commit": "31afbec96e9f9c8e58778694e74aea7ce55e1378",
      "tree": "1ad1633c75fb6c65fbb25d09fb9dcf92c4a81b8c",
      "parents": [
        "c53528a048e47ef8c51fc5c9667061ebd840adf1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 14 15:30:19 2017 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 16 05:31:59 2017 -0700"
      },
      "message": "ART: Bit intrinsics for Mterp interpreter\n\nAnother batch of interpreter intrinisics, mostly around bit\nmanipulation.  Also some formatting changes and inclusion of a\ncomprehensive list of recognized intrinisics (to assist with\ntelling what\u0027s left to do).\n\nBug: 30933338\n\nBenchmarks:\n   20% Improvement for Reversi\n   10% Improvement for Scimark2\n    3% Improvement for ChessBench\n\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nTest: art/tools/run-libcore-tests --host (edited for force -Xint)\n\nNote: Added intrinsics have existing test coverage via\n082-inline-execute, 123-inline-execute2, 565-checker-rotate,\n564-checker-bitcount, 566-checker-signum \u0026 567-checker-compare\n\nChange-Id: I29f0386e28eddba37c44f9ced44e7d5f8206bb47\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": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "888a59ed953e631e9d72e3a19eabfe114c229123",
      "tree": "f699384fc0ea23d239b5dd4caceb895c045914b6",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:41:41 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:58:35 2017 -0800"
      },
      "message": "Make jvmti tests runnable on the RI again.\n\nTest: ./test/run-test --host --jvm 932\nChange-Id: Ia35c9e2b4f93884956993dc9c5e4d041344c9680\n"
    },
    {
      "commit": "36eb313c805713c1367e5b9d73897ade1c24174b",
      "tree": "a2485977f12299a493217ead13a0cb5510c4251d",
      "parents": [
        "d713d29507fb98bea3eee9277f05422a9b641ca1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 13 16:32:38 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 24 11:29:34 2017 -0800"
      },
      "message": "Add dexoptanalyzer tool\n\ndexoptanalyzer is a command line tool which analyzes whether or not a\ngiven dex file needs to be dexopted. It is a wrapper around\nOatFileAssistant::GetDexOptNeeded and its results have a mapping to\nOatFileAssistant::DexOptNeeded.\n\nThis is needed for the management of secondary dex file. We need a way\nto retrieve the DexOptNeeded status from installd outside system server.\nWe can\u0027t simply use the system server path (as we do for the main apks)\nbecause system server can\u0027t access content writable by the apps.\n\nBug: 32871170\nTest: m test-art-(host|target)\nChange-Id: Ife1534560ca2658079d4a38a30bc8d94f35fe9c8\n"
    },
    {
      "commit": "ed015acdd0fbb1b837b3f74e8c5f624956189691",
      "tree": "b8ec86c504bf665cd59074fae49136dfe7c6c9f5",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 17:58:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 18:01:52 2016 +0000"
      },
      "message": "Flush JIT data cache when committing code.\n\nOtherwise, executing compiled code may see old data from\nthe data cache.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on arm/arm64\nTest: run-libcore-tests.sh (especially jsr166) on arm/arm64\nChange-Id: Id037c68897aa0e9ccacd4c5121f3743fb722c6f3\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": "a6a448adb226ed2bc33ba83e1a9ed1ac5c8e990d",
      "tree": "440b6e46ba70142a18f4b08d8cf58ea9a68d8d34",
      "parents": [
        "e58659aa139a6139f28e5db69391c718234e8cfd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 10:49:40 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 15:05:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Rename vdex-fd to output-vdex-fd, add input-vdex-fd.\"\"\n\nThis reverts commit d4acdd380f79f41959663d2fa442186cb4a185a8.\n\nTest: device boots, adb shell cmd package compile works.\nTest: oat_file_assistant_test\n\nbug:30937355\nChange-Id: Iad2e66fd7f28ed9c1dc3cab344df7453aab4fa56\n"
    },
    {
      "commit": "7f019717cc9632c15cba6e993fc0c3d32e487075",
      "tree": "78f70767190c3f4c22cf717c8627055445281c0d",
      "parents": [
        "a70a2e18ee0beaecb2c17a6340ce81821db36f5d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 26 16:09:13 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 26 16:09:13 2016 -0700"
      },
      "message": "Remove some unneeded header includes\n\nBug: none\nTest: Builds still work\nChange-Id: I6c83326cc12aa0e7825312b238f5e0ae694ccffc\n"
    },
    {
      "commit": "caacd11864383aac65e61be837fb1bb5f91e3878",
      "tree": "0fc2836395d93349aa2e745f31a3cb248e1fdacf",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 20 16:27:02 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 24 08:55:22 2016 -0700"
      },
      "message": "Move dex CFG dumping out of utils.cc\n\nMove CFG dumping to dexdump, the only client.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I0f39f1d5dfc446419d26d709b78d04e45616f42c\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "a59d9b228b1eda3bf71a81b6201ec64e26086c23",
      "tree": "91adf9f0e282eec50ccb28aa2dbc432a5e28d13f",
      "parents": [
        "05ce52b406dcf6b9a24287d14f0e611211e0db3d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 26 18:13:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 16:10:35 2016 -0700"
      },
      "message": "Use ObjPtr for reflection.cc/h/inl\n\nChanged Pretty helpers to use this to reduce usage of Decode. The\neventual goal is not have almost any calls to ObjPtr::Decode.\n\nMoved ObjPtr out of mirror namespace for convenience. Added more\nPoisonObjectPointers calls in class linker, thread suspension.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I44d08db5143d95ed1b65e2f00f9749ef5cf379f7\n"
    },
    {
      "commit": "9c20a14103f87a8a7ad53f7d3e863887ea4e800a",
      "tree": "1fd4b123bae008f670f806024c88d3dc404da24b",
      "parents": [
        "a51a135f114f6f0dbf7c4afd336f68b4a0d1bb7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 23 15:05:12 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 21 15:47:06 2016 -0700"
      },
      "message": "Get a basic modification of dex file working\n\nThis allows the modification of a single classes methods through\ntransformation. One must ensure that the provided dex file only\ncontains one function and does not add or remove any methods or fields\nand does not change the inheritance hierarchy in any way. The provided\ndex file must verify and there must be no frames of the old code\npresent on any thread. These constraints are not checked or verified.\nBreaking them might cause undefined behavior in all parts of the\nruntime. Code that has been inlined in any way might not be replaced.\nThis feature is extremely experimental.\n\nBug: 31455788\nTest: ./test/run-test --host 902-hello-transformation\n\nChange-Id: I35133d24f6cdafdd2af9dc9863e15ba8493fc50e\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": "bda1d606f2d31086874b68edd9254e3817d8049c",
      "tree": "db07417935fe72e99c3da60152e13f0620c7d8d7",
      "parents": [
        "d14d515df39cd963179088b8721768f9645243aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 17:43:45 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 08 10:13:47 2016 -0700"
      },
      "message": "ART: Detach libart-disassembler from libart\n\nSome more intrusive changes than I would have liked, as long as\nART logging is different from libbase logging.\n\nFix up some includes.\n\nBug: 15436106\nBug: 31338270\nTest: m test-art-host\nChange-Id: I9fbe4b85b2d74e079a4981f3aec9af63b163a461\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": "d106d9f871c957286ccdeb79c1c2a5ed41f859a6",
      "tree": "dc61a7fd80e1289777f6a991102b0fe4a2ef032d",
      "parents": [
        "99fd9f39f2cd74864bdc750a3444ddd776da534c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 16 19:22:57 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 30 09:32:49 2016 -0700"
      },
      "message": "Save environment snapshot and use at fork/exec\n\nSome applications may inadvertently or maliciously set of environment\nvariables such as LD_LIBRARY_PATH before spawning subprocesses.\nTo make this more difficult, save the environment at the time the\nruntime starts and use the saved copy anytime Exec is called.\n\nBUG: 30160149\nTEST: make test-art-{host,target}\n\nChange-Id: I887b78bdb21ab20855636a96da14a74c767bbfef\n"
    },
    {
      "commit": "9231f4e55d6e79e37880071e222c28141bf65f49",
      "tree": "929c75752d7dd5d667b5f2cdaa044ad83d0522eb",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 17:35:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 18:20:12 2016 -0700"
      },
      "message": "ART: Remove vestiges of GCC\n\nWe no longer support GCC.\n\nChange-Id: I869ac6e5dcb166747e45236a0d313c7672bbf2de\nTest: m test-art-host\n"
    },
    {
      "commit": "458ab5382b7a84e5c192d62d2fb5ca0eb08ffd02",
      "tree": "eddb0f2b8c9494bb6cf1bcc6d9b3138703dd91fb",
      "parents": [
        "36bf3a2d281892e7906d3eaf9d7455b0656c9a25"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Aug 15 16:12:57 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Aug 15 16:12:57 2016 -0700"
      },
      "message": "Remove unused GetDalvikCacheFilenameOrDie.\n\nChange-Id: I8987fa488a89865d4a5fb56dd00cc396ee33bcce\nTest: m test-art-host-gtest-utils_test32\nTest: m build-art-host-tests\nTest: m build-art-target-tests\n"
    },
    {
      "commit": "55b58b6b68727ac714ed5ce2ff2f45a33caf9368",
      "tree": "d4d02eedf7a0cb92d99e27ddae6eca2eac788692",
      "parents": [
        "066187de25e3fd2ae86bad812f514e16793caae7"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Aug 12 09:05:13 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Aug 12 12:45:05 2016 -0700"
      },
      "message": "Clean up use of GetDalvikCache.\n\nSwitch the only caller of the non-void version of GetDalvikCache that set\ncreate_if_absent true to use the void version of GetDalvikCache. Then no\ncallers of the non-void version of GetDalvikCache set create_if_absent to\ntrue, so that argument is no longer needed. And without create_if_absent,\nthere is no case when the function will abort, so the \u0027OrDie\" option is no\nlonger necessary.\n\nChange-Id: I83f60dcc8a8f3b1f91fd2971e9028f6a7dd8384d\nTest: m art-test-host\nTest: m art-test-target\n"
    },
    {
      "commit": "5dd44d0da7999ab62f09a1bf03345280811736d4",
      "tree": "18dc0029caf5791b0bf831dcc6e38f623fe14eb4",
      "parents": [
        "20b975cc5c5a1f4e6f0a8e525b5d2e63abc413df"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 02 17:20:03 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 04 18:19:02 2016 -0700"
      },
      "message": "ART: Factor out native stack dumping\n\nMove DumpNativeStack and DumpKernelStack into a new file to keep\nconcerns separated. Clean up the file.\n\nIn preparation for modifications to how we use addr2line.\n\nBug: 30351473\nTest: m test-art-host\nTest: manual host testing with a test that times out\nChange-Id: I02d5645952fe94fd8e73bcf0522721547f6cef66\n"
    },
    {
      "commit": "dc00f184b57086263587f1a1c1991336c07a8e4a",
      "tree": "3e4ad30844658b9ccc48f80def1b8de66e2e2622",
      "parents": [
        "2c30a373428b8d19bf97866d5d323c4ca2fbca72"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 14 10:10:44 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 14 13:09:51 2016 -0700"
      },
      "message": "Revert \"Revert \"Dump more dex file data in oatdump\"\"\n\nDelete runtime to fix leak before callin exit.\n\nBug: 29462018\n\nThis reverts commit 9c05578dd2306231437bd290c0f70abc2bb3b6d8.\n\nChange-Id: Ica23ba0f2d07496d0e4a3288329945f612ac3b20\n"
    },
    {
      "commit": "9c05578dd2306231437bd290c0f70abc2bb3b6d8",
      "tree": "0f9983cabba29de867051ea990221603f0ff765a",
      "parents": [
        "8e2c56252aa9527bd9a82bdd147fdc46cf5deb9c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 14 09:24:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 14 09:24:30 2016 +0000"
      },
      "message": "Revert \"Dump more dex file data in oatdump\"\n\nBreaks valgrind.\n\nBug: 29462018\n\nThis reverts commit 8e2c56252aa9527bd9a82bdd147fdc46cf5deb9c.\n\nChange-Id: If58cedcee75dd0eda8571e90d63e080a4709d773\n"
    },
    {
      "commit": "8e2c56252aa9527bd9a82bdd147fdc46cf5deb9c",
      "tree": "4b300a176d73caae6c63768e951976a4fde993ef",
      "parents": [
        "633c22de95fe6f80c0dd3176e15de4de3ee4bc79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 21 15:14:20 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 13 13:20:55 2016 -0700"
      },
      "message": "Dump more dex file data in oatdump\n\nDump some statistics for each dex file along side with strings loaded\nfrom code and dex code bytes.\n\nSample output:\nCumulative dex file data\nNum string ids: 202809\nNum method ids: 320464\nNum field ids: 162822\nNum type ids: 68151\nNum class defs: 48061\nUnique strings loaded from dex code: 51049\nTotal strings loaded from dex code: 106651\nNumber of unique dex code items: 247929\nTotal number of dex code bytes: 11090574\n\nAdded content testing to oat dump test. No significant slowdown.\n\nTEST: test-art-host\nBug: 29462018\n\nChange-Id: I60effd3087d8c427eda4ee26431d5d77165b3939\n"
    },
    {
      "commit": "b9c1b9bdd7689c0e80c64c371581f99e53749e05",
      "tree": "5357b90f2281ac4abf5a89323441a255ab35e702",
      "parents": [
        "b8e69994d10534e0f4f96878725bc53e531f2c6f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 17 17:07:52 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:10:19 2016 +0100"
      },
      "message": "Improve resolved classes saving strategy\n\nIf we already have a non empty profile file it means that we already\nsaved once the resolved classes. So there\u0027s no need to hurry up and\nstart the profile saver eagerly after 2s.\n\nBug: 27600652\n\n(cherry picked from commit c15e566b36170237f01ccefc12129c1578a02140)\n\nChange-Id: Iecc730c25eab779efccbbde66432dbbc61192e8a\n"
    },
    {
      "commit": "6406b521bed1a1cc465edc6be083ce57ba0f524e",
      "tree": "2c7382eb15e33470da65238908f67904ca868f97",
      "parents": [
        "a016ba5614054e27eada7f4815df7d4bac7ba8d8",
        "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 14:07:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 14:07:40 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\""
    },
    {
      "commit": "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "message": "Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\n\nThis reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.\n\nChange-Id: Id005096bd8063c6c602744d4476d5eb7e0d34e90\n"
    },
    {
      "commit": "a5502e31cb558c6e257d1dd1889c073a793e3d9d",
      "tree": "f6b74c93946704d3e1c9a283a4a310fe3a688673",
      "parents": [
        "4a582f864c10fce33fe9ba632aefc5e656280bc2",
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:38:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 22 22:38:28 2016 +0000"
      },
      "message": "Merge \"Revert \"Add profman tool: responsible to process profiles\"\""
    },
    {
      "commit": "3da74687e42de7d33a8e75df9bd64374e650f75e",
      "tree": "f3bf62678200380dc672647af1da136c562f60b3",
      "parents": [
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "message": "Revert \"Add profman tool: responsible to process profiles\"\n\nNeeds a profile_assistant_test fix.\n\nBug: 26719109\nBug: 26563023\n\nThis reverts commit 6caefd983a800a063b219f1d3ed71b1416cecd70.\n\nChange-Id: Ibdeb7385737dd7846ed861e0a95f083abb9aa974\n"
    },
    {
      "commit": "b7f9aa85a3e138440f392a9f0921fcaff8761d20",
      "tree": "03228d8b87a22d5127439a5d9632c57527e69301",
      "parents": [
        "32e9299fa6dbb82fc23c7b6eac6834f5081a62b1",
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 15:05:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 22 15:05:03 2016 +0000"
      },
      "message": "Merge \"Add profman tool: responsible to process profiles\""
    },
    {
      "commit": "6caefd983a800a063b219f1d3ed71b1416cecd70",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "c017318a7c5a9142b1fff9f57eb4105b1d397bbd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 01 12:06:18 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 13:55:18 2016 +0000"
      },
      "message": "Add profman tool: responsible to process profiles\n\nThis pulls out profile parsing from dex2oat into a separate tool.\nSome additional refactoring:\n- better return codes\n- dex2oat now accepts only one profile file\n\nThis is the first step towards support secondary dex files and\nextracting profiles out of the code_cache directory.\n\nBug: 26719109\nBug: 26563023\n\n(cherry picked from commit d81c289e58f4ced8ec7674fd377c356669f97227)\n\nChange-Id: I34d408faa318e866e1a23d4d04c369131ee5012b\n"
    },
    {
      "commit": "31dd3d60491148d345c1edae1ccd090a1b67dd2b",
      "tree": "57e6fc0663a39dd5abd6284adc822e8782c4bdf0",
      "parents": [
        "88f38e9b4e9ba0aca3d6fd4823be3a7226c87f33"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 16 12:21:02 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 17 13:52:33 2016 +0000"
      },
      "message": "Extend constant folding to float and double operations.\n\nChange-Id: I2837064b2ceea587bc171fc520507f13355292c6\n"
    },
    {
      "commit": "324302696c0a93511fef1310d309a54ebfb25a46",
      "tree": "3122d6ffaf46bf93364278f387e8c2ff6ff310a4",
      "parents": [
        "ba5ea7003f071f85936ee351aff46f64a56ee096"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 01 15:23:20 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 01 15:23:20 2016 +0000"
      },
      "message": "Ensure instruction cache is flushed in compiler tests with Clang.\n\nInvoke __builtin___clear_cache with Clang in\nart::CommonCompilerTest::MakeExecutable.  This fixes\n\"Illegal instruction\" failures in codegen_test on angler.\n\nFactor this logic in a function and use it in\nart::jit::JitCodeCache::CommitCodeInternal too.\n\nBug: 26786447\nChange-Id: I81fa056c8d7c6bf2168c9340deeab82231cb1084\n"
    },
    {
      "commit": "f871d466a1f20a6906d4d22f878f1f93d73ccf69",
      "tree": "9c46d31d371eb03a5d56cb7aceb5a5a625ae0fd3",
      "parents": [
        "6f68ad42bb6b22e7cf8337f76953fda44ca89405",
        "68f6289fbc1b14ed814722c023b3f343c1e59a79"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 11 14:20:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 11 14:20:52 2016 +0000"
      },
      "message": "Merge \"Don\u0027t use std::abs on INT_MIN/LONG_MIN, it\u0027s undefined.\""
    },
    {
      "commit": "68f6289fbc1b14ed814722c023b3f343c1e59a79",
      "tree": "86bf0f10e1368871e567145a0d70087cb8f74a4f",
      "parents": [
        "b7371a5517f78f61759f7e6124f2d957d974d9cd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 04 08:39:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 11 11:36:48 2016 +0000"
      },
      "message": "Don\u0027t use std::abs on INT_MIN/LONG_MIN, it\u0027s undefined.\n\nbug:25494265\n\nChange-Id: I560a3a589b92440020285f9adfdf7c9efb06217c\n"
    },
    {
      "commit": "4d87df607a0b86cdf4b2c04f61d72a60d8975ce0",
      "tree": "922e882c15633e6c700091c99864868d69822d7d",
      "parents": [
        "97f2ca08c3d9a2b1694419aea07cd64f477c0af2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 07 15:14:19 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 08 15:46:52 2016 -0800"
      },
      "message": "Improve handling of daemon threads after runtime shutdown\n\nThe main issue comes from the fact that user daemon threads are\nallowed to continue running after the runtime has shutdown. They may\nstill have a JNI env pointer. To prevent crashing if they call into\nthe env, we replace the function pointers with functions that sleep\nforever.\n\nThe other issue is that user daemon threads that are blocked in an\nART condition variable may get woken up by another user daemon inside\nof Monitor::Notify or by a spurious wakeup (i.e. SIGQUIT). To deal\nwith this issue, we check the JNI env for shutdown runtime when we\nare woken up from a condition variable wait. This check fixes test\n132 with --host --gdb --interpreter. Previously this test crashed\nsince dlclose was somehow causing a spurious futex wakeup.\n\nTODO: Investigate adding a unit test.\n\nBug: 18577101\nChange-Id: I479b38968ee9fbc4ee4b252ee2528787279972cc\n"
    },
    {
      "commit": "5e2b971e468ca73a8e10a120730b3b6f17fad408",
      "tree": "5168766339acfd7c61852ca38595fe3459b2eb81",
      "parents": [
        "b7371a5517f78f61759f7e6124f2d957d974d9cd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 18 14:10:00 2015 +0200"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 04 19:01:13 2016 +0000"
      },
      "message": "Assume the profile file was created before saving.\n\nbug: 26080105\nChange-Id: I9969a4abd8533614922076551fcbae2cdf695525\n"
    },
    {
      "commit": "4d77b6a511659f26fdc711e23825ffa6e7feed7a",
      "tree": "7ac013467a20fcdf64cb6cf4c79a8ff67dc7690a",
      "parents": [
        "66f55237679db90cb0a0a265043a787932b466f8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 01 18:38:09 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 24 12:02:12 2015 +0200"
      },
      "message": "Save profile information in a separate thread.\n\nPreviously we would save the profiling information only when the app\nwas sent to background. This missed on an important number of updates\non the jit code cache and it didn\u0027t work for background processes.\n\nBug: 26080105\n\nChange-Id: I84075629870e69b3ed372f00f4806af1e9391e0f\n"
    },
    {
      "commit": "5096e66d07db8041589518f8c5b0281d859d0817",
      "tree": "52a1d28a6286d9054d2559fea8168541612093bd",
      "parents": [
        "88b2b80aed15bb1f931cddd40e44ca525ef10018"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 08 19:25:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 15:40:31 2015 +0000"
      },
      "message": "ART: Add FdFile::Copy() to copy data from another file.\n\nAlso move utilities for inspecting file magic numbers to\nbase/file_magic.{h,cc} and drop the unused IsOatMagic().\n\nChange-Id: I2cc4dd18a5e8b9738fb386c8057faad3722bdd68\n"
    },
    {
      "commit": "1532476b2245e509f6fa2d91526a775468de5cfc",
      "tree": "1ec2c2a97ae5c2802e6a37749c995a3cb83ffdfb",
      "parents": [
        "16cabc4acd14d5a61c73cef821162e1827f08788"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 19 11:03:10 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 19 17:38:48 2015 -0800"
      },
      "message": "Use arc4random when available to select delta for image relocation.\n\nBug: 25776162\n\nChange-Id: I5a5ca5d55c231508b61d4960049ab42e19c017e2\n"
    },
    {
      "commit": "fca90a1f3b7a77778db1d2acad83af72f160be88",
      "tree": "2b09b2b8a97bc6890b612cd1455c8167b0b760d4",
      "parents": [
        "f31f9739e6cb06298604f5fb723db2ab9a8f2962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 12:05:41 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 12:05:41 2015 +0000"
      },
      "message": "Fix compile-time error.\n\nChange-Id: I457db9d43f1cc0f908542b0fe5f13cbc4beb1f1b\n"
    },
    {
      "commit": "abbb0f76b07417f13f712f54d5afddb72e3b9931",
      "tree": "bb26eeb28b58aed669ad16af30aa35771eb02be4",
      "parents": [
        "594c0612519e96bcc1bd42ff4dcbfa2c53b09c5a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 29 18:55:58 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 11:17:00 2015 +0000"
      },
      "message": "Refactor code so that JIT can parse compiler options.\n\nCurrently only the CompilerOptions class. We should also\ndo it for the CompilerDriver options.\n\nThis will fix the flakiness seen on jdwp testing, as the\ndebuggable flag was not passed to the compiler.\n\nChange-Id: I4218dd5928c9f4fe2d6191ab11e5598e7cf84bcf\n"
    },
    {
      "commit": "6cff48f05894a60aa4742472983a75504536ca15",
      "tree": "bd399d46ef08cd836010f3119c8c5db054561267",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sun Jan 26 21:36:13 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 23 11:16:11 2015 -0700"
      },
      "message": "ART: Speed up thread stack tracing for ANRs\n\nShare a BacktraceMap for all threads being dumped, which speeds up\nANR dumping. Results from Nexus 9 (average of five):\n\nBefore: 0.587s\nAfter:  0.206s\n\nChange-Id: Ia70e0dbd39049318c02de561e7b95258d4849467\n"
    },
    {
      "commit": "524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02",
      "tree": "ad07cc96f633bdae839ff2f1553d84b9c864a930",
      "parents": [
        "b697c447eb61c2e14315166ec3b0d16375ae403c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 17:13:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 11:52:11 2015 +0100"
      },
      "message": "Remove ArtCode.\n\n- Instead use OatQuickMethodHeader.\n- Various cleanups now that we don\u0027t have all those\n  ArtMethod -\u003e ArtCode -\u003e OatQuickMethodHeader indirections.\n\nAs a consequence of this cleanup, exception handling got a bit\nfaster.\n\nParserCombinators benchmark (exception intensive) on x64: (lower is better)\nBefore:\nParserCombinators(RunTime): 1062500.0 us.\nAfter:\nParserCombinators(RunTime): 833000.0 us.\n\nChange-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "6bc4374e3fa00e3ee5e832e1761c43e0b8a71558",
      "tree": "38118523aa6b9a92fbdcd7bf1d32ca6185a3d3f0",
      "parents": [
        "16065ce56394c73c87dcb78ead4164ddc80fddb3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 18:11:10 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 13 12:05:27 2015 +0100"
      },
      "message": "Add an abstraction over a compiled code.\n\nThat\u0027s just step 1, moving code-related functions of ArtMethod to\nanother class. That class is only a wrapper on an ArtMethod, but will\nbe changed to be a wrapper around compiled code.\n\nChange-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6\n"
    },
    {
      "commit": "ec7802a102d49ab5c17495118d4fe0bcc7287beb",
      "tree": "08649609604b9c96bc48ca071c48b0af5abb1a3f",
      "parents": [
        "b2e436ffcda1d7a87e7bf9133d8ed878388c73c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 20:57:57 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 11:10:18 2015 +0100"
      },
      "message": "Add DCHECKs to ArenaVector and ScopedArenaVector.\n\nImplement dchecked_vector\u003c\u003e template that DCHECK()s element\naccess and insert()/emplace()/erase() positions. Change the\nArenaVector\u003c\u003e and ScopedArenaVector\u003c\u003e aliases to use the new\ntemplate instead of std::vector\u003c\u003e. Remove DCHECK()s that\nhave now become unnecessary from the Optimizing compiler.\n\nChange-Id: Ib8506bd30d223f68f52bd4476c76d9991acacadc\n"
    },
    {
      "commit": "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c",
      "tree": "21cf63333abcc07ed1e3138ec3c9e690e0abc227",
      "parents": [
        "68ffda887e35f35e978f2f607b7a91e44a5e1969"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 04 12:47:41 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 18:09:20 2015 +0100"
      },
      "message": "ART: Add some utilities for working with containers.\n\nAdd utility functions for searching, removing and replacing\nexisting values in a container, to be used with std::vector\n(including the ArenaVector alias) and other containers.\n\nAlso move UniqueCPtr\u003c\u003e and MakeUnique() to base/stl_utils.h\nand clean up related includes.\n\nChange-Id: I1e61762df91c046866591bda167d42bf8b67a692\n"
    },
    {
      "commit": "f9f6441c665b5ff9004d3ed55014f46d416fb1bb",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 14:05:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 20:16:58 2015 +0100"
      },
      "message": "Optimizing: Tag Arena allocations with their source.\n\nThis adds the ability to track where we allocate memory\nwhen the kArenaAllocatorCountAllocations flag is turned on.\n\nAlso move some allocations from native heap to the Arena\nand remove some unnecessary utilities.\n\nBug: 23736311\nChange-Id: I1aaef3fd405d1de444fe9e618b1ce7ecef07ade3\n"
    },
    {
      "commit": "5073fedd553afeb6ccdb49c1a1ab2cc2947c0870",
      "tree": "6c47517d6e2580729442d08f287d05e2070dee83",
      "parents": [
        "b19b82bf6c8a55459fddcd55e86b162b2c0b9101"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 10 11:40:25 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 12 22:52:32 2015 -0700"
      },
      "message": "ART: Add utility function to dump dex CFG\n\nAdd a utility function in utils.h to dump the dex CFG of\na method.\n\nAdd an option (\"-g\") to dump CFGs of a dex file in dexdump2.\n\nChange-Id: I380082f0abe8ed7eeb6a9186364a99425f69f55c\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": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "50030ef998be09789da4a9a56738362852068f12",
      "tree": "02df1bd0954f9b970434d1363466b0cfe182bc12",
      "parents": [
        "6727a48193db2a0cf01af971cccffe1a6518c247"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 08 14:19:26 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 08 15:09:17 2015 -0700"
      },
      "message": "Check IsReferenceVReg during deopt\n\nRequired since the quick GC maps may not agree with the verifier\nones. Without this check we may copy stale object references into\nthe shadow frame.\n\n(cherry picked from commit f00baf56ef647684888a407dbb6adadd704a2039)\n\nBug: 20736048\nChange-Id: I7783c8a8ee45cf601b08b4c38f1dec7f7d11380c\n"
    },
    {
      "commit": "0d22184ec9e5b1e958c031ac92c7f053de3a13a2",
      "tree": "4055eda9986916dc86b39d023082a57e60c804f4",
      "parents": [
        "97c96f5aab22f75dd54089bdc194588a4b5a2e8d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 27 08:53:46 2015 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 27 20:06:50 2015 -0400"
      },
      "message": "Revert \"Revert \"[optimizing] Replace FP divide by power of 2\"\"\n\nThis reverts commit 067cae2c86627d2edcf01b918ee601774bc76aeb.\n\nChange-Id: Iaaa8772500ea7d3dce6ae0829dc0dc3bbc9c14ca\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "40da286d3207d88ed8ff3f5caac4873874603428",
      "tree": "3f9720425b2a024a5a54a0a71447dcea107229a8",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 12:49:04 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 20:45:35 2015 -0700"
      },
      "message": "ART: Streaming trace mode\n\nAdd a streaming mode for tracing. Streaming uses a buffer of 16KB\nand writes to the output when that buffer gets full. Streaming mode\ncan be enabled with -Xmethod-trace-stream and is currently not\nexposed otherwise.\n\nAdd a python script that can parse the streaming format, which\nsimply contains strings for newly encountered threads and methods\ninline, and create output that can be used with traceview.\n\nAdd Trace::Pause and Trace::Abort, which can pause and abort tracing.\nAbort is different from Stop in that it does not write the data.\n\nAdd code to the zygote hooks JNI implementation that pauses tracing\nbefore the fork, making sure that a child cannot clobber the parent\u0027s\ndata.\n\nAdd code to the zygote hooks JNI implementation that aborts old\ntracing and starts new tracing in the child after the fork. Currently\nbase the output on the pid. This will not work on an unmodified\ndevice, as the profiles directory is not generally writable, but\nwe do not have enough information at that point. Consider a scheme\nthat restarts tracing later.\n\nChange-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "f6468109a49aff6e4a1d28787de625bfb214a761",
      "tree": "a662906fca20ace8fb42ebe4872822d00015596c",
      "parents": [
        "03910065cd025ecb07781b85c2240be69c202d75"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 27 10:31:38 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 27 11:02:20 2015 +0000"
      },
      "message": "ART: Fix IsInt when N\u003d\u003d32, add tests\n\nImplicit type conversion caused IsInt to always return true for N\u003d\u003d32\non 32-bit platforms. This patch templetizes the function to avoid\nthe conversion and adds tests of this and similar functions.\n\nChange-Id: Ie526b68b7c3e7cb7b658253d51840794224785fe\n"
    },
    {
      "commit": "74fc513982fa74b1120f7b8546fc825fc406e1b1",
      "tree": "bb6d78e147eb0eb6f4134c2ee1c7aa24b51f7644",
      "parents": [
        "5eae0b6112aef6b1bc3a24427e80f1ef96e513dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 26 15:11:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 26 15:11:45 2015 +0000"
      },
      "message": "ART: Define IsInt when N\u003d\u003dkBitsPerIntPtrT\n\n\u0027utils.h\u0027 contains two implementations of the IsInt query, one of\nwhich is defined for bit sizes \u003c\u003d kBitsPerIntPtrT, while the other\nonly for sizes \u003c kBitsPerIntPtrT. This patch unifies the behaviour\nand fixes the breakage caused by it.\n\nChange-Id: I4f5589b1a36b6c24926e50574fbca528c33d701f\n"
    },
    {
      "commit": "da4d79bc9a4aeb9da7c6259ce4c9c1c3bf545eb8",
      "tree": "151dd61c4b6a8fd512ea4c2c862af28b02f4ed9c",
      "parents": [
        "af87659f462ac650009fce295097cae3dabce171"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 14:36:11 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 16:02:21 2015 +0000"
      },
      "message": "Unify ART\u0027s various implementations of bit_cast.\n\nART had several implementations of art::bit_cast:\n\n1. one in runtime/base/casts.h, declared as:\n\n   template \u003cclass Dest, class Source\u003e\n   inline Dest bit_cast(const Source\u0026 source);\n\n2. another one in runtime/utils.h, declared as:\n\n   template\u003ctypename U, typename V\u003e\n   static inline V bit_cast(U in);\n\n3. and a third local version, in runtime/memory_region.h,\n   similar to the previous one:\n\n   template\u003ctypename Source, typename Destination\u003e\n   static Destination MemoryRegion::local_bit_cast(Source in);\n\nThis CL removes versions 2. and 3. and changes their callers\nto use 1. instead.  That version was chosen over the others\nas:\n- it was the oldest one in the code base; and\n- its syntax was closer to the standard C++ cast operators,\n  as it supports the following use:\n\n    bit_cast\u003cDestination\u003e(source)\n\n  since `Source\u0027 can be deduced from `source\u0027.\n\nChange-Id: I7334fd5d55bf0b8a0c52cb33cfbae6894ff83633\n"
    },
    {
      "commit": "6eb987dd8afd001898f262263203a1a3ff3fcf83",
      "tree": "0115f8aace42392f6d0112f75f7bcd9a0a090b9e",
      "parents": [
        "c685bce4e6cfec075cb5b468d06b2fcdeeda2005"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 12 17:26:05 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 12 17:26:05 2015 -0700"
      },
      "message": "Fix copy/paste documentation error.\n\nChange-Id: I153a8fdb3644c7178895ce0cc6c1c3f6ce3c6876\n"
    },
    {
      "commit": "97d30aca68af2aa4f114a01d7a7d73e4bf009fe0",
      "tree": "e441187dfab14ffab41aff6576df6aaa14ce8b1c",
      "parents": [
        "3848c4fbc189287bca1298d45d07e21ec90c7c82",
        "b2fd7bca70b580921eebf7c45769c39d2dfd8a5a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 17:00:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 17:00:15 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Basic simplification for arithmetic operations.\""
    },
    {
      "commit": "a2d8ec6876325e89e5d82f5dbeca59f96ced3ec1",
      "tree": "65bf174b669ff3cd9694dc5a1124fb9f2225ade1",
      "parents": [
        "39d9fe2eb3552a002c53ed41701c6faffe3cd75a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "message": "Compress the Dex register maps built by the optimizing compiler.\n\n- Replace the current list-based (fixed-size) Dex register\n  encoding in stack maps emitted by the optimizing compiler\n  with another list-based variable-size Dex register\n  encoding compressing short locations on 1 byte (3 bits for\n  the location kind, 5 bits for the value); other (large)\n  values remain encoded on 5 bytes.\n- In addition, use slot offsets instead of byte offsets to\n  encode the location of Dex registers placed in stack\n  slots at small offsets, as it enables more values to use\n  the short (1-byte wide) encoding instead of the large\n  (5-byte wide) one.\n- Rename art::DexRegisterMap::LocationKind as\n  art::DexRegisterLocation::Kind, turn it into a\n  strongly-typed enum based on a uint8_t, and extend it to\n  support new kinds (kInStackLargeOffset and\n  kConstantLargeValue).\n- Move art::DexRegisterEntry from\n  compiler/optimizing/stack_map_stream.h to\n  runtime/stack_map.h and rename it as\n  art::DexRegisterLocation.\n- Adjust art::StackMapStream,\n  art::CodeGenerator::RecordPcInfo,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Implement unaligned memory accesses in art::MemoryRegion.\n- Use them to manipulate data in Dex register maps.\n- Adjust oatdump to support the new Dex register encoding.\n- Update compiler/optimizing/stack_map_test.cc.\n\nChange-Id: Icefaa2e2b36b3c80bb1b882fe7ea2f77ba85c505\n"
    },
    {
      "commit": "b2fd7bca70b580921eebf7c45769c39d2dfd8a5a",
      "tree": "c5dae29519df73f889ba14495eb79d545cd7d6e5",
      "parents": [
        "356286f989941ac495417195e4129aaceaf36a83"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Wed Mar 11 16:48:16 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Wed Mar 11 16:48:16 2015 +0000"
      },
      "message": "Opt compiler: Basic simplification for arithmetic operations.\n\nThe optimisations in this patch do not look further than the\ninputs of each operation.\n\nChange-Id: Iddd0ab6b360b9e7bb042db22086d51a31be85530\n"
    },
    {
      "commit": "66d874d96d5699bb090c59f47a5a528956ca053e",
      "tree": "d59bf83a08fead7d9823230831bea63c9e43a62c",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 09:37:19 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 09 14:46:23 2015 -0700"
      },
      "message": "Create OatFileAssistant class for assisting with oat files.\n\nThe oat file assistant is used for determining whether dex2oat or\npatchoat is needed, for running dex2oat or patchoat as needed to make\nan oat file up to date, and to load dex files associated with a given\ndex location.\n\nThe introduction of the OatFileAssistant class is meant to clean up and\nconsolidate code related to the management of oat files that was\nduplicated and spread across dalvik_system_DexFile.cc and\nclass_linker.cc.\n\nBug: 11301553\nChange-Id: I0c16027b9bae4570c2c50faa9c14f581c0cbafb8\n"
    },
    {
      "commit": "965fd02721746d4164bc40719cd53eefab37cfb3",
      "tree": "f1140d01dfc9547757fbf5e5b97a9c780a7d7503",
      "parents": [
        "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "message": "Don\u0027t require three-character extensions for dex locations.\n\nBug: 19437875\nChange-Id: Ib62b4c691b04f27c5d499affd5a7fd4d9f0c64f9\n"
    },
    {
      "commit": "a6dfdae1cffc78f9791348b2e1dc8f4c6c3f7128",
      "tree": "2b07c1cc94212963ec38a2c0a784a26fe1522194",
      "parents": [
        "96ac49a260223dc00291116daa63d7489c52bb0f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 15:50:19 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 22:30:47 2015 -0800"
      },
      "message": "ART: Print maps directly to log\n\nDo not read proc maps into a string before printing them later back\nto the log. In low-memory situations this can cause a bad_alloc.\n\nExternal bug: http://b.android.com/153990\nBug: 19494774\n\nChange-Id: Ie63d8788afe8c9da65b30b2f89c50d3dbb820755\n"
    },
    {
      "commit": "80b96d1a76790527f72a660ac03d9c215eed17ce",
      "tree": "8af6fb3840c60c65887cd5de64d987058bb8986e",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 15:50:28 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 18:02:20 2015 +0000"
      },
      "message": "Replace a few std::vector with ArenaVector in Mir2Lir.\n\nChange-Id: I7867d60afc60f57cdbbfd312f02883854d65c805\n"
    },
    {
      "commit": "ab1eb0d1d047e3478ebb891e5259d2f1d1dd78bd",
      "tree": "a2d211ec81294adab2981d0179c8f04be3e8c8c4",
      "parents": [
        "6e27f82193a8f54cd8ecdc8fb2c4c1adadafbaf4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 13 19:23:55 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 18 16:50:22 2015 -0800"
      },
      "message": "ART: Templatize IsInt \u0026 IsUint\n\nEnsure that things are used correctly.\n\nChange-Id: I76f082b32dcee28bbfb4c519daa401ac595873b3\n"
    },
    {
      "commit": "aaebaa0121be3b9d9f13630585304482cbcaeb4b",
      "tree": "0f47257e497fdf920c8d703d2d00adab53934a76",
      "parents": [
        "babecc483276b46d84cb83d4f01e577228827305"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jan 26 10:55:53 2015 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 13:29:19 2015 -0800"
      },
      "message": "art: Refactor RuntimeOptions/ParsedOptions\n\nRefactor the RuntimeOptions to be a\ntype-safe map (VariantMap, see runtime_options.h) and the ParsedOptions\nto delegate the parsing to CmdlineParser (see cmdline/cmdline_parser.h).\n\nThis is the start of a command line parsing refactor, and may include\nmore in the future (dex2oat, patchoat, etc).\n\nFor more details of the command line parsing generator usage see cmdline/README.md\n\nChange-Id: Ic67c6bca5e1f33bf2ec60e2e3ff8c366bab91563\n"
    },
    {
      "commit": "628a61ac52a8a314e74ab445397add60b4e72a5b",
      "tree": "df78aa48e31e58669c6ae63ace7ba6bb532ec65d",
      "parents": [
        "4270e74152d8a7cd979ab5a92fe2a8f84adb8a42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 07 22:08:35 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 09:35:31 2015 -0800"
      },
      "message": "ART: Pass ucontext to Backtrace in Stack Dump\n\nIn case of an unexpected signal on the host we dump the thread stack\nourselves. We have to pass the context given to the signal handler,\nas the signal handler is run on an alternate stack. Otherwise\nlibbacktrace can\u0027t dump the actual faulty part.\n\nBug: 18933933\nChange-Id: Id2710d2fd44b7c3b3335973a9288979a5793638b\n"
    },
    {
      "commit": "5567c11b9157eec110c0631aa2bff5836631e868",
      "tree": "6385002190e857aa2cedd813f461bb6b038fe4c5",
      "parents": [
        "27478e627e08ab42c43d5d934da9ea336ccaf628"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Dec 02 18:31:31 2014 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Dec 04 10:20:12 2014 -0800"
      },
      "message": "Make Barrier robust against spurious wakeups\n\nFix Barrier implementation so that Wait cannot return prematurely\ndue to a spurious condition variable wakeup or interrupted futex call.\n\nDocument the resulting semantics of barrier.h, which are a bit surprising,\nbut appear to be exactly what current clients need.\n\nFix the test so that it actually passes with the fixed barrier.h,\nand no longer tests for properties that can\u0027t be correctly satisfied.\n\nImprove comment for InitTimeSpec, which we almost used.\n\nBug:18509123\n\nChange-Id: I0b25f33bcd22322ba04e3951cd484843788c2bf5\n"
    },
    {
      "commit": "f5b4c50f52d1bde054deee33a8ef6fa18a0eff33",
      "tree": "52b7cedb38af4f428b11e79da0f7318dd02ebfb6",
      "parents": [
        "bdfbf86afde269ee3b38a6c928618333ffac13cf"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 14 15:01:59 2014 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 20 14:47:57 2014 -0800"
      },
      "message": "dex2oat: Pack likely-dirty objects together when generating the boot image\n\nThis introduces a new algorithm into image writer which \"bins\" objects\nby how likely they are to be dirtied at runtime. Objects in the same bin\nare placed contiguously in memory (i.e. into the same page). We try to\ntune the bin selection based on how clean or how dirty the object will\nlikely be at runtime.\n\nAs-is, this saves about 150KB per-process (private-dirty pages) and 700KB in\nzygote (shared-dirty).\n\nThere is still about 800KB of objects that are clean but located in\ndirty pages, so with more analysis we can tune the bin selection and get\neven more memory savings.\n\n(cherry picked from commit 3f735bd4f9d09a0f9b2b01321e4c6917879dcae6)\n\nBug: 17611661\nChange-Id: Ia1455e4c56ffd0a36ae2a723d35b7e06502980f7\n"
    },
    {
      "commit": "0e57decfd5e56f12f42c9663f8e6147237b86039",
      "tree": "122892c8f2c1290fe7b771cd9485d59a1c7351fa",
      "parents": [
        "963ab93759c051af21c07669f0d3f345e60b1da8",
        "851df20225593b10e698a760ac3cd5243620700b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 14 00:47:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 14 00:47:36 2014 +0000"
      },
      "message": "Merge \"ART: Multiview assembler_test, fix x86-64 assembler\""
    }
  ],
  "next": "851df20225593b10e698a760ac3cd5243620700b"
}
