)]}'
{
  "log": [
    {
      "commit": "ad06b985bb8792bc82835acbe93eda8f9839c6d2",
      "tree": "4d380c3dd6c1b6cd0512ea0fad14c5616ab54d62",
      "parents": [
        "85347bd18d47066ea9a214d29cec994472ad18ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 17 16:38:59 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 17 16:43:37 2016 +0000"
      },
      "message": "Make ImageWriter and PatchOat helper classes nested.\n\nNested classes are better for encapsulation. For example,\nwe\u0027ve had an art::FixupRootVisitor in both image_writer.cc\nand patchoat.cc and we didn\u0027t get an ODR violation only\nbecause these two files are never used in the same process.\n\nTest: Rely on the TreeHugger.\nChange-Id: I39a86994923a9c0faa5f05d8c9ede982ce9c0c4c\n"
    },
    {
      "commit": "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": "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": "a62cb9bb6cb2278cb41ab0664191623e178c6a4f",
      "tree": "62263dac644e2d80a34a04f2649e4741a1bed6f4",
      "parents": [
        "bb8d501c9bb882a8927c6ceda07bf9577e06c3e1"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jun 30 09:18:25 2016 +0000"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jul 07 10:01:04 2016 +0000"
      },
      "message": "Revert \"Revert \"Optimize IMT\"\"\n\nThis reverts commit 88f288e3564d79d87c0cd8bb831ec5a791ba4861.\n\nChange-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115\n"
    },
    {
      "commit": "88f288e3564d79d87c0cd8bb831ec5a791ba4861",
      "tree": "dd051a7b2985d1af3fea91ad6000de4bdc701a19",
      "parents": [
        "e36389f20c83083c0aaba2dcac0888951e55cae1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:17:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:41:25 2016 +0000"
      },
      "message": "Revert \"Optimize IMT\"\n\nBug: 29188168 (for initial CL)\nBug: 29778499 (reason for revert)\n\nThis reverts commit badee9820fcf5dca5f8c46c3215ae1779ee7736e.\n\nChange-Id: I32b8463122c3521e233c34ca95c96a5078e88848\n"
    },
    {
      "commit": "badee9820fcf5dca5f8c46c3215ae1779ee7736e",
      "tree": "982948a67a88a1f9a734c935f919f8d307969f48",
      "parents": [
        "614968198625a6693666bdc1e5609e2f663f5638"
      ],
      "author": {
        "name": "Nelli Kim",
        "email": "nelli.kim@samsung.com",
        "time": "Fri May 13 13:08:53 2016 +0300"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 10:05:47 2016 -0700"
      },
      "message": "Optimize IMT\n\n* Remove IMT for classes which do not implement interfaces\n* Remove IMT for array classes\n* Share same IMT\n\nSaved memory (measured on hammerhead):\nboot.art:\nTotal number of classes: 3854\nNumber of affected classes: 1637\nSaved memory: 409kB\n\nChrome (excluding classes in boot.art):\nTotal number of classes: 2409\nNumber of affected classes: 1259\nSaved memory: 314kB\n\nGoogle Maps (excluding classes in boot.art):\nTotal number of classes: 6988\nNumber of affected classes: 2574\nSaved memory: 643kB\n\nPerformance regression on benchmarks/InvokeInterface.java benchmark\n(measured timeCall10Interface)\n1st launch: 9.6%\n2nd launch: 6.8%\n\nChange-Id: If07e45390014a6ee8f3c1c4ca095b43046f0871f\n"
    },
    {
      "commit": "e42888f9df4163303244070c65d5229d3e201742",
      "tree": "c3c3e380ed16676186040f1da6042fc2cd58e041",
      "parents": [
        "7f98c9a6babe3a21d84ce1f1e1273c99975a47f5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 14 10:49:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 27 12:45:30 2016 -0700"
      },
      "message": "Write conflict tables in image\n\nAdd image sections for runtime methods and conflict tables. This\nmakes it that we do not need to fake up a length prefixed array\nfor runtime methods.\n\nReduces .art private dirty and PSS.\n\nSystem wide .art PSS goes from 32.5MB to 30.5MB after system boot.\n\nBusiness card .art private dirty goes from 588K to 504K.\n\nIncreases image size by ~100K.\n\nBug: 27906566\n\n(cherry picked from commit cda9386add68d94697449c6cb08b356747e55c21)\n\nChange-Id: I38cbe3150c3eeb385b8cad7cf93614e3980f4162\n"
    },
    {
      "commit": "a13abbac97d38d726f9e7d5d786b571a5d37c227",
      "tree": "aec05c6218144261c55dbd64f9c97f555bc5202c",
      "parents": [
        "121c8a6494f2224830ed0ca33df5af0d8c077647"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 21 10:23:16 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 21 12:01:48 2016 -0700"
      },
      "message": "Fix heap check.\n\nPreviously, we only checked the image we were patching. This did not\nwork if the referent was in another image. Fixed the DCHECK to check\nall the boot images.\n\nBug: 28286961\n\n(cherry picked from commit 488849c584337a1aae8413a1d1e0fad8043bf672)\n\nChange-Id: If2e8e48b500935d0969e8673816d28218888bd13\n"
    },
    {
      "commit": "6eb6a39bdcf669655190d40d20f8d2e663b262f4",
      "tree": "1b56bd9527b56c8d24598245de0597bbb4f73d50",
      "parents": [
        "0665090c880ec22655ff8b82084746c4407ea792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 10 20:18:37 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 12 16:26:03 2016 -0800"
      },
      "message": "ART: Simplify patchoat\n\nRemoved unused configurations. Cut out cruft that isn\u0027t used anymore\nsince multi-image. Make it smaller to not require new selinux\npermissions for OTAs.\n\nSplit up the main function, to make the flow clearer for image vs\napp/oat.\n\nBug: 25612095\nBug: 26317072\n\n(cherry picked from commit 02bc0b70beedfe258c2147c2b4a205fbf3d6eebc)\n\nChange-Id: Ieb55bd1a13cbb44fd0e2979a8a61a509df9c1e7e\n"
    },
    {
      "commit": "0d2af30df4000101b7c4b4e6b6350460a141edc8",
      "tree": "a2599d57c060914fb10c9ba06f96ccd8a17a42e0",
      "parents": [
        "376a6f3dbae7b71a6fc2c339ec416d3407277308"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 04 17:38:06 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 04 19:08:51 2016 -0800"
      },
      "message": "Fix multi-image TODOs in patchoat.\n\n- Reinstated checks that were still valid (one check was removed).\n- Removed unused path that patches only images.\n\nBug: 26317072\n\n(cherry-picked from commit e271fe1e2797205c57c052212c32139234f781ea)\n\nChange-Id: I0e140cb110abbfa469c097c805657ecfdc8552d6\n"
    },
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "208a5cb383dd9dcd3461f89b74af5df67dc8d794",
      "tree": "9ed531a445d24a7685e577b1c5822e50dc1c1b1d",
      "parents": [
        "5337bbfbd1cd502bb2842698a6b2a543ab6a6c32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 02 15:44:07 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 03 16:29:03 2015 -0800"
      },
      "message": "Store class tables in the image\n\nReduces how long it takes to load an application image.\n\nN5 boot.art size\nBefore: 8007680\nAfter: 8122368\n\nAlso reduces boot time by how long AddImageClassesToClassTable\nused to take (~20ms).\n\nChanged class hashes to be uint32_t to fix cross compilation. We need\nserialized hash tables to be valid with different pointer sizes.\n\nBug: 22858531\n\nChange-Id: I463fc83f499ff75f509e80c253a55b9116ee5b89\n"
    },
    {
      "commit": "4b00d3415beb7a816a3b5948f43f3b2e4b856ea8",
      "tree": "a54f8c2704fbe9b9ffebdc0f1984a777beb80ac0",
      "parents": [
        "991842a5273d20695dd5f35eb9a9e28c386c5b4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 13 10:42:08 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 16 15:05:36 2015 -0800"
      },
      "message": "Refactor some patching logic\n\nReduce duplication since app images in-place relocation will require\nthis code also.\n\nBug: 22858531\nChange-Id: Ibb901b67267e27ef3bc2a0baff77189d4dcd018a\n"
    },
    {
      "commit": "0eb76d2603a52d3e8759fcf480586886d70433d1",
      "tree": "8d38a89d6de7be77c437c9df12bf646b793ba639",
      "parents": [
        "4500fcbe682d666a24c2e8f6e0cb90cfb35d3fa3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 11 18:03:47 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 14 19:34:57 2015 +0000"
      },
      "message": "Make patchoat match offset when given a patched image\n\nPreviously if we gave patchoat a patched image and a already patched\n(but improperly relocated) oat file it would not correctly patch the\noat file to the same offset as the image.\n\nBug: 22599792\nBug: 23119724\nChange-Id: I8773022bd75c2e0b7eb529893b147cbd8792bcad\n"
    },
    {
      "commit": "54d220eb9cc51215d75b9e0fe921b94bebbb3fd6",
      "tree": "fe08749dea3ca6cad97bce48416beb37203efdf5",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 30 16:20:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 18:15:22 2015 -0700"
      },
      "message": "Move ArtFields and ArtMethods to be a length prefixed array\n\nFixes race conditions between changing method and fields arrays\nbeing seen in the wrong order by the GC.\n\nBug: 22832610\nChange-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f\n"
    },
    {
      "commit": "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": "d39645e22b8db1767cf64dc1200a9e4b2f939ed2",
      "tree": "fd6488a428600f222c5a411e91ed9f1f3a280b05",
      "parents": [
        "15306dcd03208f062737239753ab1eccfe91403f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 09 17:50:29 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 11 14:56:08 2015 -0700"
      },
      "message": "Move image intern table into image\n\nPreviously we recreated this intern table during runtime startup.\nThis added 50-100ms of boot time.\n\nFixed bug where we didn\u0027t copy over hashcodes into the image.\n\nDeleted some stale code.\n\n(cherry picked from commit fac3a390a247fe33d4873773d742aad4cc100118)\n\nBug: 20727525\nBug: 19569780\nChange-Id: I08959e9aa2a73cedb52f393033e2ffea3a26e76b\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "2f6cdb01f74772c1c521a125776ef57ea3c73d43",
      "tree": "163f90841f02b9529997f4e3eea65e512e4795a3",
      "parents": [
        "58565098b2298041ccc97371a3cc486df88d51b3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 11 00:17:53 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 11 19:14:10 2015 +0100"
      },
      "message": "Relocate DWARF using .oat_patches.\n\nThe current solution is to hard-code knowledge of DWARF in the linker.\nThis works for simple use of DWARF, but breaks as soon as I try to do\nanything more complex.  Making the linker fully support DWARF would be\nnon-trivial task and would be essentially rewrite.  Using .oat_patches\nis much easier solution.\n\nRelocating .debug_* sections required extending .oat_patches to support\nmore sections than just .text.  I have encoded each section as\nnull-terminated section name followed by ULEB128 deltas.\n\nThe ULEB128 encoding shrinks .oat_patches for .text by factor of\nabout 6 with 64-bit compiler, and factor of 3 with 32-bit compiler.\n\nOn the other hand, it grows by the extra .oat_patches for DWARF which\nwere not present before (if debug symbols are included).\n\nOverall, it is still a clear improvement even with the DWARF patches.\n\nChange-Id: I78ffeda0f8a3da03341995a3b5ef15c954e16e9f\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": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "d582fa4ea62083a7598dded5b82dc2198b3daac7",
      "tree": "c76704c266ef4687eab425612ddf3fd24f93fe8d",
      "parents": [
        "f20076ff813b8012096ff31af236d59db3c0f4e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 05 23:46:43 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 16:17:46 2014 -0800"
      },
      "message": "Instruction set features for ARM64, MIPS and X86.\n\nAlso, refactor how feature strings are handled so they are additive or\nsubtractive.\nMake MIPS have features for FPU 32-bit and MIPS v2. Use in the quick compiler\nrather than #ifdefs that wouldn\u0027t have worked in cross-compilation.\nAdd SIMD features for x86/x86-64 proposed in:\n  https://android-review.googlesource.com/#/c/112370/\n\nBug: 18056890\n\nChange-Id: Ic88ff84a714926bd277beb74a430c5c7d5ed7666\n"
    },
    {
      "commit": "46774767fcf7780d1455e755729198648d08742e",
      "tree": "09a5d87ff0acbc7eb1fa94ec901ba10009178f03",
      "parents": [
        "11bd683f6dbebe2f3d02fa383fc9dbc69a83ace8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 22 11:37:02 2014 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 27 20:19:37 2014 -0700"
      },
      "message": "ART: Add support for patching and loading OAT files compiled with PIC\n\n* Images (.art) compiled with pic now have a new field added.\n* isDexOptNeeded will now skip patch-ing for apps compiled PIC\n* First-boot patching now only copies boot.art, boot.oat is linked\n\nAs a result, all system preopted dex files (with --compile-pic) no\nlonger take up any space in /data/dalvik-cache/\u003cisa\u003e.\n\nBug: 18035729\nChange-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62\n"
    },
    {
      "commit": "d4c4d953035d4418126d36517e402f411d6a87f3",
      "tree": "735aacf812bbac7c1ae7c0788c1ca6f58cfa82ee",
      "parents": [
        "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 20:31:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 21:30:37 2014 -0700"
      },
      "message": "Some code clean-up.\n\nChange-Id: I4b745fd5298cd61c793e3b57514b48347bd66c0e\n"
    },
    {
      "commit": "62d1ca3182a6cbb921799825f43ad36821233fd7",
      "tree": "54d9663f5ce10f41e95fe774d4e4841c1a78bbc3",
      "parents": [
        "63462448ca4e377074a10a4720aa22f71154dbe9"
      ],
      "author": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Wed Sep 03 17:24:56 2014 -0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Oct 03 11:25:11 2014 -0700"
      },
      "message": "ART: Prepare for ELF64.\n\nOnly expose necessary interface in ElfFile, and move all details into template class ElfFileImpl.\n\nChange-Id: I9df2bbc55f32ba0ba91f4f3d5d0009e84a2ddf74\n"
    },
    {
      "commit": "c8ccf68b805c92674545f63e0341ba47e8d9701c",
      "tree": "fb360323538cb242ebf7c5c0aca27d3a0bce0abb",
      "parents": [
        "fcabfbe577c0fd40910b565beb681bd4b66f6c5d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:07:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:13:48 2014 -0700"
      },
      "message": "ART: Fix some -Wpedantic errors\n\nRemove extra semicolons.\n\nDollar signs in C++ identifiers are an extension.\n\nNamed variadic macros are an extension.\n\nBinary literals are a C++14 feature.\n\nEnum re-declarations are not allowed.\n\nOverflow.\n\nChange-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a\n"
    },
    {
      "commit": "4b0d2d99b596eebd6da45679896d3af54bc5a935",
      "tree": "9c5f70398324b53edb47d1819648618f58ca24e4",
      "parents": [
        "484e2c2d3531e5bb36f0e1e12f26c708939c6579"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 06 13:37:23 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 06 15:12:32 2014 -0700"
      },
      "message": "Make patchoat use the sht_entsize when patching.\n\nThis fixes an occasional problem with multiarch use of patchoat.\n\nChange-Id: I80799de36774720bd985704f9b709a8378bb5af5\n"
    },
    {
      "commit": "a59dd80f9f48cb750d329d4d4af2d99d72b484d1",
      "tree": "36958b15842205addaf6d2a13e40823eab47c8bc",
      "parents": [
        "84568fdf08f8f476292996ad653b4453d2894d23"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 02 16:28:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 22 08:24:14 2014 -0700"
      },
      "message": "Runtime can now be set to require relocation\n\nAdd a pair of runtime flags -Xrelocate and -Xnorelocate that can force\nthe runtime to require that all files that are run are relocated, to\nprevent attacks based on the known art base address.\n\nAdd support for running patchoat on oat files compiled without an image.\n\nChange run-test to have new --prebuild and --relocate flags.\n\nBug: 15358152\n\nChange-Id: I91166c62dd1ab80e5cbcb7883a2cd0d56afca32d\n"
    },
    {
      "commit": "eefbe39799126afdf7d315a79359b9da23d1cef5",
      "tree": "7818d2124be53d5b01c11118ba6fe26f86adc0d5",
      "parents": [
        "c4c601b6dbe5e1a7321d663b36a531a87f21e931"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 08 09:53:18 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 08 10:06:08 2014 -0700"
      },
      "message": "Fix some style nitpicks\n\nChange-Id: Icfdd327f4ddf129f0a8607162c09ba271c1d49d9\n"
    },
    {
      "commit": "53cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3c",
      "tree": "c0129ef3de7148dc6a114449b4f751a560283eb0",
      "parents": [
        "ae2efea4582df773f80be274bdc754f732b07df3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 12 11:26:29 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 07 15:19:58 2014 -0700"
      },
      "message": "Add patchoat tool to Art.\n\nAdd a new executable called patchoat to art. This tool takes already\ncompiled images and oat files and changes their base address, acting as\na cheap form of relocation.\n\nAdd a --include-patch-information flag to dex2oat and code to add\nrequired patch information to oat files created with the quick compiler.\n\nBug: 15358152\n\nChange-Id: Ie0c580db45bb14ec180deb84930def6c3628d97d\n"
    }
  ]
}
