)]}'
{
  "log": [
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "e6465bc8a52cfa3995b4072810cdb7ab397a7793",
      "tree": "129552e367889a6b6a19a5010613bd0fe34cd80b",
      "parents": [
        "a8be6ae6fcf1c58c0c2067739352e16b92972c41"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 18:55:02 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 20:44:25 2015 -0800"
      },
      "message": "Remove references to dlmalloc specific functions\n\nRemove references to internal libc dlmalloc_* functions\nso that we can hide them for lp64\n\nChange-Id: I13977bea63d900e1819052140e3bd6bc1f2fc759\n"
    },
    {
      "commit": "3a0909248e04b22c3981cbf617bc2502ed5b6380",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "457e874459ae638145cab6d572e34d48480e39d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "message": "Revert \"lambda: Add support for invoke-interface for boxed innate lambdas\"\n\n955-lambda is flaky\n\nBug: 24618608\nBug: 25107649\n\nThis reverts commit 457e874459ae638145cab6d572e34d48480e39d2.\n\nChange-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7\n"
    },
    {
      "commit": "457e874459ae638145cab6d572e34d48480e39d2",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 22 17:37:50 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 20 16:33:06 2015 -0800"
      },
      "message": "lambda: Add support for invoke-interface for boxed innate lambdas\n\nLambda closures created with the \u0027create-lambda\u0027 instruction\n(termed \"innate lambdas\") can be turned into an object with \u0027box-lambda\u0027.\n\nThis CL enables support for those kinds of lambdas to work with\n\u0027invoke-interface\u0027 by generating a proxy class for the lambda.\n\nNote: MIPS32/64 support not included.\n\nBug: 24618608\nBug: 25107649\nChange-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb\n"
    },
    {
      "commit": "073b16c8429d302d5413e8ffc488b03b8f770780",
      "tree": "a417fd8042df8c0a9621f9097643ecaede4deeab",
      "parents": [
        "5165b6ba1fda85d769c5092a65f07bcfffb0b3e7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 10 14:13:23 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 11 19:22:33 2015 -0800"
      },
      "message": "Image space cleanup for app images\n\nRemoved Heap::GetImageSpace, added Heap::GetBootImageSpace.\n\nGeneralized some logic in the class linker for image spaces.\n\nBug: 22858531\n\nChange-Id: Ib3e12bb061a247e232d3dc93b0d6b35eb3a34d25\n"
    },
    {
      "commit": "6be4f2ae282077e2b6ecb4244c79f1b20e19b99e",
      "tree": "b523d2e6ec187d21cf35ca8cd504030b61902313",
      "parents": [
        "8a6463a7052ec69e7c0b94a65b26807f570e6359"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 10 13:34:17 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 10 13:34:17 2015 -0800"
      },
      "message": "ART: Fix leak in Heap\n\nDelete a mutex in the destructor.\n\nChange-Id: I7fb8f3f9e7a30baf352f384f38520eb0dd4906eb\n"
    },
    {
      "commit": "10d2508b105427ef1bcaf0c222873bae7acc66d3",
      "tree": "8aa018dd07a1d84daf9f44ea7bb1c02442c44097",
      "parents": [
        "5f2e628b280dfc5f8385e489d44cc0960fcea484"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 18:36:09 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 19:24:54 2015 -0700"
      },
      "message": "Change Checkpoint API to return total number of checkpoints\n\nFixes a race condition with SetStateUnsafe that caused some\nwarnings in the Barrier::~Barrier.\n\nThe race was:\nRunCheckpoint sees suspended thread, runs the checkpoint. Inside the\ncheckpoint, the thread state had changed to runnable by\nSetStateUnsafe. This occasionally caused more Barrier::Pass than\nexpected.\n\nThe fix is to return the total number of checkpoints instead of just\nthe runnable ones.\n\nBug: 24191051\nChange-Id: If15a933ed4c8efa66a5f27cd5feaa2e5957ae804\n"
    },
    {
      "commit": "8d447252fdd2c5f4d77cef8dc19499b4a116d876",
      "tree": "d907788ad9d988f6ed138c5ea4ef12a279c244b8",
      "parents": [
        "e04f37908bfd72382163c1285853e662373229a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 10:21:14 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 10:31:33 2015 -0700"
      },
      "message": "Trim arena maps during heap trim\n\nReduces RAM with verify-at-runtime.\n\nBefore:\n9985 kB: .LinearAlloc\n\nAfter:\n6594 kB: .LinearAlloc\n\nChange-Id: I4d0a0359cc3b55c924790f749eaeaa5cf55ad7df\n"
    },
    {
      "commit": "aa5168291c46f9b418d989bccf2d8e09338a83e6",
      "tree": "bad4c44f503962fc5d74c3079f14f9af1ce7864d",
      "parents": [
        "1aba494df441c31836e5b7d4d8e408420a93cb8d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 02 15:53:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 11:50:18 2015 -0700"
      },
      "message": "Add exclusion between instrumentation and GC\n\nInstrumentation calls VisitClasses while exclusive holding the\nmutator lock. This can cause deadlocks since VisitClasses needs to\ndecode JNI weak globals. If the system weak slow path flag is set,\nthen we wait holding locks while exclusive holding the mutator lock.\nThis causes a deadlock since the GC cannot acquire the mutator lock\nto sweep system weaks.\n\nThis fixes a deadlock seen in one of the tracing tests.\n\nChange-Id: I580152118e068a70f309dcc19df4144afec835dd\n"
    },
    {
      "commit": "598302ac91fd3e990f50e1aa530c3ad61d6d946e",
      "tree": "e348ed768ad36e70c920114d1b7fe7b5b4d24a57",
      "parents": [
        "a00bd9395be31bd69a0558b78a48e4279a6ce693"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 23 14:52:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 25 11:05:00 2015 -0700"
      },
      "message": "Call JNI_OnUnload when class loaders get collected\n\nAdded test case to 141-class-unload.\n\nBug: 22720414\nChange-Id: I0575fae72521520a17587e8b0088bf8112705ad8\n"
    },
    {
      "commit": "4f55e22630d99ca0edd9e951e5ee96b57bb9b980",
      "tree": "84b7d55a6a7c31c09ed2865cc1bc2f4393476533",
      "parents": [
        "2d06e08d25bbf8eff1de945736a60810009e59ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 13:26:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 11 13:14:20 2015 -0700"
      },
      "message": "Add and use ScopedSuspendAll\n\nUsage replaces most SuspendAll and ResumeAll calls.\n\nChange-Id: I355683a5365876242cea85a656dcb58455f7a294\n"
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "fdbd13c7af91a042eda753e436eeebf0e1937250",
      "tree": "c1fb370c9a4a30b9e589802c9c75dcc4919fc6e9",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 02 16:16:58 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 03 10:45:21 2015 -0700"
      },
      "message": "Some fixes for the CC collector.\n\n- Remove a DCHECK in DisableMarkingCheckpoint, which caused\n  occasional (false) failures.\n- Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak\n  access.\n- Add missing BroadcastForNewAllocationRecords and\n  BroadcastForNewWeakBoxedLambdas. The lack of the former caused\n  occasional deadlocks in the ddmc test.\n- Remove the \u0027ensure system weaks disallowed\u0027 calls, which weren\u0027t\n  useful and dead.\n\nBug: 12687968\nChange-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8\n"
    },
    {
      "commit": "db00eaf64e94ab1b4289952699c3b81f73ca406a",
      "tree": "f1014a0d1a36a9af529b8039423e0b8329a21fdf",
      "parents": [
        "4bc27eb21222cd9d0fd680442d34185e42ae4373"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 17:10:05 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 01 23:30:00 2015 +0000"
      },
      "message": "Add GC coverage test for moving GC\n\nAdds testing coverage for collector transitions and homogeneous space\ncompaction.\n\nBug: 10808403\n\nChange-Id: Ia79fecb47c33fc95d940243d6cb1068e9ee9dc9a\n"
    },
    {
      "commit": "1aca34160dd0b0f3b326434c45d34e1d44797607",
      "tree": "2a0c8c803cc9aec8cd14b2b62949197d944dbe00",
      "parents": [
        "bde67673534cf4f5c832df04f82e4703e819a3bd",
        "76f55b030d2517d434f227bee2363c3fb760e5c6"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 27 21:37:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 27 21:37:33 2015 +0000"
      },
      "message": "Merge \"Synchronize JNI critical calls with the CC collector thread flip.\""
    },
    {
      "commit": "76f55b030d2517d434f227bee2363c3fb760e5c6",
      "tree": "92d625bb90b05ad976ff174ac25a112a7fda3bd1",
      "parents": [
        "24011e738d77dedb28c1b4d6ff34445cc2acc4a7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 21 16:10:39 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 27 14:36:01 2015 -0700"
      },
      "message": "Synchronize JNI critical calls with the CC collector thread flip.\n\nJNI critical calls (like GetArrayElementsCritical) would need to block\nfor the whole GC run to finish if the CC collector GC is ongoing. This\nCL changes it so that they don\u0027t need to block for the GC run, but\nonly for the duration of the thread flip operation, which is much\nshorter. This is valid due to the to-space invariant.\n\nBug: 12687968\nBug: 19235243\n\nChange-Id: I1b6b4ae4fa539ddc0ec50b10ae8c8709f2a12fe8\n"
    },
    {
      "commit": "52a7f5caebdf359ab877f1928aad59f1e9ad29fa",
      "tree": "fe23aeb3682128a31c62324e427b906c9804afd3",
      "parents": [
        "944973e56fd3c04c92d902b05d0148f77ed28a78"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 18:35:52 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 21 10:25:36 2015 -0700"
      },
      "message": "Add class flags to class to help GC scanning\n\nReduces GC time and pauses by reducing the number of loads required\nto scan an object.\n\nAverage total GC time before on EvaluateAndApplyChanges (EAAC): 7.452s\nAfter: 7.144s\n\nAverage GC pause times before on EAAC: 860.67us\nAfter: 722.75us\n\nAdding the class flags field cause a memory increase of ~24k system\nwide on low memory devices.\n\nChange-Id: I3f04212d5787bfbf5e55026584d149f55476105e\n"
    },
    {
      "commit": "059ef3ddb2088f926ac452889e0953fdcd646a5e",
      "tree": "36067457d7e4aba11be908ddd235734d29b7c4f2",
      "parents": [
        "f71ad9ede9ae322a897e8fe407208dc35c5dee65"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 13:54:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 16:11:21 2015 -0700"
      },
      "message": "Always visit object class from VisitReferences\n\nWe don\u0027t want to unload classes which have instances.\n\nSlight increase in CMS GC time from ~6.5s to ~7.3s on\nEvaluateAndApplyChanges.\n\nBug: 22720414\nChange-Id: I467ff9c9d55163d2a90b999aef3bdd7b3f648bac\n"
    },
    {
      "commit": "7c2af0d873b7033adccf8fa7adf259166c53d369",
      "tree": "ec1a3cffa19b1131abcdd3e64541a14e9bcc4b86",
      "parents": [
        "1d4219ee25dfb228cc72f353d97be69584fc0722",
        "3887c468d731420e929e6ad3acf190d5431e94fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "message": "Merge \"Remove unnecessary `explicit` qualifiers on constructors.\""
    },
    {
      "commit": "511683764f2580d877725e20514ca4976c91bbfb",
      "tree": "e9a5fa23a95c87cb655affd4249177467ae9dbf5",
      "parents": [
        "b923298c9b6e47b4110dd0cb23cb6a4e98b8552b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 16:40:32 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 18:28:59 2015 -0700"
      },
      "message": "Wait for GC to finish in ThreadList::~ThreadList\n\nAdded a DisableGC to the heap instead of using the runtime shutdown\nboolean. The runtime shutting down boolean is set to true before the\nnon daemon threads have exited. These threads may still be doing\nallocations and we don\u0027t want to throw OOME if unnecessary.\n\nBug: 18577101\nChange-Id: Iceb7048e6bd799aa2716099459c54f8dc0fb8feb\n"
    },
    {
      "commit": "e2a0a20659e43d5873f187b8d9646c9b606c1b16",
      "tree": "c2bd48025466978e4d8b7c9bef4bc5daa43c7c2e",
      "parents": [
        "6a6bd17f68c02139630796a615bd38b929c02e7a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 13:53:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 15:01:16 2015 -0700"
      },
      "message": "Don\u0027t allow GC to start if the runtime is shutting down\n\nDaemon threads may be trying to do allocations as the runtime is\nshutting down, don\u0027t allow GC to start since it touches the heap\nand may cause crashes if it is running while we delete the heap\nor thread list.\n\nBug: 18577101\nChange-Id: I1404b41f2aee13d3c26acffdf588c985628beefc\n"
    },
    {
      "commit": "e8a69447d845cc5c0b5ccfa9c4d4b1b588271f52",
      "tree": "2874f92015f3e276894937c31c1aaa68eec5500d",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 10:20:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 12 13:19:03 2015 -0700"
      },
      "message": "Delete AllocationTimer\n\nNot very useful, running benchmarks is better.\n\nBug: 19534862\nChange-Id: I725830274e306621bffdabffdee602a03daf016f\n"
    },
    {
      "commit": "3887c468d731420e929e6ad3acf190d5431e94fc",
      "tree": "67dacb849e722e33e118b97714a48e467c06cbd5",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "message": "Remove unnecessary `explicit` qualifiers on constructors.\n\nChange-Id: Id12e392ad50f66a6e2251a68662b7959315dc567\n"
    },
    {
      "commit": "a4f6af9b1e6380b31674d7ac645b1732c846ac06",
      "tree": "ff51b5e9f403c4496a2a20de7c6192fb587ac3f5",
      "parents": [
        "8ee8f3223bcf1ad5f3ee11d35c7b4105a48847d8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 11 17:35:25 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 11 18:21:00 2015 -0700"
      },
      "message": "Some heap cleanup\n\nBug: 19534862\nChange-Id: Ia63f489d26ec8813a263ce877bdbbc8c4e8fe5f4\n"
    },
    {
      "commit": "c0fe56a4ee672bb346b124438941e753887e7416",
      "tree": "30fe7746c9f9dd03fb2a9b0c860d6dcb101d18d3",
      "parents": [
        "adbd0e5c3a9a9fce4ad49c48d7a4212f3d18cfcc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 11 13:01:23 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 11 21:07:38 2015 +0000"
      },
      "message": "Address some comments\n\nChange-Id: I0262304cc720a0e93015955d0a7fb05dfebe213e\n"
    },
    {
      "commit": "54d220eb9cc51215d75b9e0fe921b94bebbb3fd6",
      "tree": "fe08749dea3ca6cad97bce48416beb37203efdf5",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 30 16:20:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 18:15:22 2015 -0700"
      },
      "message": "Move ArtFields and ArtMethods to be a length prefixed array\n\nFixes race conditions between changing method and fields arrays\nbeing seen in the wrong order by the GC.\n\nBug: 22832610\nChange-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f\n"
    },
    {
      "commit": "c60e1b755c5632dfeb04c333489ede52ee5c945f",
      "tree": "9582a0ffc99e4ad11dcd5d95dd97b09bc6acc5bf",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "message": "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS\n\nUse the proper define.\n\nChange-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085\n"
    },
    {
      "commit": "da7c650022a974be10e2f00fa07d5109e3d8826f",
      "tree": "eb713496fee4a6885a3c240309e5efc78c6774cf",
      "parents": [
        "2a7ea34cda9bf776339dfc7f4a22ab01f9525f2d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 23 16:01:26 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 24 11:50:43 2015 -0700"
      },
      "message": "Visit class native roots from VisitReferences\n\nVisit class roots when we call Class::VisitReferences instead of in\nthe class linker. This makes it easier to implement class unloading\nsince unmarked classes won\u0027t have their roots visited by the class\nlinker.\n\nBug: 22181835\nChange-Id: I63f31e5ebef7b2a0b764b3ba3cb038b3f561b379\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": "14d90579f013b374638b599361970557ed4b3f09",
      "tree": "fe8f9f7b527e73c20078557eefd74615c2cfc7f8",
      "parents": [
        "5c03f3698f5e2e0d762e2e15ec00310b6cdab4fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "message": "Use (D)CHECK_ALIGNED more.\n\nChange-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af\n"
    },
    {
      "commit": "97509954404d031594b2ecbda607314d169d512e",
      "tree": "bb5371ba90d52e2f561b1dc6959584857cb84683",
      "parents": [
        "c6f3439b67962584cfb764133e192c3317f0e1fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 13 14:35:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 14 16:45:27 2015 -0700"
      },
      "message": "Clean up GC callbacks to be virtual methods\n\nChange-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735\n"
    },
    {
      "commit": "1e13374baf7dfaf442ffbf9809c37c131d681eaf",
      "tree": "9a8a53295a8389d7ec10accf3efb8785a97a3599",
      "parents": [
        "f68c8545382925062da2b87169ca2b5314f0b431"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed May 20 12:30:59 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 13 17:38:40 2015 -0700"
      },
      "message": "Generalize Valgrind annotations in ART to support ASan.\n\nAlso add redzones around non-fixed mem_map(s).\nAlso extend -Wframe-larger-than limit to enable arm64 ASan build.\n\nChange-Id: Ie572481a25fead59fc8978d2c317a33ac418516c\n"
    },
    {
      "commit": "f1820850307f7c2940c758f1232e1c40888a111a",
      "tree": "cb04d286428af5950f18d033ae84f8ea93f57df2",
      "parents": [
        "eaffe35038dc7b9e9e95ec997d32d19571973f54"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 10 13:19:51 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 10 16:31:08 2015 -0700"
      },
      "message": "Add VMDebug.countInstancesOfClasses\n\ncountInstancesOfClasses allows passing multiple classes unlike\ncountInstanceOfClass instead of needing to do one at a time.\n\nThis is going to be used to speed up string mode checking.\n\nAlso changed the logic to not do a GC, this was the old Dalvik\nbehavior. It is the job of the caller to do this.\n\nAdded test.\n\nhttps://code.google.com/p/android/issues/detail?id\u003d177552\n\nChange-Id: Ia85684f40cf59a52aa71a8479c711a994651209b\n"
    },
    {
      "commit": "3cf225386e8129dcbe32b289279ecb87ec255318",
      "tree": "53690ffa8c39d650bbb95a974e2ea777ef689320",
      "parents": [
        "a51df8a59f2be2c797a98fb60c6eca9b049412bf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 09 15:15:09 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 09 16:27:43 2015 -0700"
      },
      "message": "Clean up some includes\n\nChange-Id: Ia03a3b54b235df38d5cfe096fef1aebe2b80eb29\n"
    },
    {
      "commit": "41656de4b6440bcd1bea5fb785f0710153b2bc68",
      "tree": "394de0c87c3dd3ddc3e6c88919187a077ab609b4",
      "parents": [
        "a100332ee0f4b842c28ec2448f97e40a882cd837"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jul 06 18:53:15 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed Jul 08 20:02:54 2015 +0000"
      },
      "message": "Fix potential bugs in allocation tracker\n\nAdd a missing visit allocation records call in concurrent copying collecter.\nHandle null class objects if we support class unloading, and issues\nwith disallow and allow new allocation records.\n\nBug: 20037135\nChange-Id: I59b7321c281e0d79a620501b2f43e36d2a576203\n"
    },
    {
      "commit": "d7f3c38f1b1d23c08b91abb474e08da3105689f8",
      "tree": "f01ad355cf39649ead8544325fb2c34e64ffe43e",
      "parents": [
        "dfda6d74f97891d1b61027de9b4dca9bcd7c197d",
        "42c3c33df8b6eefc4ba532f1981282510f109928"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 25 22:02:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 25 22:02:33 2015 +0000"
      },
      "message": "Merge \"Make allocation tracker use less memory\""
    },
    {
      "commit": "42c3c33df8b6eefc4ba532f1981282510f109928",
      "tree": "4526fe0a718f2e8ead36907aa9984c402d5a1888",
      "parents": [
        "bb3dabaf804e0d0bd2bf34e69091b2f86fd4e78b"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Tue Jun 23 16:38:25 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Thu Jun 25 14:10:48 2015 -0700"
      },
      "message": "Make allocation tracker use less memory\n\nThe allocation tracker no longer keeps recently allocated objects live.\nInstead it just keeps their class objects live as strong roots. This fixed\nthe gc-stress test failure for 098-ddmc.\n\nAlso fixed the issue in DisableNewSystemWeak() for allocation tracker,\nby making new allocation to wait until GC\u0027s sweeping to complete. I didn\u0027t\nfeel any significant slowdown with this wait.\n\nBug: 20037135\nChange-Id: I6a98188832cf7ee478007e3788e742dc6e18f7b8\n"
    },
    {
      "commit": "b735bd9c04aa291d0a1bdc2c0a094a1a75ad0596",
      "tree": "42ee174768b19c498685877f5d09dceb8fdf6e92",
      "parents": [
        "2f233b481d8423bf09e295fea9608b68f09a1862"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 24 17:04:17 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 24 17:25:50 2015 -0700"
      },
      "message": "Fix force copy\n\nWe now correctly pass the returned pointer back onto the release functions.\n\nBug: 22056708\nChange-Id: I1a7300d3a4522a3c81b432ec742ae1c0bd00b51e\n"
    },
    {
      "commit": "da0e224d79262b11fbac9e7b1fdc11c4df31b77f",
      "tree": "1394e3cf8839eae01fb0d5ed3573bf6399f0220a",
      "parents": [
        "3355963cee00fe97cc7aaeaab2c6e31c5657ff6a",
        "1ed11b9ad5512cf464cb1686640df53201fa5297"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 23 03:27:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 23 03:27:45 2015 +0000"
      },
      "message": "Merge \"Restore DDMS recent allocation tracking\u0027s behavior\""
    },
    {
      "commit": "1ed11b9ad5512cf464cb1686640df53201fa5297",
      "tree": "7466c110f74fb736a8f00e60a24ac841d1c0213a",
      "parents": [
        "5aa39bb7f93cf2e8f73d06980b588519825c0ebe"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Thu Jun 11 22:47:35 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jun 22 16:52:08 2015 -0700"
      },
      "message": "Restore DDMS recent allocation tracking\u0027s behavior\n\nMake the allocation tracker mark recently allocated objects as roots,\nso the allocation records are not swept. Because DDMS needs recent\nallocation tracking records even for dead objects. This should fix\nthe flaky failures for 098-ddmc test, but it cannot pass GC stress\ntest (OOM). Re-enabled 098-ddmc for other tests.\n\nThere should be an option to not mark them as roots, when user only\nneeds HPROF dump with traces but not DDMS\u0027s recent allocation tracking.\nProbably need to add a new JNI API function for this option.\n\nThere could be another way to keep a second list of recent allocation\nrecords and maintain a type cache for them, so not to make the objects\nroots. But it\u0027s more complex, and not sure which is better.\n\nAlso reduce memory usage for AllocRecordStackTrace objects, and change\ndefault stack depth to 16. Rename the property that controls the stack\ndepth to \"debug.allocTracker.maxStackDepth\" so developer can change it.\n\nBug:20037135\nChange-Id: Ic6b9ae87bdcda558be6f14ded8057e763439881c\n"
    },
    {
      "commit": "310008008c90fea246efd00cb99ee7ded97c5209",
      "tree": "93ef04470ec9c883e003b0a8043b370b8f05718f",
      "parents": [
        "f7012291ed9c984e2b50d83d7a2d5758cd64c99a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jun 14 14:14:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 22 15:45:13 2015 -0700"
      },
      "message": "New experimental GC stress mode\n\nTries to do a GC for every unique call stack (up to 16 frames).\nThe goal is to catch moving GC bugs and lock violations without being\nrediculously slow. Some tests fail on 64 bits, 32 bit host doesn\u0027t\nwork. N5 is booting.\n\nAdded runtime -Xgc options: gcstress and nogcstress.\n\nBug: 21664466\n\nChange-Id: Icb8e420f2048e8ee83bcca7937563166a2638f5c\n"
    },
    {
      "commit": "89c63739e280ab94399d263624558e1d99fb5af7",
      "tree": "0043b50a85da25d438b99b5b139093c79c7193f5",
      "parents": [
        "86b35f97ce1848608e70eb1f0ea9f73d25b80d09",
        "5dedb808acf84712daf7dee3cf8137d4e34b4b78"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 16 23:20:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 16 23:20:40 2015 +0000"
      },
      "message": "Merge \"Add more logging output for dlopen.\""
    },
    {
      "commit": "5dedb808acf84712daf7dee3cf8137d4e34b4b78",
      "tree": "b0ee9acc9f7d8036240a3e15e2fd30cf0bbbac8f",
      "parents": [
        "1baabf0726eb285284e0c908ccba9f209b399fae"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 17 00:08:02 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 17 00:11:32 2015 +0100"
      },
      "message": "Add more logging output for dlopen.\n\nInvestigation of build bot failure which I can not reproduce locally.\n\nBug: 21854739\nChange-Id: I4584bb10ad44e4bcf8232c060e40b36ff924ffa2\n"
    },
    {
      "commit": "37670178497df18ae6b2a97a2ea9bf365621f16e",
      "tree": "c6d446642f25ec3c065a9d86303fbccb25bb5455",
      "parents": [
        "79b08e69b71a53beb3f053b304c34ea88bfb9a47"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 10 17:20:54 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jun 11 13:47:23 2015 -0700"
      },
      "message": "Reset GC performance stats at zygote fork.\n\nSo GCs before a zygote fork won\u0027t be attributed to an app.\n\n(cherry pick commit  Ib37bc587e0f039ef8faeabe63dec19de49501863)\n\nBug: 21491908\nChange-Id: Ib37bc587e0f039ef8faeabe63dec19de49501863\n"
    },
    {
      "commit": "8c2ff641294715864013737fdec57cdfd410270c",
      "tree": "2dd302323b4711d1a9391b8c1a8dce3de3e76e91",
      "parents": [
        "6dbf5a5a075a371cb2ff3659058e93a985485baa"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed May 27 17:25:30 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed Jun 10 15:03:01 2015 -0700"
      },
      "message": "Add allocation stack traces for HPROF dump.\n\nThis feature is currently only enabled when DDMS\u0027s allocation tracking\nis enabled. In the future there should be a way to enable this feature\nbefore an application starts.\n\nAlso updates DDMS\u0027s recent allocation tracking to use a new backend\ndata structure that is shared with this feature.\n\nThe following system properties controls customizable parameters:\ndalvik.vm.allocTrackerMax: max number of objects that have allocation\n                           records, default 512K;\n\ndalvik.vm.recentAllocMax:  max number of records that are sent to DDMS\n                           when clicking \"Get allocation\" button,\n                           default 64K-1 (limit of the protocol);\n\ndalvik.vm.allocStackDepth: max number of stack frames in an allocation\n                           record, default 4.\n\nBug: 20037135\nChange-Id: I26ed378a5613678bd3c43e846025f90470a8e059\n"
    },
    {
      "commit": "b5de3bb65556950d5cce1dea3ea6d80adcc5051d",
      "tree": "092ccd0bde09ae445b10339c149eb403e1e82901",
      "parents": [
        "38b66b6fed1adcc1da4b931a32f78c5290a97c1e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 05 13:21:05 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 05 16:21:47 2015 -0700"
      },
      "message": "Use runFinalizationWithTimeout for native allocations\n\nPrevents deadlocks by not waiting longer than 250ms for finalizers\nto complete.\n\n(cherry picked from commit 3b532d744034b43ed329a3198f15846d80fec3f0)\n\nBug: 21544853\nChange-Id: I57b2f7ae8b74185922eb3c15ba0ab71a4d2348aa\n"
    },
    {
      "commit": "054a078ecebfb84b5003f2d0239c472de53267e2",
      "tree": "bb1fe30d8e74e8204e93ad9db0a1c775f5be42fe",
      "parents": [
        "da2fd5aa2cbdab371f9a1c29ff4e4dfd09305fdc"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Apr 07 10:56:50 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 04 16:17:21 2015 -0700"
      },
      "message": "Add atrace calls to runtime start and heap create\n\n(cherry picked from commit 7fabaa6ba1927d21a317c03499b705cbde4f6a47)\n\nBug: 20727525\n\nChange-Id: I91a74b793fb9eda8ed580244a6a5fd313ef2eb27\n"
    },
    {
      "commit": "f6c2a2743d70966cf9ff02294276549ce4dc8683",
      "tree": "a0d23e8e419f9f4a5d50a3e6f1233666987050f1",
      "parents": [
        "dc4a4e0fa3af68d493fd49e7887cdcb748d64b6d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 03 17:32:42 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 03 18:35:03 2015 -0700"
      },
      "message": "Fix valgrind large_object_space_test\n\nAlso some cleanup.\n\n(cherry picked from commit c991403cd8b869e4a38c11c6a58223b82b89a1b2)\n\nChange-Id: I9c1a8093e6356f1b52e332009429b77fa5c1d448\n"
    },
    {
      "commit": "e7158116f345df6df73f0df7ebdc2be8e0e4f3e8",
      "tree": "eb22dd962fe56325a505eaacfdf07e3cc97c7904",
      "parents": [
        "2519fc40d4ae89322d28d1ff610fe81bb90fb564"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 03 13:32:15 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 03 16:07:29 2015 -0700"
      },
      "message": "Add a way to determine if a large object is a zygote object\n\nAlso fix a slight memory leak in LargeObjectMapSpace.\n\nBug: 20674158\n\n(cherry picked from commit 8f23620d45399286564986d2541cda761b3fe0ac)\n\nChange-Id: I2416df484e5b84a8c5cc0b5664c8cb102dc235f6\n"
    },
    {
      "commit": "4edd8476339fd93ba8ff384ad107f1fc662e64a3",
      "tree": "6937496e8d32791ca450ef923d7e4b27eb07bf08",
      "parents": [
        "7b9f214463b9a5a49b497421713efead3fb32ec4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 01 10:47:36 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 01 10:51:42 2015 -0700"
      },
      "message": "Fix accidental IMT and root marking regression\n\nWas always using the conflict trampoline. Also included fix for\nregression in GC time caused by extra roots. Most of the regression\nwas IMT.\n\nFixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to\ndetached thread.\n\nEvaluateAndApplyChanges:\nFrom ~2500 -\u003e ~1980\nGC time: 8.2s -\u003e 7.2s due to 1s less of MarkConcurrentRoots\n\nBug: 19264997\nChange-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0\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": "b43390cb87eace4a017f672d66cfb20fb9e76aa1",
      "tree": "7d4f2f0f0d0ad561f20cac4a2aa78cba9a477c78",
      "parents": [
        "28d332c720cb7c9c0163c4844bb0c1a2a067470e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 10:47:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 14:59:31 2015 -0700"
      },
      "message": "Hold heap bitmap lock in Heap::GetObjectsAllocated\n\nFixes a race condition where add and remove space could cause a crash\nwhen we iterated over the spaces.\n\nTODO: Add a spaces lock or something to guard against this.\n\n(cherry picked from commit a395c0a492079d86b312c9edc796d63001576954)\n\nBug: 21031927\n\nChange-Id: I7f0d558316f8e9d9f22ffd182e8666355bf50d47\n"
    },
    {
      "commit": "17a924abde2b0f1f37f6008b451a0a75190c71ff",
      "tree": "7a081b8d31aaae4ee40ffe2d4c43eb79d8fe576f",
      "parents": [
        "2e8da8ecb94134081c3ea18a217294db367888a3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 08 15:17:32 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 08 22:17:47 2015 +0100"
      },
      "message": "ART: Merge entries with same name and protect in MemMap dump.\n\nThis should make the MemMap dump less chatty and allow the\nlogger to keep more relevant output.\n\nBug: 20873174\nChange-Id: I09058798faa8f79d154cee5008017b03700df8db\n"
    },
    {
      "commit": "0ae98992d348b5bf3fc85a52d81b0e5f221f20d6",
      "tree": "4e699a63f743515133ed53ed52bb6e19c4596dfd",
      "parents": [
        "1db3554cf9751d4328d5514b6bee15b6a92b82c4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 01 14:33:19 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 01 14:53:36 2015 -0700"
      },
      "message": "Request full/partial GC type from VMRuntime.requestConcurrentGC().\n\nBug: 20554807\nChange-Id: I1cd855507c3f4e191035dbc2c429e1b8b344d81b\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": "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547",
      "tree": "77a722cae515f6b3c7ea54f5b0fd2435682ae55b",
      "parents": [
        "67592a44cd5600b3c007b9215e3e5296a61118e8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 02 10:18:12 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Apr 13 15:37:40 2015 -0700"
      },
      "message": "getRuntimeStat() support (ART).\n\nExport some runtime stats (currently GC stats) via\nVMDebug.getRuntimeStat().\n\nAdded several new GC stats such as blocking GC counts and GC count\nhistograms.\n\nBug: 19825248\nChange-Id: I8ece9ed241dc3982dfd983d7159090ba82940dce\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": "65b798ea10dd716c1bb3dda029f9bf255435af72",
      "tree": "774e9901b6917989a63f07f927c3b4d8b921a013",
      "parents": [
        "c411c6cc327d3f2b3b4d1987b07dd442205d9454"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 09:35:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:05:07 2015 -0700"
      },
      "message": "ART: Enable more Clang warnings\n\nChange-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "ddac42329314587f6f188bacf101b3cb15175b3c",
      "tree": "f0774ef2055a059ba820d3dc153a8b9f3dc41900",
      "parents": [
        "e4285226d1d4d7c4feee16a968540fb2e363339f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 02 10:08:03 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 02 11:09:34 2015 -0700"
      },
      "message": "Fix race with Heap::ClampGrowthLimit and GC\n\nAded logic for handling the temp bitmap if the GC is running and\nthe live bitmap is clamped to the mark bitmap. This fixes the SIGABRT\nfrom ClampGrowthLimit if the GC clamped the bitmaps at this point.\n\nAlso added locking of the heap_bitmap_lock_ so that added a lock so\nthat the temp bitmap doesn\u0027t change from underneath us.\n\nBug: 20043461\n\nChange-Id: Ib427e40bcdf149de0408b4b53e6524f51463f0af\n"
    },
    {
      "commit": "faed9950572632ffaac69e70c0b1ab90496c98f3",
      "tree": "a8f6f50c35520957188958952fa17935f2624dc6",
      "parents": [
        "bf143069fc5b7526ea79d4283293878a2ebe99ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 31 16:28:53 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 31 16:29:46 2015 -0700"
      },
      "message": "Only GC the first time we call PreZygoteFork\n\nPreZygoteFork is called for every app launch, it is overkill to GC\neach time since it takes 20-30ms and blocks app launch for that long.\n\nChange-Id: I647c8ccca767ceca67a006c1d80a739c7860f0d0\n"
    },
    {
      "commit": "cd8f6377821370cb471fb21ae095dfaa204e4410",
      "tree": "e3d4763b0a253fbfeab368acf714826934aaeb1d",
      "parents": [
        "8c66b5fd8015116cede7a67ebdd1229ff7315f49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 20 18:04:02 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 20 18:08:28 2015 -0700"
      },
      "message": "Remove some spammy logging\n\nDid not provide useful info and or was redundant.\n\nChange-Id: I42da705debc43460cdd3fdf16e9e9ceb2c137001\n"
    },
    {
      "commit": "3dbf23412481c4da51f0ebe32bec5d300c36834b",
      "tree": "a900023a52b868f7776f6c92ced3201cc691fb8a",
      "parents": [
        "cadf090da2dc91a3d6b842324e85f12ea6fef2ef"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 17 16:01:11 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 17 16:01:11 2015 -0700"
      },
      "message": "Fix oat_file_assistant_test32 flaky failures with GSS collector.\n\nBug: 19800031\nChange-Id: I5146fa4e6a79bad94762102a50956c31251dcd2a\n"
    },
    {
      "commit": "bf9fc581e8870faddbd320a935f9a627da724c48",
      "tree": "0a4a6c21fbd4c771b06fac186d32efa6722605b2",
      "parents": [
        "3d96846b6adedf57be64eb3873de0ca58ec4b827"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 17:21:25 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 17:32:48 2015 -0700"
      },
      "message": "Add more info to who called SuspendAll\n\nHelps diagnose related jank.\n\nChange-Id: I38191cdda723c6f0355d0197c494a3dff2b6653c\n"
    },
    {
      "commit": "8711d1fadb62481cdcb10c829a54b36f6aa16f6f",
      "tree": "8ca7b49ed588b4fa02f4d664ddbc5f870a4718e8",
      "parents": [
        "02c0bac34c246c1bd974dbb86d292d4b52ba98e4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 13 16:48:55 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 13 16:53:36 2015 -0700"
      },
      "message": "Fix valgrind heap_test.\n\nCopy the exact object size rather than the aligned size to avoid\nvalgrind errors in the zygote compact collector.\n\nChange-Id: I260b8901f96fb4c0937a1a5237120b56f6858b7a\n"
    },
    {
      "commit": "399ccb140e060c42490cfb45b80467af90ac1c0e",
      "tree": "74729f97e91bed42b2f47d3e7194bba871df475d",
      "parents": [
        "97d30aca68af2aa4f114a01d7a7d73e4bf009fe0",
        "60e27165e13a8401ded88c492ab804419537b2c7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 12 17:25:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 17:25:21 2015 +0000"
      },
      "message": "Merge \"ART: correct native bytes allocated in RegisterNativeAllocation\""
    },
    {
      "commit": "60e27165e13a8401ded88c492ab804419537b2c7",
      "tree": "243543245f308de167245069e8f4f6e6b5749e56",
      "parents": [
        "d304629202eec2ab053a47fc7bcf10223b5ccea4"
      ],
      "author": {
        "name": "Lin Zang",
        "email": "lin.zang@intel.com",
        "time": "Tue Mar 10 18:53:21 2015 +0800"
      },
      "committer": {
        "name": "Lin Zang",
        "email": "lin.zang@intel.com",
        "time": "Thu Mar 12 18:34:04 2015 +0800"
      },
      "message": "ART: correct native bytes allocated in RegisterNativeAllocation\n\nFix the issue that in RegisterNativeAllocation the new_native_bytes_allocated\nwas not updated after Runfinalization, which may cause unnecessary GC.\n\nChange-Id: Icbbc0d1cbcd7b1b8e42576104de69c8ff3afa745\nSigned-off-by: Lin Zang \u003clin.zang@intel.com\u003e\n"
    },
    {
      "commit": "d04495edc261bf7fbdb7c6a1c31c6dda08e990ed",
      "tree": "9effa9e0704874a784a6d14bab957e141de1a169",
      "parents": [
        "6b743b7b3a5cfbacca44cc65e1a4c138588889da"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 11 19:09:07 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 11 19:11:08 2015 -0700"
      },
      "message": "Fix CC collector boot.\n\nAvoid a DCHECK failure that the semi space collector isn\u0027t initialized\nat the pre-zygote fork time when the CC collector is used.\n\nChange-Id: If35707b241be05a341abb11ba51fbd0bc222d219\n"
    },
    {
      "commit": "4460a84be92b5a94ecfb5c650aef4945ab849c93",
      "tree": "2167b79cf593d5ff686aaf0e3bca3b7c571c6d69",
      "parents": [
        "4cfe74cb50b73f5f4b6dd32aabed55d044afe348"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Mar 09 11:57:48 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 11 15:32:59 2015 -0700"
      },
      "message": "Rosalloc thread local allocation path without a cas.\n\nSpeedup on N4:\nMemAllocTest 3044 -\u003e 2396 (~21% reduction)\nBinaryTrees  4101 -\u003e 2929 (~26% reduction)\n\nBug: 9986565\nChange-Id: Ia1d1a37b9e001f903c3c056e8ec68fc8c623a78b\n"
    },
    {
      "commit": "dfe3083054aa7be60adc24e3e58e0ae4773c41ff",
      "tree": "beefca8286b7e346b78cb7ab5e54cc7a543c8d14",
      "parents": [
        "41b15f9f06c7e2e5aac13f709c66412e6c299b67"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 06 15:28:34 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 06 16:46:04 2015 -0800"
      },
      "message": "Only allocate collectors if we may use them\n\nI believe most of the savings come from not allocating the concurrent\ncopying 8MB MarkQueue.\n\nBefore AOSP hh native PSS:\n    72653 kB: Native\n    72998 kB: Native\n    72882 kB: Native\n\nAfter AOSP hh native PSS:\n    64823 kB: Native\n    65986 kB: Native\n    64219 kB: Native\n\nBug: 17643507\nChange-Id: Ic5a8e753beca36142c1bf36be6311051f7c78e47\n"
    },
    {
      "commit": "5c42c29b89286e5efa4a4613132b09051ce5945b",
      "tree": "5db25a4f62c5583f2f6fc42b9a2ff47362eeed5c",
      "parents": [
        "242026e246a8b9efe098a0cce008fd525e011e5b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 25 12:02:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 02 18:07:03 2015 +0000"
      },
      "message": "Add support for .bss section in oat files.\n\nChange-Id: I779b80b8139d9afdc28373f8c68edff5df7726ce\n"
    },
    {
      "commit": "0a575f25c56c8fff485a1dd497ed1efb1b5d3ea9",
      "tree": "390539d2ac6f1083dba432803b7926d7cb2fb865",
      "parents": [
        "e111f1128c4d7cf34e30c4c3c7e682a682e262c4",
        "4858a935868162266ead90ef2f7802108711371d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 26 23:04:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 26 23:04:03 2015 +0000"
      },
      "message": "Merge \"Change card cache mod-union table to use bitmaps\""
    },
    {
      "commit": "4858a935868162266ead90ef2f7802108711371d",
      "tree": "f9c0fb37e188223122e3b823b0f0000e0e20c228",
      "parents": [
        "0644b2dae97d13bec14840cccb11b54697c34a34"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 23 13:18:53 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 26 14:48:46 2015 -0800"
      },
      "message": "Change card cache mod-union table to use bitmaps\n\nPreviously used card sets, using bitmaps saves memory and slightly\nincreases performance.\n\nAdded mod union table test.\n\nPerformance EvaluateAndApplyChanges (minimal changes):\n\nBefore (card cache image mu table):\nUpdateAndMarkImageModUnionTable: Avg: 524.320us\nImageModUnionClearCards: Avg: 54.580us\nNative PSS: ~67500kB\n\nAfter (card cache image mu table):\nUpdateAndMarkImageModUnionTable: Avg: 515.600us\nImageModUnionClearCards: Avg: 53.780us\nNative PSS: ~66014kB\n\nNative PSS was higher before since the mod_union_table-\u003eSetCards()\nwhich happens pre zygote fork was allocating a large amount of\nstd::nodes.\n\nBug: 11859910\n\nChange-Id: I956b7e51d5572feec1393ffa618b7b7d8c147b28\n"
    },
    {
      "commit": "e4d99873eb1dbee956d76c1edef489103898b33f",
      "tree": "378c72e5fbe52bc9bcf1623215ba73fb3b288087",
      "parents": [
        "f5c224cca603ef1dba9bb80952613facc22598fa"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 26 12:53:45 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 26 12:59:20 2015 -0800"
      },
      "message": "Add standard gc log for transition collections.\n\nFactor out the gc log logic into a function.\n\nNote we still don\u0027t log in background as before but do for things like\nOOME compactions in foreground.\n\nChange-Id: Ifd35a796cf26aba2fba83bf07e72902357d91f8b\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "ac195160c299f1c7a87144da7dccb9411df3c1fd",
      "tree": "5fa58b8aac78fb8f7d9e8db68f71fb869f9a1e34",
      "parents": [
        "c0a7e2bb1609da40ec67cb7e00c918637c610897"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 20 18:44:28 2015 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 20 18:44:28 2015 +0000"
      },
      "message": "Revert \"Do GC for alloc for unstarted runtimes\"\n\nBug: 19451379\n\nThis reverts commit c0a7e2bb1609da40ec67cb7e00c918637c610897.\n\nChange-Id: Ib079e5ce1647fd44239f7f2f658b2c50d619fece\n"
    },
    {
      "commit": "c0a7e2bb1609da40ec67cb7e00c918637c610897",
      "tree": "61325a88af96f0e64bf68cfe32351127426aae28",
      "parents": [
        "3f43b5f4881db5a1f7bd13a095f720b7c1ddba6a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 16 10:35:19 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 19 12:38:42 2015 -0800"
      },
      "message": "Do GC for alloc for unstarted runtimes\n\nCurrently, concurrent GC requests are ignored for unstarted runtimes.\nThe new logic is to do a GC for alloc in RequestConcurrentGC if the\nruntime is not started. This reduces the java heap size in dex2oat.\n\nChange-Id: I8d4364a4e3537013b27390bb22a6f64aab58c924\n"
    },
    {
      "commit": "1bb6cb0b7e10698f12213f7a4fabc845057d9ab9",
      "tree": "e3ae2fc62490cffa8af35b5913f331585483fd21",
      "parents": [
        "a8fb460f0a5c96881c433f9586bdf1f705c97d35",
        "aaebaa0121be3b9d9f13630585304482cbcaeb4b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 21:45:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 04 21:45:13 2015 +0000"
      },
      "message": "Merge \"art: Refactor RuntimeOptions/ParsedOptions\""
    },
    {
      "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": "dd9943d4466b052ef6c5ee5b32187adb48cbce74",
      "tree": "ea1651e8990706b62e9d1375f635c6ec5d6066fd",
      "parents": [
        "28acb6feb50951645c37c077bd3897ea760ca322"
      ],
      "author": {
        "name": "Lei Li",
        "email": "lei.l.li@intel.com",
        "time": "Mon Feb 02 14:24:44 2015 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Tue Feb 03 17:48:45 2015 +0800"
      },
      "message": "ART: checkpoint mechanism optimization\n\nGC thread and trim thread are both using checkpoint mechanism. GC thread\nwill request java threads to mark their thread roots by themselves. Trim\nthread will request java threads to trim their jni local reference\ntables by themselves.\n\nThe checkpint mechanism semantics is that the runnable java threads will\nrun checkpoint function itself at safepoint, and finally the java\nthreads and gc thread or trim thread is synchronized via barrier. If the\njava threads are not runnable, gc thread or trim thread will suspend\nthem and then run their checkpoint functions one by one on behalf of\nthem. If all the java threads are not runnable, then gc thread or trim\nthread will do all the work itself. In this case, there is no need\nsynchronization. This will save unnecessary synchronization and thread\nstate transitions.\n\nChange-Id: If55940946cb3f8b1af42c7237c334f09c8ec7a9f\n"
    },
    {
      "commit": "85ed6bdd890c08f50c205d7f0604b5a35603b13e",
      "tree": "230de8fd0f32763e9e66166ba6a917dbde1b27b1",
      "parents": [
        "89c50481705289e16641c73595e1ce9d765f8723",
        "4add3b4fa38ec42bb3c71d01cf70bce8e9a9fb4e"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 27 18:54:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 27 18:54:19 2015 +0000"
      },
      "message": "Merge \"ART: clear dirty cards of alloc space for MS/CMS partial and full GCs\""
    },
    {
      "commit": "4add3b4fa38ec42bb3c71d01cf70bce8e9a9fb4e",
      "tree": "4b8bbd52a4bd139d5101e6a1f99f9a5748e6c1ed",
      "parents": [
        "336247fa6deba2948f5ede1df806f48cf67c790a"
      ],
      "author": {
        "name": "Lei Li",
        "email": "lei.l.li@intel.com",
        "time": "Thu Jan 15 11:55:26 2015 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Mon Jan 26 10:34:05 2015 +0800"
      },
      "message": "ART: clear dirty cards of alloc space for MS/CMS partial and full GCs\n\nFor MS/CMS partial and full GCs, we could clear the dirty cards of alloc\nspace when we process cards as we care about the dirty cards after GC\nstarts.\n\nChange-Id: I1f9b32b20d75979387bc5d26b0cf9a256dcf20b6\nSigned-off-by: Lei Li \u003clei.l.li@intel.com\u003e\n"
    },
    {
      "commit": "cb535da36915f9d10bec3880b46f1de1f7a69f22",
      "tree": "5fc15c1fab170f0f27022ad19880c5ffb15baa01",
      "parents": [
        "61e620d4771e09143471e38fe7531678a36ce3f8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 23 13:50:03 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 25 13:18:11 2015 -0800"
      },
      "message": "Change AtomicStack to use StackReference\n\nPreviously used Object*, using StackReference saves memory on 64 bit\ndevices.\n\nBug: 12935052\nBug: 17643507\nChange-Id: I035878690054eeeb24d655a900b8f26c837703ff\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "4dfe58d8f2d398963f31831a57fbd12e282e1196",
      "tree": "2cb59da016a53da400c31743a4513cf8e7d7d34f",
      "parents": [
        "ce841e0930f19abe5a37bb7f39a30a2179152ade",
        "727b294b4091cf3cc2f8137cd654552f477fe46a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 23 03:51:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 23 03:51:18 2015 +0000"
      },
      "message": "Merge \"ART: clear dirty cards of alloc space in pause phase\""
    },
    {
      "commit": "727b294b4091cf3cc2f8137cd654552f477fe46a",
      "tree": "f125fe8ff24acef4594ad67bd8c0afd1161585bf",
      "parents": [
        "452773fec59e033da4bb258a64bd65bd2ae658e8"
      ],
      "author": {
        "name": "Lei Li",
        "email": "lei.l.li@intel.com",
        "time": "Thu Jan 15 11:26:34 2015 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Thu Jan 22 16:27:46 2015 +0800"
      },
      "message": "ART: clear dirty cards of alloc space in pause phase\n\nClear the dirty cards of alloc spaces when scanning them in pause phase,\nthe dirty cards of image or zygote space will not be cleared in order to\ntrack the references to the other spaces.\n\nChange-Id: I519f071d954a589aa33dbce0cdba405f2d2cef71\nSigned-off-by: Lei Li \u003clei.l.li@intel.com\u003e\n"
    },
    {
      "commit": "0c8c303c20cdaaf54d26e45cc17dc5afb820d8ef",
      "tree": "d3289457acd74e6aa3296bbeef1f8a7619537eec",
      "parents": [
        "97d9f286971a4c1eec70e08f9f18f990d21780d5"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 16 16:54:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 20 12:40:59 2015 -0800"
      },
      "message": "Clean up the locks around Heap::VisitObjects().\n\nThis is so that we could support suspending all threads when visiting\nobjects in the presence of a concurrent, moving collector.\n\nBug: 12687968\nChange-Id: Icc8e60630465afde948ebc6ea91d4ebaff5d7837\n"
    },
    {
      "commit": "e34fa1df67fbe0173b4ea9abddcc3ae3d0537037",
      "tree": "a5148f079b5671a95f60910c41981ebf91db3a02",
      "parents": [
        "9f06b1946ae3ef1d2fd75bbf7f0a288bc611fe58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 14 14:55:47 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 12:23:28 2015 -0800"
      },
      "message": "Print more info in MarkSweep::VerifyRoot\n\nRefactored old root callback to use a new class called RootInfo.\nRootInfo contains all the relevant info related to the root\nassociated with the callback. The MarkSweep::VerifyRoot function\nnow uses this info to print the StackVisitor\u0027s described location\nif the GC root is of the type kRootJavaFrame.\n\nSome other cleanup.\n\nExample output:\nE/art     (12167): Tried to mark 0x123 not contained by any spaces\nE/art     (12167): Attempting see if it\u0027s a bad root\nE/art     (12167): Found invalid root: 0x123 with type RootJavaFrame\nE/art     (12167): Location\u003dVisiting method\n\u0027void java.lang.Runtime.gc()\u0027 at dex PC 0xffffffff (native PC 0x0)\nvreg\u003d0\n\n(cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a)\n\nBug: 18588862\nChange-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f\n"
    },
    {
      "commit": "313c9c6413b78e0f9ed791ce079490423872c2d8",
      "tree": "a64818c82de21ebc3ed101d04a77f752efc18ceb",
      "parents": [
        "1de532495b2669ce4fae9b9d20848d78d83813d8",
        "a233e03473cd9f0a582447f71946122140a2472c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Sat Jan 10 01:58:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 10 01:58:16 2015 +0000"
      },
      "message": "Merge \"[WIP] Fix a rosalloc verification crash.\""
    },
    {
      "commit": "a233e03473cd9f0a582447f71946122140a2472c",
      "tree": "d83316650e6834ac177223a8fce4549df12fb373",
      "parents": [
        "ca7d89d09294254f16db170a53b0f8dfbf0213ac"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 17:48:00 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 17:48:00 2015 -0800"
      },
      "message": "[WIP] Fix a rosalloc verification crash.\n\nBug: 18960494\nChange-Id: Ia7a11f06b3fc8207f6304ae881539251d6b1de24\n"
    },
    {
      "commit": "379d09fe3c3feb7c2a2fb5a3623689b5ace7e79b",
      "tree": "680b4173130057a1f70ad321eaf4cfbeba0e291c",
      "parents": [
        "ca7d89d09294254f16db170a53b0f8dfbf0213ac"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 11:28:13 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 16:02:00 2015 -0800"
      },
      "message": "Add clamp growth limit\n\nClamp growth limit shrinks the space memmaps to the current growth\nlimit. This reduces virtual memory usage for apps with small heaps.\n\nBug: 18387825\nBug: 17131630\n\nChange-Id: I4a8fdc335d2c40492e991708adabcc46299efb7d\n"
    },
    {
      "commit": "50c138f7f89ed03d49aa4bdde7351c26b3403e90",
      "tree": "e87e85e58e782d7792c46927d2c6693fe507495a",
      "parents": [
        "4ea18c02148cffe72e025990e9b2727bfec563da"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 07 16:00:03 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 07 16:50:55 2015 -0800"
      },
      "message": "Fix signal test to work with gcstress\n\nWe now avoid running GC if we are handling a stack overflow, this\nhelps prevent running past the end of the stack overflow reserved\nbytes.\n\nAdded logic in ThrowStackOverflowError to use a stack overflow\nexception without a stack trace if we fail to allocate the stack\ntrace.\n\nBug: 16406852\nChange-Id: Ib34e235cd0af6d7c4c93c9705fa822f2b9b23b38\n"
    },
    {
      "commit": "a5eae69589ff562ad66c57665882cd16f237321c",
      "tree": "b80e50c050f5d32fc7b258ef1446a245a97c3df8",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 17:56:03 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 19 17:08:43 2014 -0800"
      },
      "message": "Add heap task processor\n\nThe heap task processor processes async tasks which may be delayed.\nThe motivation for this change is preventing deadlocks which\ncan occur when the daemon threads get suspended by GetThreadStack.\n\nOther improvements, reduces daemon thread count by one.\nCleaner pending transition VS heap trimming logic.\n\nBug: 18739541\n\nChange-Id: Idab52b2d9661a6385cada74b93ff297ddc55fc78\n"
    },
    {
      "commit": "bf7b41ff04e5cf70660b50f7b7f2c14d94b8bf6d",
      "tree": "92f08bd865b22ad51d038ef946488abc27e49a54",
      "parents": [
        "55b752a817a08be46b167e07d7fee3d20a8e6a9c",
        "e2c2f6e61df0bfa1516bfc8943e78ea610d4d878"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 18 03:51:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 18 03:51:42 2014 +0000"
      },
      "message": "Merge \"Fix concurrent GC ergonomics\""
    },
    {
      "commit": "e2c2f6e61df0bfa1516bfc8943e78ea610d4d878",
      "tree": "e993fb6cb53a5e66e204e5fae1cc9a397320c739",
      "parents": [
        "3e2f0fc584463e9da1142a5011ac3f7bcf083e0f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 16 18:49:31 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 18:14:34 2014 -0800"
      },
      "message": "Fix concurrent GC ergonomics\n\nFixed a race with the gc_request_pending_ boolean which would cause\ntwo concurrent GCs to start in a row in most cases. This broke sticky\nCMS ergonomics since the second GC was a sticky CMS which started way\ntoo early resulting in low throughput. Since the throughput was low,\nit switch to partial / full for the next iteration.\n\nThe race happened as follows, allocating thread would request\nconcurrent GC which woke up the daemon thread. The daemon thread\ncleared the gc_request_pending_ boolean, but before we set the\nconcurrent_start_bytes_ to max in to prevent more request, the\nallocating thread would call RequestConcurrentGC again. This caused\nthe next WaitForConcurrentGCRequest to return right away and a\nconcurrent GC to occur earlier than necessary.\n\nChanged the allocation rate ergonomics to use allocation rate\nduring the GC instead of allocation rate inbetween GCs, this is\nbetter since the allocation rate may become slower if the GC steals\nmutator time, resulting in concurrent GCs starting a bit earlier\nthan they need to.\n\nFixed a bug in GrowForUtilization where we didn\u0027t use the adjusted\nmax_free when we shrank down the heap, this caused the sticky CMS to\noccasionally shrink the heap more than necessary.\n\nEvaluateAndApplyChanges:\nBefore: ~12.6s GC time\nAfter: ~7.75s GC time\n\nChange-Id: I354bc825b3c44ccfbfe867af0d437b17fe1fe022\n"
    },
    {
      "commit": "70a596d61f8cf5b6447326c46c3386e0fbd5bfb5",
      "tree": "f7affe0a976165eb9ff789270d314463f6e36660",
      "parents": [
        "e9231c0aecc013c61b6cf7f88a228204651d4d41"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 14:56:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 16:03:58 2014 -0800"
      },
      "message": "Add thread suspend histogram\n\nHelps measure time to suspend.\nExample output (maps after a few seconds):\nsuspend all histogram:  Sum: 2.806ms 99% C.I. 2us-1090.560us Avg: 43.843us Max: 1126us\n\nChange-Id: I7bd9dd3b401fb3e3059e8718556d60910e541611\n"
    },
    {
      "commit": "c85cdeb22b6d38b90904241c284f389043822073",
      "tree": "518acb1b3570a85d6a17aa7abc499790f8a4b1c7",
      "parents": [
        "d76a0c791b8b7411e7ce7b2046f6af1e3d7bb00a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 16 15:23:00 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 16 15:23:15 2014 -0800"
      },
      "message": "Delete gc request lock\n\nFixes valgrind tests.\n\nChange-Id: I763e5709fffb002b14615ed5d08236970643e520\n"
    },
    {
      "commit": "079101a17575114622f6e1d5be5c9ba643630e9a",
      "tree": "bc9ff009cca8e649f24adb8f7626c95b7930be40",
      "parents": [
        "81d035213b0426ee076cc0d017c895c7833d32e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 14:23:10 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 15:18:46 2014 -0800"
      },
      "message": "Move GC daemon locking logic into heap\n\nFixes deadlock caused by acquirng the mutator lock while\nsynchronizing on the daemon thread.\n\nBug: 18739541\nChange-Id: I925b8f0f3b58178da6eff17b9c073f655c39597b\n"
    }
  ],
  "next": "956af0f0cb05422e38c1d22cbef309d16b8a1a12"
}
