)]}'
{
  "log": [
    {
      "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": "a319f4dbeea00701a0d12dc39b7bf0a5323f6b2a",
      "tree": "0564246b1a45a0afe709dd8bd165101a71826c18",
      "parents": [
        "5e67a6a26e12d79e7ab788d4496240ac2fc2be73"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Apr 27 15:04:24 2016 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 28 16:03:34 2016 -0700"
      },
      "message": "Correct monitor pool synchronization\n\nThe previous implementation allowed a thread looking up a monitor\nto see an uninitialized monitor_chunks_ list if the list had\njust been resized. The obvious small fix would be to replace the\nrelaxed load in LookupMonitor with an acquire load. But the\nextra fence (on ARM) may involve an appreciable performance hit.\n\nThis instead redesigns the data structure to avoid the race in\nLookupMonitor, along with the need to use atomics there at all. The\ndown side is a little more address arithmetic in LookupMonitor(),\na mild decrease in the limit on the total number of monitors, and\nuse of one extra page, since we now always reserve space for the\nfirst page worth of monitor chunk pointers.\n\nTo me, the new algorithm feels cleaner and easier to reason about.\n\nAlthough this problem was externally reported, it seems unlikely\nthat it was responsible for frequent failures. It could only\nbe triggered when the monitor chunk list was resized, which should\nbe quite rare.\n\nBug: 28385279\nChange-Id: I433155d91702878f6b114480eda1fbf09706f623\n"
    },
    {
      "commit": "057134bdf40981555a8bf56ab8d703a503b40f8f",
      "tree": "2c58f5bcb68b6b3517eeab67d8be0b3cd5f45362",
      "parents": [
        "93e46b2a14050d8f65088ccb44d6fab6c1c46b2c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 10 08:33:45 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 10 12:03:55 2016 -0800"
      },
      "message": "ART: Release all resource on MonitorPool destruction\n\nTo be valgrind-clean, we need to release the current metadata and\nall chunks on destruction.\n\nBug: 27156726\nChange-Id: Ia51cea139a6e9669975b6ac045f5223cd68f1f6a\n"
    },
    {
      "commit": "4464a3efcf8dcddfb00d7db0c3add9a7acb6642e",
      "tree": "6200ef3fb4796254224dcc3df37aa7986cf269f8",
      "parents": [
        "4a01be2b1a7de5ce68cb5a453eb7cb4fc6c6658b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 03 20:15:47 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 03 20:15:47 2016 -0800"
      },
      "message": "ART: Fix UTF test and monitor pool old chunks\n\nZero-initialize buffers in utf_test. UTF conversion does not\nappend a zero terminator, but the test uses strlen to check the\nbyte count.\n\nMove to unique_ptr for storing old monitor-pool chunk data to\nfix a leak.\n\nBug: 27156726\nChange-Id: I14424c6f98cf47beab6243f83a335bd6a682c638\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": "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": "2c26501d24d929abe096ecce44f91410290b33c0",
      "tree": "be064a46a1da5feb4db07c154506063d3fd95a13",
      "parents": [
        "484e2c2d3531e5bb36f0e1e12f26c708939c6579"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 05 18:15:56 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 06 11:34:20 2014 -0700"
      },
      "message": "Add card table test.\n\nTests some of the functionality supported by the card table.\n\nRemoved some logcat spam from monitor_pool.\n\nChange-Id: I1423816a72572f78aca44552effa2b4c6aac46c8\n"
    },
    {
      "commit": "74240819ae09e29b2753ef38f4eb4be1c2762e2e",
      "tree": "61e2d3aa7268ce49fe77715593896f59feb92fe6",
      "parents": [
        "32710dd4a0232149002a5ae7bde1c640cdffd564"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 17 10:35:09 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 10 00:51:04 2014 -0700"
      },
      "message": "Use memory chunks for monitors on LP64\n\nMonitor IDs in lock words are only 30b. On a 32b system that works\nfine, as memory is usually aligned enough that shifting works out.\nOn 64b systems, the virtual memory space is too large for that.\nThis adds memory chunks into which we allocate the monitors so that\nwe have base_addr + offset and can use the offset as the monitor ID.\nTo allow for relatively compact but growable storage, we use a list\nof chunks.\n\nAdded a global lock for the monitor pool.\n\nChange-Id: I0e290c4914a2556e0b2eef9902422d7c4dcf536d\n"
    },
    {
      "commit": "44d6ff197b340b5ac2a4094db148b39c366317dd",
      "tree": "818c34e10f126b20a22ee7abd5f054b7f34c3100",
      "parents": [
        "b35d722809e93cd2aeaf523255fdfac9eba75f76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 23:11:11 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 23:11:11 2014 -0800"
      },
      "message": "Fix issues with clang and BUILD_HOST_64bit.\n\nChange-Id: Id954d0c1144de6eaf89a4d27d205e3bf6ccb655f\n"
    },
    {
      "commit": "85ae517ebb093d6c3bcc86f87b5a70c720cefd04",
      "tree": "49567501ebde325abf2592459fbd4d5430033bf6",
      "parents": [
        "653661ff54fd2bd8b66389d8f2cec655723d3547"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 23:40:59 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 23:40:59 2014 -0800"
      },
      "message": "Lock ranking fix for monitor IDs.\n\nFree-ing objects holds a lock and so the monitor ID lock needs to be\nof a lower rank.\n\nChange-Id: I594ac04c1f76c5d6fd2e752886040565001d4eaf\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"
    }
  ]
}
