)]}'
{
  "log": [
    {
      "commit": "8f21748bf127012947ed48c40948df3f2d9c85ef",
      "tree": "70d287634fd0b3a2d43ad8de7738c9703eb0a2a6",
      "parents": [
        "ce5c830aede3313ceb22f7b2ca6c30e5b8432972"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 17:16:36 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 09:44:43 2021 +0000"
      },
      "message": "Mark move constructors/assignements as `noexcept`.\n\nAnd unmark `HashSet` copy constructor and copy assignment.\n\nTest: m\nChange-Id: Ia419f3036b2880815be446395e81c7e543388bd9\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "6f382013399fc8ba8b2717e4d24d91978d2bc0f7",
      "tree": "53b6bca63d5a1c34b2a60e5d8ef39f7cb22d4fe9",
      "parents": [
        "2b9c8c94fc92c6f2c7c1703efc1793d17ffde297"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 30 09:47:35 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 01 16:17:17 2019 +0000"
      },
      "message": "Refactor space bitmap to be a value object\n\nRemove the need for pointer indirections at many places, reduce the\namount of code.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I4b1040d29f9ba99ea23c51f70a06af2ffbe496d4\n"
    },
    {
      "commit": "5a0430d0239481f4efb252d60ec9641703b8d456",
      "tree": "cd7bdb45d94e7af3aa3e1bbb5958f930bcee29f6",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 04 14:33:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:20 2019 -0800"
      },
      "message": "ART: Introduce runtime_globals\n\nSplit libartbase\u0027s globals.h into actual globals, and runtime-\ndependent globals which should live in runtime.\n\nBlanket-convert all runtime/ inclusions.\n\nIn future CLs, the number of global constants should be reduced.\nFor example, GC types are only relevant to GC/alloc functionality.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I2d8cd32e0e7ab4084d2f2e96864b5338a78da94e\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "1ca718ec2de53fb5ef2a9211bfcc921311775c90",
      "tree": "f5ce8c3f4edd022765c343cc5a9df8ebd292f0ec",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 12:55:34 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 16:03:00 2018 +0000"
      },
      "message": "Add PreResolved strings dex cache array\n\nFor app images, this dex cache may be prepopulated to speed up\napplication startup. This new dex cache array is created when\n--resolve-startup-const-strings\u003dtrue.\n\nTest: test-art-host\nBug: 116059983\nBug: 118385560\n\nChange-Id: I379dc15174281665d7f4ceb106f7fbf51f89b921\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\n"
    },
    {
      "commit": "8f7ea9ab1703ef52c0c5ca3490e2913ac67f2a16",
      "tree": "63639119688e4f17d7ae2f44e53beed0376fb712",
      "parents": [
        "ed0180ce356a2ecb395422c84c392728289d93ba"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jan 26 17:27:59 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 12 13:00:22 2018 +0000"
      },
      "message": "Various ART GC documentation updates.\n\nAlso some cosmetic and stylistic changes.\n\nTest: mmma art\nChange-Id: I411cc45c6b5cb2a4b0652eeb9c4a6f4a3a274bd6\n"
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "2a1513bdb0a3ecac628cd5620420d66c28413f1e",
      "tree": "8ff5c6658affcaecd9e4628ed4da55d9a4c2341d",
      "parents": [
        "ac50d97b1bf63ff2e0d813774f52499b2da78f6b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 07 20:01:46 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 18:38:10 2017 -0700"
      },
      "message": "Allow non word aligned heap limit for space bitmap\n\nFor the mem map large object space, the bitmap covers the entire\nrange of memory. This is done by passing in max int as the space\ncapacity. Previously, the space bitmap heap limit was computed by\nmultiplying the number of words by the word stride. In 32 bit systems\nthis caused heap limit to be (1 \u003c\u003c 32) \u003d\u003d 0 for the mem map large\nobject space.\n\nThis CL allows storing max int as the heap limit and returning that\nfrom the function.\n\nAdded regression test to large object test.\n\nTest: verify lyft installs and launches with the profile that was causing problems\nTest: test-art-host\n\nBug: 64413646\n\n(cherry picked from commit 76bb14a18283859b3b6e44c2b71ac441d8c252cf)\n\nChange-Id: I34cabe80420e5bbb880adaea5e1737ca8efd8886\n"
    },
    {
      "commit": "0c18338ebae6b3597c882887f8354b64abb5e90f",
      "tree": "fde8624a51b99ef7338784c863a9edf55dc2d08b",
      "parents": [
        "10d39085d5e064ae0afdc898eb32741a660c4b9d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 22:26:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Replace or remove some ObjectCallback Walk functions\n\nReplace with visitor functions in RegionSpace and SpaceBitmap. Remove\nold ObjectCallback version in HeapBitmap. Fix up users. Move some\nthread-safety annotations.\n\nMove ObjectCallback definition to the only remaining user (ModUnionTable).\n\nTest: m\nChange-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c\n"
    },
    {
      "commit": "351c44765279142d15333e2ae02b8a423d195b1b",
      "tree": "6c926a887efe27e9f11934d34fdf3b53bc0952ca",
      "parents": [
        "1847704d0422dcc75ac30ae0d3caaf210c05a755"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 12 19:32:55 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:08:52 2017 -0700"
      },
      "message": "ART: Add templated VisitObjects\n\nAdd templated versions of VisitObjects that accept visitors. This\nallows to use more modern lambdas.\n\nTest: m\nChange-Id: I71a7f59bcae02090b9493bf8b477bb8b6ba649de\n"
    },
    {
      "commit": "5d08fcc21a14190c4dba3028a3e35d281afdd016",
      "tree": "c42de65ced190778342d9b022e400f4a7f9d346b",
      "parents": [
        "57cf00bde719ddc84a6015b107b90a20169e3099"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:56:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:16 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nPull out more dependencies through forward declarations.\n\nTest: m test-art-host\nChange-Id: I7d86726928937f788b956ec9eac91532d66d57ae\n"
    },
    {
      "commit": "7ec38dcb84d61f6172bbb5a303bd5ab7139f7409",
      "tree": "9facc157658bcc2d3d0beeefd9fe055c10598051",
      "parents": [
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 07 15:24:46 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 19 13:22:41 2016 -0700"
      },
      "message": "Persistent bitmap for region space\n\nFix bug where region space was not safely walkable due to holes\nin the unevac regions possibly having dangling class pointers.\n\nNo preformance change, RAM overhead 1.1-1.2% .Heap (non LOS).\n\nTest: test-art-host\nTest: https://android-review.googlesource.com/#/c/288907/\n\nBug: 31522820\n\nChange-Id: Ic4f8b7175e117689cb1ce3e28b082cf63f1f7b5a\n"
    },
    {
      "commit": "2f8eebb10545dc08d27535a4c86f3ae089087d0d",
      "tree": "b6184fda48dafee64135bb828cda75c34ad5061a",
      "parents": [
        "4f0cabfe1324fd42190df29245f33897510b74fd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:59:32 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 11:00:09 2016 -0700"
      },
      "message": "Delete some unused bitmap walking code\n\nNo longer required with newer versions of the image writer.\n\nTest: mm -j32\n\nChange-Id: I496bc49c80d84bfa3aada39f8c6e3e4e4dfb15d4\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": "c381c36aacf977f7e314e6a91e47b31b04639f62",
      "tree": "15d70c007bf5523c47337a4ca7f0af0a1100b03e",
      "parents": [
        "47ec97259fefc03978517814a14e07ea4c09d472"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 23 13:27:53 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 24 13:34:32 2016 -0700"
      },
      "message": "Avoid CAS for marking region space bitmap for baker\n\nOnly have the GC thread mark it. This occurs when popping from the\nmark stack. The race where an object may be pushed to the mark\nstack twice is handled by not scanning if it is already marked.\n\nAlso avoid checking is_active when marking from the GC.\n\nEAAC: 1263 -\u003e 1253 (average of 30 runs)\nGC time: 7.21s -\u003e 6.83s (average of 18 runs)\n\nTimings on 960 mhz N6P.\n\nBug: 12687968\n\nChange-Id: I47e98c3e258829d2ba0babd803a219c82a36168c\nTest: test-art-host, debug N6P booting with baker CC.\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": "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": "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": "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": "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": "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": "bad0267eaab9d6a522d05469ff90501deefdb88b",
      "tree": "1ce689b75184cb322b9edde34d7af938c658a6ae",
      "parents": [
        "0772a9d99c8774463c9076824340eaa4eb66f47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 25 13:08:22 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 18:57:35 2014 -0700"
      },
      "message": "Add native memory accounting through custom allocator.\n\nAdded a custom allocator that lets you pass in a special tag which\nspecifices where the allocation came from. This is used when\ndumping. The performance overhead is low since each allocation only\ndoes a atomic add/sub for each allocation/free.\n\nThe measurements are dumped to traces.txt during SIGQUIT.\n\nExample output:\nI/art     (27274): AllocatorTagHeap active\u003d120 max\u003d120 total\u003d168\nI/art     (27274): AllocatorTagMonitorList active\u003d1572 max\u003d6240 total\u003d11724\nI/art     (27274): AllocatorTagClassTable active\u003d185208 max\u003d185208 total\u003d268608\nI/art     (27274): AllocatorTagInternTable active\u003d430368 max\u003d430368 total\u003d436080\nI/art     (27274): AllocatorTagMaps active\u003d5616 max\u003d6168 total\u003d34392\nI/art     (27274): AllocatorTagLOS active\u003d1024 max\u003d1536 total\u003d2044\nI/art     (27274): AllocatorTagSafeMap active\u003d0 max\u003d51936 total\u003d533688\nI/art     (27274): AllocatorTagLOSMaps active\u003d144 max\u003d1248 total\u003d5760\nI/art     (27274): AllocatorTagReferenceTable active\u003d10944 max\u003d11840 total\u003d19136\nI/art     (27274): AllocatorTagHeapBitmap active\u003d32 max\u003d40 total\u003d56\nI/art     (27274): AllocatorTagHeapBitmapLOS active\u003d8 max\u003d8 total\u003d8\nI/art     (27274): AllocatorTagVerifier active\u003d0 max\u003d18844 total\u003d1073156\nI/art     (27274): AllocatorTagModUnionCardSet active\u003d5300 max\u003d5920 total\u003d56020\nI/art     (27274): AllocatorTagModUnionReferenceArray active\u003d24864 max\u003d24864 total\u003d24864\nI/art     (27274): AllocatorTagJNILibrarires active\u003d320 max\u003d320 total\u003d320\nI/art     (27274): AllocatorTagOatFile active\u003d1400 max\u003d1400 total\u003d5852\n\nChange-Id: Ibb470ef2e9c9a24563bb46422d46a55799704d82\n\n(cherry picked from commit 5369c40f75fdcb1be7a7c06db212ce965c83a164)\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "be2a1df15a31a5223ee9af3015a00c31d2ad2e10",
      "tree": "87e214c9e2b2049af4cf1b89698cd00f8148d022",
      "parents": [
        "c4f72ec44660f804b595bfaf2b959f46fd2ff00d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 00:56:36 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 01:02:58 2014 -0700"
      },
      "message": "Fix GC to use art::Atomic rather than compiler intrinsics.\n\nChanges to SpaceBitmap::AtomicTestAndSet and Space::end_. Space::end_ is made\natomic rather than volatile to fully capture all its uses multi-threaded or not\nuses.\n\nChange-Id: I3058964b8ad90a8c253b3d7f75585f63ca2fb5e3\n"
    },
    {
      "commit": "52e4b43d62896b56f8c2bd041e528472bb4a0d8d",
      "tree": "3a9367c391418c1375a6c86f678b3f047cacc03f",
      "parents": [
        "ef38670cae8462d579da983c1863f96717cccee6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 10 11:22:31 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 19 12:57:05 2014 -0700"
      },
      "message": "Add mark compact collector.\n\nThe mark compact collector is a 4 phase collection, doing a normal\nfull mark_sweep, calculating forwarding addresses of objects in the\nfrom space, updating references of objects in the from space, and\nmoving the objects in the from space.\n\nSupport is diabled by default since it needs to have non movable\nclasses and field arrays. Performance numbers is around 50% as fast.\n\nThe main advantage that this has over semispace is that the worst\ncase memory usage is 50% since we only need one space isntead of two.\n\nTODO: Make field arrays and classes movable. This causes complication\nsince Object::VisitReferences relies on these, so if we update the\nfields of an object but another future object uses this object to\nfigure out what fields are reference fields it doesn\u0027t work.\n\nBug: 14059466\n\nChange-Id: I661ed3b71ad4dde124ef80312c95696b4a5665a1\n"
    },
    {
      "commit": "576ca0cd692c0b6ae70e776de91015b8ff000a08",
      "tree": "de632fae7ee9f096e7a2c54a7fcdace8f6ae7106",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 15:58:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 16:27:45 2014 -0700"
      },
      "message": "Reduce header files including header files.\n\nMain focus is getting heap.h out of runtime.h.\n\nChange-Id: I8d13dce8512816db2820a27b24f5866cc871a04b\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "6f365cc033654a5a3b45eaa1379d4b5f156b0cee",
      "tree": "959754c43ebd2b01e366ac06f21d833340a7fee5",
      "parents": [
        "cb905718826da268d8d8e09296806256f202c9f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 23 12:42:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 29 12:58:08 2014 -0700"
      },
      "message": "Enable concurrent sweeping for non-concurrent GC.\n\nRefactored the GarbageCollector to let all of the phases be run by\nthe collector\u0027s RunPhases virtual method. This lets the GC decide\nwhich phases should be concurrent and reduces how much baked in GC\nlogic resides in GarbageCollector.\n\nEnabled concurrent sweeping in the semi space and non concurrent\nmark sweep GCs. Changed the semi-space collector to have a swap semi\nspaces boolean which can be changed with a setter.\n\nFixed tests to pass with GSS collector, there was an error related to\nthe large object space limit.\n\nBefore (EvaluateAndApplyChanges):\nGSS paused GC time 7.81s/7.81s, score: 3920\n\nAfter (EvaluateAndApplyChanges):\nGSS paused GC time 6.94s/7.71s, score: 3900\n\nBenchmark score doesn\u0027t go up since the GC happens in the allocating\nthread. There is a slight reduction in pause times experienced by\nother threads (0.8s total).\n\nAdded options for pre sweeping GC heap verification and pre sweeping\nrosalloc verification.\n\nBug: 14226004\nBug: 14250892\nBug: 14386356\n\nChange-Id: Ib557d0590c1ed82a639d0f0281ba67cf8cae938c\n"
    },
    {
      "commit": "73d1e17b3afc7d5e56184f90bf819dc64956448a",
      "tree": "6fee546dcebc0c8979a62be7e75c337f79b2ac2e",
      "parents": [
        "e8256e7773a230337c3d137cbf0365f737820405"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 11 17:53:48 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 25 14:08:49 2014 -0700"
      },
      "message": "Enable reading page map without lock in RosAlloc::BulkFree\n\nEnabling this flag greatly reduces how much time was spent in the GC.\nIt was not done previously since it was regressing MemAllocTest. With\nthese RosAlloc changes, the benchmark score no longer regresses after\nwe enable the flag.\n\nChanged Run::AllocSlot to only have one mode of allocation. The new\nmode is finding the first free bit in the bitmap. This was\npreviously the slow path but is now the fast path. Some optimizations\nwhich enabled this include always having the alloc bitmap bits which\ncorrespond to invalid slots be set to 1. This prevents us from needing\na bound check since we will never end up allocating there.\n\nChanged revoking thread local buffer to point to an invalid run. The\ninvalid run is just a run which always has all the allocation bits set\nto 1. When a thread attempts to do a thread local allocation from here\nit will always fail and go slow path. This eliminates the need for a\nnull check for revoked runs.\n\nChanged zeroing of memory to happen during free, AllocPages should\nalways return zeroed memory. Added prefetching which happens when we\nallocate a run.\n\nSome refactoring to reduce duplicated code.\n\nErgonomics changes: Changed kStickyGcThroughputAdjustment to 1.0,\nthis helps reduce GC time.\n\nMeasurements (3 samples per benchmark):\nBefore: MemAllocTest scores: 3463, 3445, 3431\nEvaluateAndApplyChanges score | total GC time\nIter 1: 3485, 23.602436s\nIter 2: 3434, 22.499882s\nIter 3: 3483, 23.253274s\n\nAfter: MemAllocTest scores: 3495, 3417, 3409\nEvaluateAndApplyChanges score | total GC time:\nIter 1: 3375, 17.463462s\nIter 2: 3358, 16.185188s\nIter 3: 3367, 15.822312s\n\nBug: 8788501\nBug: 11790317\nBug: 9986565\nChange-Id: Ifd273a054824028dabed27c07c081dde1816f93c\n"
    },
    {
      "commit": "bbd695c71e0bf518f582e84524e1cdeb3de3896c",
      "tree": "6fe6a128b629abc6a396a192b2e8da1180afeded",
      "parents": [
        "a092ee404ababbf8fc945111dc4a571284c9f02f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 16 09:48:48 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 17 19:01:34 2014 -0700"
      },
      "message": "Replace ObjectSet with LargeObjectBitmap.\n\nSpeeds up large object marking since large objects no longer required\na lock. Changed the GCs to use the heap bitmap for marking objects\nwhich aren\u0027t in the fast path. This eliminates the need for a\nMarkLargeObject function.\n\nMaps before (10 GC iterations):\nMean partial time: 180ms\nMean sticky time: 151ms\n\nMaps after:\nMean partial time: 161ms\nMean sticky time: 101ms\n\nNote: the GC durations are long due to recent ergonomic changes and\nbecause the fast bulk free hasn\u0027t yet been enabled. Over 50% of the\nGC time is spent in RosAllocSpace::FreeList.\n\nBug: 13571028\n\nChange-Id: Id8f94718aeaa13052672ccbae1e8edf77d653f62\n"
    },
    {
      "commit": "e9ea70bb806f7c1dcd57efb6f48f1d6329d5f103",
      "tree": "aa62f233e3f873fd6b5184ff38dd90e702507e2b",
      "parents": [
        "d6b9b62748e120f7a02eb315e5cc8179312a5d1a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 14 15:52:08 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 14 16:49:54 2014 -0700"
      },
      "message": "Fix clang build.\n\nChange-Id: Iaf0b76cfc02bac5f49ab98d494db9a774211f453\n"
    },
    {
      "commit": "a8e8f9c0a8e259a807d7b99a148d14104c24209d",
      "tree": "d8ed041dd3cf490163f6b405102ea36d3b4b0828",
      "parents": [
        "043a7a6182870964021476484b1534106ff20600"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 09 14:51:05 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 14 10:07:47 2014 -0700"
      },
      "message": "Refactor space bitmap to support different alignments.\n\nRequired for:\nUsing space bitmaps instead of std::set in mod union table +\nremembered set.\nUsing a bitmap instead of set for large object marking.\n\nBug: 13571028\n\nChange-Id: Id024e9563d4ca4278f79607cdb2f81895121b113\n"
    },
    {
      "commit": "be73e57308680382efd1e60fa03ac1eb5abcc9c7",
      "tree": "8eab6b957658ad56711a09d269139c9d4b7396ec",
      "parents": [
        "a7b2826fa469c626ff2c3ff26fd848c28bccc092"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 03 10:46:42 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 03 10:46:42 2014 -0700"
      },
      "message": "Fix off-by-1 error in new SpaceBitmap\n\nDo not visit_end in the VisitMarkedRange code.\n\nChange-Id: Iaf02788509b21a102cd1c0e2db3cbd09d0522bfa\n"
    },
    {
      "commit": "cb8aea4bd5e77857c713edeb62bffcb1f7f06a39",
      "tree": "681762eac98329401eed57ffcef56463eb6cd3b2",
      "parents": [
        "d0ab1223cc8c5181e502196a7765790ad2aba3c8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 02 15:39:58 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 02 17:07:55 2014 -0700"
      },
      "message": "Make SpaceBitmap cross-compiling tolerant\n\nChange the order of bits in SpaceBitmap to be the intuitive one:\nOffset 0 is bit 0, instead of the MSB. Then compiling on 32b for\n64b works as expected.\n\nChange-Id: Iee2491eaf06d4b5f8b534b7c980d5719633cb64c\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\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": "db7f37d57b6ac83abe6815d0cd5c50701b6be821",
      "tree": "842c409305d1c5a2b48171889ecd5f7284822f3b",
      "parents": [
        "9a612c6b38c158a199b3cbe469286090b72767ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 10 11:09:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 10 11:24:47 2014 -0800"
      },
      "message": "Refactor large object sweeping.\n\nMoved basic sweeping logic into large_object_space.cc.\nRenamed SpaceSetMap -\u003e ObjectSet.\n\nChange-Id: I938c1f29f69b0682350347da2bd5de021c0e0224\n"
    },
    {
      "commit": "8d31bbd3d6536de12bc20e3d29cfe03fe848f9da",
      "tree": "2373ae08ddddaf1034623df85d647ecf9ac6c831",
      "parents": [
        "57e6d8a99058e5c74d5244b68a5f4d53526fa108"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 13 10:44:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 21 17:01:11 2013 -0700"
      },
      "message": "Throw IOException at source of failing to open a dex file.\n\nBefore is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\nAnd after is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.io.IOException: Zip archive \u0027/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\u0027 doesn\u0027t contain classes.dex\n                at dalvik.system.DexFile.openDexFile(Native Method)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:80)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:59)\n                at dalvik.system.DexPathList.loadDexFile(DexPathList.java:268)\n                at dalvik.system.DexPathList.makeDexElements(DexPathList.java:235)\n                at dalvik.system.DexPathList.\u003cinit\u003e(DexPathList.java:113)\n                at dalvik.system.BaseDexClassLoader.\u003cinit\u003e(BaseDexClassLoader.java:48)\n                at dalvik.system.PathClassLoader.\u003cinit\u003e(PathClassLoader.java:38)\n                at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:128)\n                at java.lang.ClassLoader.access$000(ClassLoader.java:65)\n                at java.lang.ClassLoader$SystemClassLoader.\u003cclinit\u003e(ClassLoader.java:81)\n                at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:137)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\n\nAlso, move dex file verifier messages out of logs.\nIn the process the ClassLinker::dex_lock_ needed tidying to cover a smaller\nscope. Bug 11301553.\n\nChange-Id: I80058652e11e7ea63457cc01a0cb48afe1c15543\n"
    },
    {
      "commit": "11409ae81a3eaf84d7fd2b3c85b8b06d2bae27f0",
      "tree": "a6f10a6360c4ed8012e5893264e68ac4869fde90",
      "parents": [
        "b605a4f9a8797046ea1aa05f3405a77fb9a80a76"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 23 11:49:36 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 25 13:55:02 2013 -0700"
      },
      "message": "Refactor and improve mod-union tables.\n\nAllow support for adding more mod union tables, reduces the amount\nof baked in logic. Adds support for updating mod union table references\nfrom compaction (not for ReferenceCache table yet).\n\nChange-Id: I1beeda00839ed86ef0e853beff5ce10d0ab2b9d1\n"
    },
    {
      "commit": "31e8925781c2302f1d1a9b39e216ba415bfe0d7e",
      "tree": "12a9173c7134bc08712e46f11ee897072b7afb61",
      "parents": [
        "c6dfdacea2fd9e268f70328805b0366cdd6b7b9e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 28 11:29:12 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 29 15:52:42 2013 -0700"
      },
      "message": "Write out image bitmap inside of image file.\n\nWe now create the image bitmap when we generate the image. The image\nbitmap is written after the image inside of the image file. This\nspeeds up dex2oat by making walking the image during heap creation\nunnecessary. This should also help memory pressure by enabling the\nimage bitmap to be swappable.\n\nBug: 10432288\n\nChange-Id: Idebf459ed15edbb41a7d9b9b353934155bce2f19\n"
    },
    {
      "commit": "184e322fe8ddd75c844a1eb2eb1ca32bc02f2d45",
      "tree": "341b6e63b2ec506c07d858d014f9a27fe44297fa",
      "parents": [
        "85affca81271f573c75c32316aa6faa8e52448b1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 03 14:02:57 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 03 16:22:40 2013 -0700"
      },
      "message": "Disable and remove finger.\n\nFinger is useless for multithreaded GC, removing it should provide a\nslight speed up due to avoided comparison.\n\nChange-Id: I7eb7abcbab8d3307807b1086c06d68b2d4bcd2e9\n"
    },
    {
      "commit": "0a9dc05e704bfd033bac2aa38a4fc6f6b8e6cf93",
      "tree": "ceee6b2676b4fbcee37d98bbb3b6e063bcbdd9b2",
      "parents": [
        "d792cc1569c3505d68352c11a72447419ee6eaaf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 25 11:01:28 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 25 15:30:43 2013 -0700"
      },
      "message": "GC data structures allocation tracking\n\nAdds a new stl compatible allocator that is used in most GC data\nstructures. When the data structures allocate and free memory, it\nlets the heap know of how much memory was allocated or freed. Using\nthis info, we dump the approximated stl data structures memory usage\nwhen a sigquit occurs.\n\nThe allocation tracking can be disabled with a compile time boolean\nflag to remove performance impact.\n\nChange-Id: Idddb6713169e07be913bceeb50f305c8573e4392\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c",
      "tree": "525a0f99f9381156367c988133b5d51d5dfef6f7",
      "parents": [
        "f69863b3039fc621ff4250e262d2a024d5e79ec8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 23:40:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:12:43 2013 -0700"
      },
      "message": "Fix cpplint whitespace/blank_line issues\n\nChange-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2\n"
    },
    {
      "commit": "93ba893c20532990a430741e0a97212900094e8c",
      "tree": "019990a1957562c1f573c77297df5923cce98f47",
      "parents": [
        "b1eba213afaf7fa6445de863ddc9680ab99762ea"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:31:49 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:46:12 2013 -0700"
      },
      "message": "Fix cpplint runtime/explicit issues\n\nChange-Id: I352ba0b427f1ff9b22887693952b180eae0839ba\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": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\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"
    },
    {
      "commit": "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461",
      "tree": "2350745da33df6fcb9fb0c9059e55ea5d5ea8f67",
      "parents": [
        "76b6167407c2b6f5d40ad895b2793a6b037f54b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:34:25 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:35:05 2012 -0800"
      },
      "message": "Move logging.h into base/logging.h.\n\nChange-Id: Id68f85f7c3a71b156cb40dec63f94d4fb827f279\n"
    },
    {
      "commit": "cbd6d44c0a94f3d26671b5325aa21bbf1335ffe8",
      "tree": "438c25a083cd1487b40ca8a05cef8d96339b83a9",
      "parents": [
        "6aa852b927a12ba16f5c05ee7d044ac1372feb7f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Nov 17 14:11:25 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Nov 19 15:50:13 2012 -0800"
      },
      "message": "C++\u0027ification of Quick compiler\u0027s casts\n\n o Eliminate old useless LIR casts.\n o Replace remaining C-style casts with new C++ versions.\n o Unified instruction encoding enum\n o Expand usage of the auto-generated ostream helpers for enum LOG messages.\n o Replaced all usages of intptr_t with uintptr_t.\n o Fixed bug in removeRedundantBranches, and moved to common code\n\nChange-Id: I53211c0de1be913f958c8fde915296ac08345b7e\n"
    },
    {
      "commit": "02b6a78038f12c109f95eb31713cfc747f5512f1",
      "tree": "c36841561a47b2ce3cf15b00fdae822e5a6c5b64",
      "parents": [
        "bcc2926b9721f94c17ed98fae5264cc98f0e066f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 13:51:26 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 06 16:07:36 2012 -0800"
      },
      "message": "Parellel mark stack processing\n\nEnabled parallel mark stack processing by using a thread pool.\n\nOptimized object scanning by removing dependent loads for IsClass.\n\nPerformance:\nPrime: ~10% speedup of partial GC.\nNakasi: ~50% speedup of partial GC.\n\nChange-Id: I43256a068efc47cb52d93108458ea18d4e02fccc\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "e0f0cb3d855cb5e926452b5e1ec8457adc4e454e",
      "tree": "20d9b12d5c27761905c3e8aed007d53734b55556",
      "parents": [
        "23435d0df17e19fe312a08ff151464d4b9f83e81"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 11:26:00 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 14:05:08 2012 -0700"
      },
      "message": "Large object space\n\nThe large object space helps prevent fragmentation by putting large objects in mem maps insead of the alloc space.\n\nInstead of mark and live bitmaps it uses mark and live sets.\n\nChange-Id: Iada5db70b88a1572007d8af921fa353681a55dc7\n"
    },
    {
      "commit": "506de0cfe98c10b908d2ddb119bbb201542cbfcd",
      "tree": "c0b5d7e961e1e02639409228f6fda7f6b73a1ba7",
      "parents": [
        "5f5a2c00c4db2db90c198c1af65f0565221abe67"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 17 15:39:06 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 17 15:39:06 2012 -0700"
      },
      "message": "Make unlikely check always on, move hot code to header file.\n\nChange-Id: I23b6f9d98d61eb6d3e2fd8254ebe7d2b513fe781\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "357e9be24c17a6bc2ae9fb53f25c73503116101d",
      "tree": "a170276eabf319d107242f928a68463fe0b5ebfb",
      "parents": [
        "66aee5cd571cf4739d2735769304202ea5051fb8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 11:00:14 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 17 10:06:50 2012 -0700"
      },
      "message": "Sticky mark bits \"generational\" GC\n\nSticky mark bits GC. Sticky mark bits implemented using allocation stack which enables us to use the previous GC live bitmap as the mark bitmap.\n\nRemoved heap_end_ since checking versus it caused more overhead than it saved.\n\nRemoved check for impossible allocations at the start of AllocObject since these allocations will just fall through and fail anyways.\nThese allocations do not happen often enough for it to be worth checking for.\n\nA bunch of constant optimization performance improvements.\n\nPre locking regression benchmark improvements:\nDeltablue: ~0.3 sec runtime.\nCaffeineMark: ~300 total score due to improved string score.\n\nChange-Id: I15016f1ae7fdf76fc3aadb5774b527bf802d9701\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "dcf8d7283bd51714f3faa55b631ae4103dc98b51",
      "tree": "ce4f6f1b836387d9b448fa1583295a38d7d743b8",
      "parents": [
        "259487a86ea29c840d586610f099e8177aab3f40"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 02 14:55:54 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 03 12:41:54 2012 -0700"
      },
      "message": "Fix zygote live/mark bitmap size.\n\nFixed some errors with the sizes of mark/live bitmaps after zygote space creation.\n\nThis was causing us to occasionally have overlapping mark/live bitmaps.\n\nAdded a new verify objects mode called VERIFY_OBJECT_FAST which only checks objects and not their classes.\n\nRefactored/optimized some of the scanning code to use xor to clear bits instead of and+not.\n\nChange-Id: Iec87d9157f69e6a558e300950b51d8781679e3f7\n"
    },
    {
      "commit": "cc236d74772dda5a4161d9bc5f497fd3d956eb87",
      "tree": "2cd44e980357edc5b1a477fb261adb590d34c7c7",
      "parents": [
        "f1ea6b072b8b473eabf91d1d582fb5966ffea4ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 20 10:29:05 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 27 14:30:51 2012 -0700"
      },
      "message": "Zygote space / partial collection support.\n\nThe zygote space is now created right before zygote fork. This space has new allocations into it disabled, this reduces memory usage since we have more shared pages.\n\nPartial collection works by marking all the zygote space -\u003e alloc space references by using a mod-union table and then recursively marking only over the alloc space.\n\nApproximate improvements;\n\nDeltablue time goes down ~0.5 seconds.\n\nCaffeinemark score goes up ~300.\n\nSystem memory usage goes down ~7MB.\n\nChange-Id: I198389371d23deacd9b4534f39727eb641786b34\n"
    },
    {
      "commit": "b062fdd4cb097fbae69b4bcb479c34d83ecab8ca",
      "tree": "215ea8fb42828a0f753ac5bd424ca098ce748342",
      "parents": [
        "ca314c6a1be1b4cc11f4d284da90af7dc8a4ce25"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 03 09:51:48 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 11 17:17:46 2012 -0700"
      },
      "message": "Each space has its own bitmap(s)\n\nEach alloc space now has One mark+live bitmap. Each image space has only one live bitmap.\n\nChange-Id: I2e919d1bd7d9f4d35d0e95ed83a58df6f754df6e\n"
    }
  ]
}
