)]}'
{
  "log": [
    {
      "commit": "a01de59eef990c07df9815376cd3c675e3acd481",
      "tree": "86f6ef41c13de572dc134956c836dd94c35d9d64",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 15 10:43:06 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 10:23:47 2016 -0800"
      },
      "message": "Infrastructure for obsolete methods\n\nThis adds some of the structures and functions needed to eventually\nsupport obsolete methods. Specifically this adds the code to create\nand iterate through the obsolete dex-cache maps of classes and\nre-organizes the redefinition code to be more sensible and extensible.\n\nBug: 32369913\nTest: ./test/run-test --host 902\nTest: mma -j40 test-art-host\n\nChange-Id: I93d60fa66e7512e8b059cdf42af8a56e93ef4bd7\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": "31e88225b2ef68e7f32f11186acf922c74ddabab",
      "tree": "ca50f60634854056bb652e7c375e5ccca2def5cd",
      "parents": [
        "602142692643d8cd2c48d9aaeece26470f702e3b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 18:43:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 11:36:39 2016 -0700"
      },
      "message": "Move most mirror:: args to ObjPtr\n\nFixed possible moving GC bugs in ClinitImageUpdate class.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I0bf6578553d58b944aaa17665f1350bdf5ed15ec\n"
    },
    {
      "commit": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    },
    {
      "commit": "9d156d500801accee919b6d51e22d6ddcdcd4a05",
      "tree": "92129562c0ba1673c660297f26444a4a2ad31459",
      "parents": [
        "078483d4dfd049d5b3f192a99e2dfdc355e4754f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 17:44:26 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 09:49:49 2016 -0700"
      },
      "message": "Move Heap parameters to ObjPtr\n\nDeleted some unused object dumping code.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I747220caafe6679591fd4b361d7f50383a046164\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": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "dfe02f6aafee264478d510b9742ee266ea52e8a8",
      "tree": "d56729901410de2b5cea9395c4686b49c38b245d",
      "parents": [
        "85fdcda926fbab0e5a7b3e8b3541f5d225b2bcdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 20:15:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 02 15:43:05 2016 -0800"
      },
      "message": "Fix remaining read barrier issues in image relocation\n\nAdded a way to disallow read barriers, this makes it easy to find\nthe issues.\n\nBug: 26786304\nChange-Id: I7ebb50832686d03e096a979aae9741239371683f\n"
    },
    {
      "commit": "1bbfab6feed9c03bde3118bd7dab689a3b808dc0",
      "tree": "44242d724fc1ec7f3e0fbd792d10a7da9d84966e",
      "parents": [
        "d329a3b6a77148839171132eb779577fe4b16cdd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 27 16:37:19 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 27 16:39:19 2016 -0800"
      },
      "message": "Pass template args down\n\nFixes failing DCHECK in dex2oatd\n\n(cherry picked from commit 3df47c1c675e62cf0e5853699149c1181a48b28f)\n\nChange-Id: I96a3b582705e4bffa39ee8e24ec43ff0d7a57ccd\n"
    },
    {
      "commit": "d329a3b6a77148839171132eb779577fe4b16cdd",
      "tree": "24b422aa499e8b95d8b750c4c3b8d3382917c9ca",
      "parents": [
        "78e90155b249588cb800e7f6e5993ebcbd465292"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 27 15:30:10 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 27 16:22:14 2016 -0800"
      },
      "message": "Fix pointer conversion error in SetElementPtrSize\n\nSetElementPtrSize used to cast from pointer to uint64_t which\ncould sign extend with 32 bit dex2oat for 64 bit app image.\nAlso removed C style casts and added more logging.\n\nBug: 22858531\n\n(cherry picked from commit d22886357d4c53f74ca298faa7ad2555794e17e0)\n\nChange-Id: I479124328fbc497cfcae20c43b4b55827e446527\n"
    },
    {
      "commit": "4b00d3415beb7a816a3b5948f43f3b2e4b856ea8",
      "tree": "a54f8c2704fbe9b9ffebdc0f1984a777beb80ac0",
      "parents": [
        "991842a5273d20695dd5f35eb9a9e28c386c5b4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 13 10:42:08 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 16 15:05:36 2015 -0800"
      },
      "message": "Refactor some patching logic\n\nReduce duplication since app images in-place relocation will require\nthis code also.\n\nBug: 22858531\nChange-Id: Ibb901b67267e27ef3bc2a0baff77189d4dcd018a\n"
    },
    {
      "commit": "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": "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": "33d75bc75c72db7e5b1ea4ad0be287b1dfd72e69",
      "tree": "f2bdf02aba34e7d59c760df1b54bb3c789ee6648",
      "parents": [
        "65efe9192390187674108b9c895ba225628bb07b",
        "3b45ef277e4a5f7e0314d5df7ef82e480156ba75"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 27 22:41:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 27 22:41:31 2015 +0000"
      },
      "message": "Merge \"ART: Fix VerifyObject runtime verification\""
    },
    {
      "commit": "3b45ef277e4a5f7e0314d5df7ef82e480156ba75",
      "tree": "1df28568b9e7e4e50102b7f834fab6e943c444a5",
      "parents": [
        "c06841dac1443e99e92596f15caa82c99bfee010"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 26 21:34:09 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 27 08:24:03 2015 -0700"
      },
      "message": "ART: Fix VerifyObject runtime verification\n\nUpdate some bit-rotted code to work again. Most tests now work, for\nsome the verification overhead results in a timeout.\n\nChange-Id: Ieab4f2de474a05e915e24abc93da3c2eeed996eb\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": "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": "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": "20f85597828194c12be10d3a927999def066555e",
      "tree": "486c10dca0811b036a0cd5f80c02650ac43b11a5",
      "parents": [
        "7d8c6776d7bdcc04411154aa215ba5909939192a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 19 10:07:02 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 31 08:56:17 2015 +0100"
      },
      "message": "Fixed layout for dex caches in boot image.\n\nDefine a fixed layout for dex cache arrays (type, method,\nstring and field arrays) for dex caches in the boot image.\nThis gives those arrays fixed offsets from the boot image\ncode and allows PC-relative addressing of their elements.\n\nUse the PC-relative load on arm64 for relevant instructions,\ni.e. invoke-static, invoke-direct, const-string,\nconst-class, check-cast and instance-of. This reduces the\narm64 boot.oat on Nexus 9 by 1.1MiB.\n\nThis CL provides the infrastructure and shows on the arm64\nthe gains that we can achieve by having fixed dex cache\narrays\u0027 layout. To fully use this for the boot images, we\nneed to implement the PC-relative addressing for other\narchitectures. To achieve similar gains for apps, we need\nto move the dex cache arrays to a .bss section of the oat\nfile. These changes will be implemented in subsequent CLs.\n\n(Also remove some compiler_driver.h dependencies to reduce\nincremental build times.)\n\nChange-Id: Ib1859fa4452d01d983fd92ae22b611f45a85d69b\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": "3e0acf673ce1fbb3932d288d7b52a6dc551a920f",
      "tree": "04713128c17bcdc4495c5d2a28ad6301be3b302c",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 09:41:25 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 10:45:04 2015 -0800"
      },
      "message": "Add VerifyObject to StackHandleScope::SetReference\n\nHelps catch GC bugs. Also moved some of the HandleScope logic to the\ninl file.\n\nBug: 13054004\nChange-Id: I81b9dd717092b6a467fcd28b4df0089ec075dd44\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "7e70b002c4552347ed1af8c002a0e13f08864f20",
      "tree": "79d5ee5444a5be70130d9a75dd51831c4b15687b",
      "parents": [
        "edc34c88b8f8abd04f9c4668787403608cf0b2d4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 11:47:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 11:57:59 2014 -0700"
      },
      "message": "Header file clean up.\n\nRemove runtime.h from object.h.\nMove TypeStaticIf to its own header file to avoid bringing utils.h into\nallocator.h.\nMove Array::DataOffset into -inl.h as it now has a utils.h dependency.\nFix include issues arising from this.\n\nChange-Id: I4605b1aa4ff5f8dc15706a0132e15df03c7c8ba0\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "37f05ef45e0393de812d51261dc293240c17294d",
      "tree": "7c7793862efa52e1deb42babbdcb652c245ab941",
      "parents": [
        "e25826e28ea65d9c1aa23f84788a091c677b20c7"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jul 16 18:38:08 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 11:16:53 2014 -0700"
      },
      "message": "Reduced memory usage of primitive fields smaller than 4-bytes\n\nReduced memory used by byte and boolean fields from 4 bytes down to a\nsingle byte and shorts and chars down to two bytes. Fields are now\narranged as Reference followed by decreasing component sizes, with\nfields shuffled forward as needed.\n\nBug: 8135266\nChange-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752\n"
    },
    {
      "commit": "94f7b49578b6aaa80de8ffed230648d601393905",
      "tree": "cfc69e453faefee38178ceb85378e1f0f1e17812",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 22 18:08:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 29 13:30:46 2014 -0700"
      },
      "message": "Add GcRoot to clean up and enforce read barriers.\n\nIntroduce a value-type wrapper around Object* for GC roots so that 1)\nwe won\u0027t have to directly add the read barrier code in many places and\n2) we can avoid accidentally bypassing/missing read barriers on GC\nroots (the GcRoot interface ensures that the read barrier is executed\non a read).\n\nThe jdwp test passed.\n\nBug: 12687968\nChange-Id: Ib167c7c325b3c7e3900133578815f04d219972a1\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "4f1ebc2b86c8467d1ecb3ec655316e6d7ee8b8b5",
      "tree": "59a2e44c7dbe82811f56657c43d99f1111c75f26",
      "parents": [
        "5703029de6c56c6f85b3ecbd4e2eee80e025772d"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 25 14:30:41 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 27 15:09:19 2014 -0700"
      },
      "message": "Add read barriers to the constant roots.\n\nThis change makes it possible to concurrently scan the constant roots\n(the roots visited by Runtime::VisitConstantRoots()) such as the class\nof java.lang.Class by adding read barriers.\n\nBug: 12687968\nChange-Id: If1afea471c4e1093688d2db37b7f1fc2742edeef\n"
    },
    {
      "commit": "6e83c172f385cb45dd13bbcf41d2df8e410828c6",
      "tree": "e2c2f4ee55cfd623ea9d363286b380213748e1e8",
      "parents": [
        "9a16f222cdf40e68b084316b6e768c14d4b9e020"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 01 21:25:41 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 01 21:25:41 2014 -0700"
      },
      "message": "Replace the bool kDoReadBarrier template parameter with an enum.\n\nFix one kDoReadBarrier/kIsVolatile mixup in an Object::GetFieldObject\ncall.\n\nBug: 12687968\n\nChange-Id: I896b1137b21a20c0504abd2bf3fe6f83805f3300\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "9103c86a98524e9ddfd14f8cee56e919f68eee9b",
      "tree": "69e64a2f618e10bb8f060cf7fb70c8e94dc43b50",
      "parents": [
        "f7933e7f295bfe61cb0baf89469581c563032e96"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 22 13:51:07 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 22 14:26:21 2014 -0700"
      },
      "message": "More code for the read barrier support.\n\nMake it possible to disable the RB in Object::SizeOf() (and the\nfunctions it calls transitively) which the collector will need to call\nto get the size of an object when copying.\n\nAdd Object::AtomicSetReadBarrierPointer() for atomic write of a RB\npointer.\n\nBug: 12687968\nChange-Id: Ibedd252860ac7ccd17e4e7d71b377a8892b48ff0\n"
    },
    {
      "commit": "99cb4eac56f8bd6336669f5fb9dc4b1f4061466c",
      "tree": "e716fa13c09f27f1bb225ab01f23bc991a56f60b",
      "parents": [
        "636583c586b78e188168e510452cef0645578f8d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 22:53:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 27 08:17:32 2014 -0700"
      },
      "message": "Handle Array::Memmove within the same array properly.\n\nMotivated by discussions in:\n  https://android-review.googlesource.com/#/c/88940/\nmemcpy can\u0027t be relied upon to be a forward copy for overlapping regions of\nmemory.\n\nChange-Id: I409f75e97204250546bf0b8082e2b62026bddedc\n"
    },
    {
      "commit": "aa866f51bccc2f017a2e65925748b7a1c701d3f6",
      "tree": "9fa6ca9147b1e08a0f6798a2a00e2a7324a2df7b",
      "parents": [
        "faa93b3ab455492dad1a9d3fb630e3936d389c85"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 21 16:18:30 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 21 16:27:11 2014 -0700"
      },
      "message": "Deduplicate the code that hardcodes the array header layout.\n\nGet rid of HeaderSize() in array-inl.h and use DataOffset() instead.\n\nBug: 12687968\nChange-Id: Ic81cf3fa6bb9b2440d351a73f5fd6a2d6908d15b\n"
    },
    {
      "commit": "8580154e01910459d99074ef10584b8d647d912f",
      "tree": "da6e717eb6f77c8cf959a9b0d1f8073f63d4e9fd",
      "parents": [
        "b63841060cdca9603bf72e737de52a9cec0d6434"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 27 18:06:26 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 27 18:08:12 2014 -0800"
      },
      "message": "Fix 080-oom-throw with semispace GC.\n\nFixes a moving GC related error in array allocations where we didn\u0027t\nconsider that the array class might have moved.\n\nChange-Id: Iefe8bdc06b51ec2329a7984359f3da7fda479fec\n"
    },
    {
      "commit": "a55cf41c9d1da7ee8b2f63974dedfb484042dd03",
      "tree": "56ec8209ebb303d83ac519ab8ac64d235b1069ab",
      "parents": [
        "f709d7d7c461b0e0f96510a84ef1d8046ca43d79"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 27 00:31:26 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 27 00:31:26 2014 -0800"
      },
      "message": "Ensure usable space data is zeroed in arrays.\n\nAddress other outstanding review comments.\n\nChange-Id: Iaffe04de080772a0d0c5fd973bcac0e23c8c3e25\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    },
    {
      "commit": "4e30541a92381fb280cd0be9a1763b713ee4d64c",
      "tree": "84093651bbf0ad95b66b846c4f4cf4101994037b",
      "parents": [
        "e266ba9935bd12d685d83f73cd8d759e46c3014d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 19 10:54:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 21 15:24:04 2014 -0800"
      },
      "message": "Fix and optimize verify object.\n\nVerifyObject no longer resides in heap. You can now enable\nVerifyObject for non-debug builds. VerifyStack is still slow, so it\nis now guarded by its own flag.\n\nFixed the image writer to not use verification at places where\nverification fails due to invalid reads.\n\nFixed RosAlloc to use SizeOf which doesn\u0027t call verify object.\n\nAdded a flag paremeter to some of the mirror getters / setters to\nbe able to selectively disable VerifyObject on certain calls.\n\nOptimized the GC to not verify each object multiple times during\nobject scanning if verify object is enabled.\n\nAdded 3 verification options: verify reads, verify this, and verify\nwrites so that you can select how much verification you want for\nmirror getters and setters.\n\nRemoved some useless DCHECKs which would slow debug builds without\nproviding any benefits.\n\nTODO: RosAlloc verification doesn\u0027t currently work with verify\nobjects.\n\nBug: 12934910\nBug: 12879358\n\nChange-Id: Ic61033104dfc334543f89b0fc0ad8cd4f4015d69\n"
    },
    {
      "commit": "815873ecc312b1d231acce71e1a16f42cdaf09f2",
      "tree": "18ba2fa951775e60b240271bfe975e6e2cfc654c",
      "parents": [
        "2befd09cf4fe89a18a655f3e1dd310831bfa769f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 13 18:02:13 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 18 10:45:12 2014 -0800"
      },
      "message": "Change root visitor to use Object**.\n\nSimplifies code and improves the performance of root visiting since\nwe usually don\u0027t need to check to see if the object moved.\n\nChange-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "692fafd9778141fa6ef0048c9569abd7ee0253bf",
      "tree": "63ce2c7d4be6af2524a5f442195c8c8b6f5cc955",
      "parents": [
        "07dc96d370c4844c7a279c01cedf24a272b9f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 29 17:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 16:57:37 2013 -0800"
      },
      "message": "Thread local bump pointer allocator.\n\nAdded a thread local allocator to the heap, each thread has three\npointers which specify the thread local buffer: start, cur, and\nend. When the remaining space in the thread local buffer isn\u0027t large\nenough for the allocation, the allocator allocates a new thread\nlocal buffer using the bump pointer allocator.\n\nThe bump pointer space had to be modified to accomodate thread\nlocal buffers. These buffers are called \"blocks\", where a block\nis a buffer which contains a set of adjacent objects. Blocks\naren\u0027t necessarily full and may have wasted memory towards the\nend. Blocks have an 8 byte header which specifies their size and is\nrequired for traversing bump pointer spaces.\n\nMemory usage is in between full bump pointer and ROSAlloc since\nmadvised memory limits wasted ram to an average of 1/2 page per\nblock.\n\nAdded a runtime option -XX:UseTLAB which specifies whether or\nnot to use the thread local allocator. Its a NOP if the garbage\ncollector is not the semispace collector.\n\nTODO: Smarter block accounting to prevent us reading objects until\nwe either hit the end of the block or GetClass() \u003d\u003d null which\nsignifies that the block isn\u0027t 100% full. This would provide a\nslight speedup to BumpPointerSpace::Walk.\n\nTimings: -XX:HeapMinFree\u003d4m -XX:HeapMaxFree\u003d8m -Xmx48m\nritzperf memalloc:\nDalvik -Xgc:concurrent: 11678\nDalvik -Xgc:noconcurrent: 6697\n-Xgc:MS: 5978\n-Xgc:SS: 4271\n-Xgc:CMS: 4150\n-Xgc:SS -XX:UseTLAB: 3255\n\nBug: 9986565\nBug: 12042213\n\nChange-Id: Ib7e1d4b199a8199f3b1de94b0a7b6e1730689cad\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "7410f29b4dae223befac036ea567d7f33351dad1",
      "tree": "895d3f03073fca0ca6715bcb523816fa6f03cc0a",
      "parents": [
        "f3bfe67040b46d926d05009e914195e78c5d8685"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Nov 24 13:17:35 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 11:12:58 2013 -0800"
      },
      "message": "Fix dumpsys meminfo \u003cpid\u003e.\n\nAdded a case for BumpPointerSpaces. Confirmed working non-debug.\nShould also work in debug builds.\n\nBug: 11830794\nChange-Id: I12053ff16eec403dcd4a780e13095e3212a77132\n"
    },
    {
      "commit": "1febddf359ae500ef1bb01ab4883b076fcb56440",
      "tree": "abcb59ae807d3b8efae95ee0a2e34d6b66e52275",
      "parents": [
        "e768dfd50aa893b2956a59f59f3ed4033aed8cef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 12:33:14 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 13:09:20 2013 -0800"
      },
      "message": "Set array length before fence in allocation code path.\n\nCould not delete SetLength since it is required by\nspace_test.\n\nBug: 11747779\n\nChange-Id: Icf1ead216b6ff1b519240ab0d0ca30d68429d5b6\n"
    },
    {
      "commit": "cbb2d20bea2861f244da2e2318d8c088300a3710",
      "tree": "9735d496716cf165ea0ee2d7e2f62d723ffc7734",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 14 17:45:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 11:14:11 2013 -0800"
      },
      "message": "Refactor allocation entrypoints.\n\nAdds support for switching entrypoints during runtime. Enables\naddition of new allocators with out requiring significant copy\npaste. Slight speedup on ritzperf probably due to more inlining.\n\nTODO: Ensuring that the entire allocation path is inlined so\nthat the switch statement in the allocation code is optimized\nout.\n\nRosalloc measurements:\n4583\n4453\n4439\n4434\n4751\n\nAfter change:\n4184\n4287\n4131\n4335\n4097\n\nChange-Id: I1352a3cbcdf6dae93921582726324d91312df5c9\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "967a0adf8b93a23d2a8fef82e06bd913db94ac19",
      "tree": "35b7fbf6eb1899736213e57e11c85d16c1b4853e",
      "parents": [
        "af3994db1b42929666b6a50c3c4b237a25c99951"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 10 16:24:21 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 11 15:38:23 2013 -0700"
      },
      "message": "More allocation code optimizations.\n\n- Inline Class::AllocObject() and Array::Alloc().\n- Inline some short Mutex functions and add LIKELY/UNLIKELY to some\n  Mutex functions.\n- This change improves the Ritz MemAllocTest by ~6% on Nexus 4 and\n  ~10% on host.\n\nBug: 9986565\nChange-Id: I1606c74ddb21676cbc1de1a40e9b076fc23eaea4\n"
    },
    {
      "commit": "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d",
      "tree": "5fc7f5b941724a62f8e3411df09fae431ff5e3cf",
      "parents": [
        "56d947fbc9bc2992e2f93112fafb73e50d2aaa7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:40:12 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 16:49:05 2013 -0700"
      },
      "message": "Fix multiple inclusion guards to match new pathnames\n\nChange-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    }
  ]
}
