)]}'
{
  "log": [
    {
      "commit": "de19a25625823496bcf8f92352f709c7a3924bfa",
      "tree": "4742efe941270c72a8e966c0bdb788b87f6e5b1d",
      "parents": [
        "fad6f4dbf914418e7b16fc78a77578edfa618b72"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 14 15:56:35 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 15 18:11:37 2016 -0700"
      },
      "message": "Ensure class is initialized when reading its fields from debugger.\n\nBug: 31016523\nTest: mm run-jdwp-tests-ri \u0026 mm run-jdwp-tests-host\nChange-Id: I6bccf8464de7ec1e0c1fdac862cbacf890abede6\n"
    },
    {
      "commit": "26ead4975e1752e8ae2f5ed6fda73876c4f9ff59",
      "tree": "2ce1b047f54bfb4287483de8eaf79cd12f6058b6",
      "parents": [
        "79f6d706185714dccf80aca20d9f3261337473ae",
        "268764da8022cafa5661c5b514eaa343c5257e57"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "message": "Merge \"Make ScopedAssertNoThreadSuspension no overhead for non-debug\""
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "268764da8022cafa5661c5b514eaa343c5257e57",
      "tree": "7c4b46847a6dcfac7a1492edd79b434fb1a0d6ea",
      "parents": [
        "f9decf915f6fa5b33fceba7c10c119e4cad481e5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 12:09:38 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 15:18:29 2016 -0700"
      },
      "message": "Make ScopedAssertNoThreadSuspension no overhead for non-debug\n\nPreviously it required Thread::Current() which may not be free.\nThe plan is to add a lot more ScopedAssertNoThreadSuspension in\nthe codebase.\n\nAlso cleaned up callers.\n\nBug: 31458474\nChange-Id: I5a1621a5435476504d22266cc01a9bf26aab7568\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": "064d24e921978a1d44f23aced69d2657d81e9af4",
      "tree": "4f6ead01ca2c43c990dea3fe0b66e44b91f78946",
      "parents": [
        "2851ce0ca21742e3fb33583e87b4da577138d572"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 25 03:52:40 2016 +0000"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 24 21:04:48 2016 -0700"
      },
      "message": "Revert \"Revert \"Fix debugger calling new String().\"\"\n\nBug: 30951794\nTest: mm -j24 run-jdwp-tests-host\n\nThis reverts commit 6f48d4c72e7b4011a6d9652734bd1cb0c389790b.\nThis also includes the reversion of commit\n528954f55e3173b02df2822c1fc680873d6a91c8.\n\nChange-Id: If0b2ae39cb2a9db80b567bb8d5761d504433632d\n"
    },
    {
      "commit": "f91b5f33728bcad74f0d95bf6d81478e4ea77626",
      "tree": "a5b419744a003704a10df4f6129036d831925965",
      "parents": [
        "85f692bc439bd8b14f59b44fc271f3beaf079da7",
        "6f48d4c72e7b4011a6d9652734bd1cb0c389790b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:48:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 13:48:48 2016 +0000"
      },
      "message": "Merge \"Revert \"Fix debugger calling new String().\"\""
    },
    {
      "commit": "85f692bc439bd8b14f59b44fc271f3beaf079da7",
      "tree": "ea72de38103b6471cea5da81300393a2a63d1986",
      "parents": [
        "66e7ba24b7f5708515dff42e19d75ae29df1bf37",
        "528954f55e3173b02df2822c1fc680873d6a91c8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:48:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 13:48:08 2016 +0000"
      },
      "message": "Merge \"Revert \"Fix debugger missing handle between adding and tagging object.\"\""
    },
    {
      "commit": "528954f55e3173b02df2822c1fc680873d6a91c8",
      "tree": "4ff7d247cf019a0fda43210d463771eb9fd4607c",
      "parents": [
        "9e0878494cdacd0877a1614041efc38ebb053017"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:40:41 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:40:41 2016 +0000"
      },
      "message": "Revert \"Fix debugger missing handle between adding and tagging object.\"\n\nBug: 30951794\n\nThis reverts commit 9e0878494cdacd0877a1614041efc38ebb053017.\n\nChange-Id: I3fe1c7e466ae25a81cd37ee5a4aacb40b55686a1\n"
    },
    {
      "commit": "6f48d4c72e7b4011a6d9652734bd1cb0c389790b",
      "tree": "96d0e872b50daad88dbb77357c8e0102b1a4b69d",
      "parents": [
        "f15ec05896ddc5fec1f224ef97bdfebb72b5a855"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:39:08 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:39:08 2016 +0000"
      },
      "message": "Revert \"Fix debugger calling new String().\"\n\nBug: 30951794\n\nThis reverts commit f15ec05896ddc5fec1f224ef97bdfebb72b5a855.\n\nChange-Id: Ie7fc565159a19a19a269099f21db833d470aef7c\n"
    },
    {
      "commit": "51a0c4fe2dabeb21525d377047b68031b6fe0186",
      "tree": "83a02e40cd106e6decbf100870b2e931232820db",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6",
        "3aaa37bba53d6df0265793de48b4b0b57327e57a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 00:50:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 00:50:39 2016 +0000"
      },
      "message": "Merge \"creating workflow for mirror::String compression\""
    },
    {
      "commit": "3aaa37bba53d6df0265793de48b4b0b57327e57a",
      "tree": "ce795803f0f10003eb3d96d9348da620937675b3",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Jul 29 14:46:37 2016 -0700"
      },
      "committer": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Tue Aug 23 15:12:26 2016 -0700"
      },
      "message": "creating workflow for mirror::String compression\n\nAll-ASCII String characters are stored in 8-bit blocks\ninstead of 16-bit. The compression has not taken place, but all\nworkflow are in the code already (changing kUseStringCompression in\nstring.h file to TRUE will enable the feature)\n\nNotes: Feature works on interpreter only without optimizing\n\nTest art: m ART_TEST_INTERPRETER\u003dtrue ART_TEST_OPTIMIZING\u003dfalse\n          test-art-host\n\nAlso tested with String tests from libcore/:\n1. libcore.java.lang.StringTest\n2. libcore.java.lang.StringBufferTest\n3. libcore.java.lang.StringBuilderTest\n4. libcore.java.lang.OldStringTest\n5. libcore.java.lang.OldStringBufferTest\n\nMemory improvement is 33% (from 6.03% to 4.03%, total String memory\nfrom all apps per total memory of all apps) measured on Angler\nwith Hprof tools\n\nBug: 31040547\nChange-Id: I9cc92c265ebf1305fc06b5fc33efd83797660cce\n"
    },
    {
      "commit": "9e0878494cdacd0877a1614041efc38ebb053017",
      "tree": "d0b74ea1324541e70534c2fa64bc0781ffffedc5",
      "parents": [
        "82a4c22ef4277faa08bf588c560c3dddcca559d2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 22 11:34:41 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 22 11:35:55 2016 -0700"
      },
      "message": "Fix debugger missing handle between adding and tagging object.\n\nBug: 30951794\nChange-Id: Ic9c5f296efe839a8961ab00d08afc54c5443bc17\n"
    },
    {
      "commit": "f15ec05896ddc5fec1f224ef97bdfebb72b5a855",
      "tree": "9a8c3117d032160e5d8ab63be8465858bc2acef7",
      "parents": [
        "6670bd2098264d4c4e19750ab4741121da7ee54b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 19 18:31:39 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 19 18:31:39 2016 -0700"
      },
      "message": "Fix debugger calling new String().\n\nUsed to return an empty string instead of the newly created String.\nRequires accompanying jdwp test fix to test String contents.\n\nBug: 30951794\nChange-Id: I27a8e0afcbe7e32a14dd3c394e44b6cd4d3c58f6\nTest: mm -j24 run-jdwp-tests-host\n"
    },
    {
      "commit": "aef0c91e0b03f26c3947ccf2608d92ae6eae632d",
      "tree": "08d60d0b9b18a87fa02cfd71ccbe94dcc54f785c",
      "parents": [
        "c10ad423024432df36f6360eafca8332d07b946a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 08 10:20:28 2016 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 09 17:41:17 2016 +0200"
      },
      "message": "JDWP: fix method argument count\n\nThe arguments count must include \u0027this\u0027 for instance method.\n\nBug: 30673627\nTest: make test-art-host\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: Ie582e3bb3e27a2572ce5d3c66990f02650eee61b\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": "faf18de818bc39c25d0c87715c19c375b761a463",
      "tree": "688f1d8244c57679394be092dd17c5c282884dcb",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa",
        "98810e34804e224e5ab302cd353393f72a45202b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "message": "Merge \"Remove SetStateUnsafe in Debugger::Disconnected.\""
    },
    {
      "commit": "98810e34804e224e5ab302cd353393f72a45202b",
      "tree": "696693111fa137965fe03efc29a20b687cfb3b66",
      "parents": [
        "783d02e527107e91880f12bddf41afd313919132"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 24 14:55:40 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 11:45:13 2016 -0700"
      },
      "message": "Remove SetStateUnsafe in Debugger::Disconnected.\n\nThe debugger thread has the exclusive mutator lock and doen\u0027t need to\nswitch to runnable while updating instrumentation.\n\nThis avoids a spurious failure of the DCHECK in the jdwp test.\n\nBug: 25262836\n\nChange-Id: Ibfd0bc3936a877fd264396fcc4cc1af8d19a1645\n"
    },
    {
      "commit": "3fd448a8b7903b00fceaed5853306e2d7eb31c72",
      "tree": "5ef4f837bb7d0be0f1af86279f22b64b18db8000",
      "parents": [
        "73660f87497cadb77e8b33b4f5e01c34baae00dc"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 10 14:30:41 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 15:33:19 2016 -0700"
      },
      "message": "Fix an assert during jdwp debugging.\n\nWhen debugger attaches, we patch entry points of methods in framework code.\nDuring that process, it\u0027s possible that some method\u0027s declaring class isn\u0027t\nresolved yet. We need to relax one assert for that case.\n\nBug: 28630805\nChange-Id: I59fd488ad75417a64b52321677ffcac6ccdc5ce1\n"
    },
    {
      "commit": "8f95cf3cb5f715b1277de9cd7fade07ce4b230be",
      "tree": "b66e14b2df428fed5117caa709bc70462d351892",
      "parents": [
        "defccc564481c2c892792680c6abb6020e36bacd"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 19 11:14:06 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 19 11:17:09 2016 -0700"
      },
      "message": "Fix a deadlock between debugger and GC.\n\nAvoid a deadlock between GC and debugger\u0027s SuspendAllForDebugger where\nGC gets suspended during GC.\n\nFix the jdwp tests with the CC collector, but the deadlock is NOT\nspecific to the CC collector.\n\nBug: 25800335\nBug: 12687968\nChange-Id: I8f2869872bce4692d943020072e35ebf5a4e68a5\n"
    },
    {
      "commit": "458b105a9cbab6156d72acf3b9372291dba9097a",
      "tree": "af01339c9c0e18a16455ebc64098bb683055c94b",
      "parents": [
        "fd9ac384741435902d4fc03034f4cbaafaa85780"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 29 14:02:55 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 31 13:00:07 2016 -0700"
      },
      "message": "Obtain stack trace outside of critical section\n\nFixes deadlock if the stack walk does allocations, changed stack\ntrace format to prevent slowdown.\n\nAdded missing GetInterfaceMethodIfProxy to fix a crash in maps.\n\nBug: 27857910\n\n(cherry picked from commit 23428587d32361736d4c5e0ba7270c7602695a43)\n\nChange-Id: I64373bcd87a68fdd1b58fb855db2b16c9f6ed36b\n"
    },
    {
      "commit": "1153282aa91292b740289ab7612a481e5c6bc167",
      "tree": "75e86834c4c0f68144340ab5c6d7933f5b27adaa",
      "parents": [
        "459898dc4470559ba1e1d578bc52a914d1f573f5",
        "6300fd77033817664aee3056c4ff5fab85698d2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:53:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 21 14:53:09 2016 +0000"
      },
      "message": "Merge \"Code cleanup between debugger and jit.\""
    },
    {
      "commit": "6300fd77033817664aee3056c4ff5fab85698d2b",
      "tree": "55e14dca88cad3d5a733a9a7a50534556cb838b5",
      "parents": [
        "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 18 09:40:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:42:47 2016 +0000"
      },
      "message": "Code cleanup between debugger and jit.\n\nThis is to allow secondary dex files to be fully compiled.\n\n- No need to do full deopt anymore for breakpoints: code in boot.oat\n  is deoptimized as soon as the debugger attaches (and we decided that\n  existing frames could not be debugged), and application being\n  debugged is compiled debuggable.\n\n- jit should only call UpdateMethodsCode if exit stubs are not\n  installed due to lock violation otherwise (the lock level of the\n  jit code cache is lower than the deoptimization lock).\n  This part needs an overall cleanup beyond the scope of this change.\n\nChange-Id: I38d85dcb270db746c1d6b0ceb7893a1aad8c9655\n"
    },
    {
      "commit": "f448016e70fa91269d3750384aab1ac98d7896fd",
      "tree": "9bb4414c763d13c2e178472d3bf1ee73bce97392",
      "parents": [
        "8e57978b5f330a322f05644c2db7fa8ce89b1b46"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 16 00:06:24 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 17 11:54:49 2016 +0000"
      },
      "message": "Do not JIT boot image during native-debugging (keep AOT code instead).\n\nThe performance impact is currently significant and being able\nto debug framework is not our primary goal for native debugging.\n\nChange-Id: I3366c2a6317004f9dd16700b271a6c9b974f1c6e\n"
    },
    {
      "commit": "6ea1a0e2168c8d9b6d97c075c73a72d84080f45b",
      "tree": "7a75b6191dc6539823c174e06256dd09ae50c637",
      "parents": [
        "b4982aab07ae4cdaba13b4cb99306459d92e52d5"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jan 29 12:12:49 2016 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Feb 23 13:44:50 2016 -0800"
      },
      "message": "AOT compile framework code as non-debuggable\n\nWhen a debugger attaches, we patch method entry points in framework\ncode to interpreter bridge. The code will later be jitted as debuggable.\n\nChange-Id: Id148069ccad95e2339ba214742ae3ef4f084f495\n"
    },
    {
      "commit": "1aa8ec2ccdd7bedb6d30d91c89f1e94ab23c4439",
      "tree": "7b2079631ed5d8350c63c7ed3f6d0393e951ce8c",
      "parents": [
        "c3cf1d2e35a45bd2e2c60fbc9c2a1a6a56dfc529"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 10:34:47 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 19:58:25 2016 -0800"
      },
      "message": "Fix up dex cache strings stored in classes\n\nPreviously we left the image pointer instead of fixing up the pointer\nto the one in the BSS. This only showed up because JIT does the same\nas boot image, bypassing null check.\n\nFixed a bug where oat files without embedded dex cache arrays would\nget their dex cache arrays corrupted.\n\nAdded a non virtual class visitor for performance.\n\nBug: 26846419\nBug: 22858531\n\nChange-Id: I8cd0d61e440f753b4628ddb8c932eb23a0a81027\n"
    },
    {
      "commit": "81f0f953c4bb159997046c962d44cb1898b1778d",
      "tree": "dffd9e7cdd53da2771770a59832e76769b696c0b",
      "parents": [
        "a27d59b2b98a02b2e9e5dbe40623e7a97aa1e8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 20 16:25:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:19:55 2016 +0000"
      },
      "message": "Move backward branch instrumentation to all branch.\n\nThis is in preparation for osr, and later dead branch profiling.\n\nChange-Id: I4597c0784c894c310f295dd534967d67dcefa419\n"
    },
    {
      "commit": "7929a489a9b256020d3add793198ba1e97e426e6",
      "tree": "e4d0344e577666b431d8f508d2be1f7788d8679a",
      "parents": [
        "7a62feae77ebec5119f5e9bea2a6c1cb36ed3084"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:33:49 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:33:49 2015 -0800"
      },
      "message": "ART: Fix JDWP GetClassLoader command\n\nThe command is spec-ed to take a type, and return the type\u0027s\nclassloader. Decode the input as a class, just like all the\nother ReferenceType commands already do.\n\nBug: 26349019\nChange-Id: I129fbc844f529fa9234742ffe128d7ac41ce6d7e\n"
    },
    {
      "commit": "7a62feae77ebec5119f5e9bea2a6c1cb36ed3084",
      "tree": "55ecd644063bc95fb68871580a0f1e23cac631ea",
      "parents": [
        "bb41b250153308ef51664d7a6cc26c6a2e588fb7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 31 03:31:57 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:32:58 2015 -0800"
      },
      "message": "Revert \"ART: Fix JDWP GetClassLoader command\"\n\nThis reverts commit 40144cc022d321e2ec28d7fac2f5a24ba6714aff.\n\nThe implementation should not DCHECK.\n\nBug: 26349019\nChange-Id: I9238ee0b05f8a150f55773e78301ded9e8b38334\n"
    },
    {
      "commit": "40144cc022d321e2ec28d7fac2f5a24ba6714aff",
      "tree": "b36e6011fc73e4c3ca33c34627b7420927129519",
      "parents": [
        "4ee5c8c8389a231a5db030d77276daca6333c4d1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 29 16:23:20 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 29 16:23:20 2015 -0800"
      },
      "message": "ART: Fix JDWP GetClassLoader command\n\nThe command is spec-ed to take a type, and return the type\u0027s\nclassloader. The input is thus already a Class, not a generic Object.\nFix the implementation to not always return null.\n\nBug: 26349019\nChange-Id: I4aa075902f4a112624edc644d3540a59eea057c8\n"
    },
    {
      "commit": "1fc9ac74a51ee319422ed1a6a741bf635f909517",
      "tree": "cd4981c8a3ac21ae3b0d149ac8e68401e4ed15ed",
      "parents": [
        "0e8f03a7ef78bed5511b6eab4b17b594068c9418",
        "c4affaa361cd73681ad9c493b5b41fae94fb5be0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 18 23:10:49 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 18 23:10:49 2015 +0000"
      },
      "message": "Merge \"Make use of new method iterators.\" am: 045d37ae20\nam: c4affaa361\n\n* commit \u0027c4affaa361cd73681ad9c493b5b41fae94fb5be0\u0027:\n  Make use of new method iterators.\n"
    },
    {
      "commit": "51a64d5d4fe91842cc2a5f2a412441147c145683",
      "tree": "dca598e01c333bce50b50d931516027987b4f343",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 13:55:59 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 14:18:45 2015 -0800"
      },
      "message": "Make use of new method iterators.\n\nChange-Id: I1f82f17951339b2054a1dac87bde79f9e803fc4a\n"
    },
    {
      "commit": "02e0382b7d277f5d7587a4717619d03e344d52bc",
      "tree": "8605c35fa321eb55f1f3b538fe7b287473d596f2",
      "parents": [
        "64a12038e19d5c9d1fc4080281299c07ac4aa0a0",
        "ed3ae851f06f8ff6c2c0e86011e3df83267a7f09"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:14:07 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 16 19:14:07 2015 +0000"
      },
      "message": "Merge \"Remove references to dlmalloc specific functions\" am: 1f312652e1\nam: ed3ae851f0\n\n* commit \u0027ed3ae851f06f8ff6c2c0e86011e3df83267a7f09\u0027:\n  Remove references to dlmalloc specific functions\n"
    },
    {
      "commit": "1f312652e138e05328b9c4c738d3ecbab2d09ae9",
      "tree": "412147f93661a5663f1cef6e72657aaadb5f0cb7",
      "parents": [
        "c3ca1e6543ef5e717183c059e68ac34597be7022",
        "e6465bc8a52cfa3995b4072810cdb7ab397a7793"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:00:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 19:00:55 2015 +0000"
      },
      "message": "Merge \"Remove references to dlmalloc specific functions\""
    },
    {
      "commit": "75009e8acd80cc4111a4cebbc350dad895ad1f55",
      "tree": "7114dfe68c682ef4692d0c2b0448fb87056d4d6e",
      "parents": [
        "c5b8e84236126a1176d97fe8f924d8cb40c1de6e",
        "2b1db0743f7af28785b92e30436cce20143872be"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 15 08:19:06 2015 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 15 08:19:06 2015 -0800"
      },
      "message": "Merge \"Refactor DexFile::DecodeDebugInfo.\" am: 96c9de9510\nam: 2b1db0743f\n\n* commit \u00272b1db0743f7af28785b92e30436cce20143872be\u0027:\n  Refactor DexFile::DecodeDebugInfo.\n"
    },
    {
      "commit": "b06e28e5b9fbabe3e69b18f31bf353eaff5d0c1f",
      "tree": "18ff419c6a3b80ecff3125f13b72a8851e848ab0",
      "parents": [
        "f71b3ade9c99ce2fec2f5049ce9c5968721e1b81"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 13:15:00 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 15 15:11:50 2015 +0000"
      },
      "message": "Refactor DexFile::DecodeDebugInfo.\n\nSplit the method into two - one for locals and one for positions.\nAll uses of the method request only one of the two and it makes the\ncode slightly cleaner. The position variant requires fewer parameters.\n\nExpose additional line table information which was previously ignored\nby the decode method (prologue, epilogue, source file).\n\nChange-Id: Idf8ba98fa58ea0d2103932b5cc0af81365885107\n"
    },
    {
      "commit": "e6465bc8a52cfa3995b4072810cdb7ab397a7793",
      "tree": "129552e367889a6b6a19a5010613bd0fe34cd80b",
      "parents": [
        "a8be6ae6fcf1c58c0c2067739352e16b92972c41"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 18:55:02 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 20:44:25 2015 -0800"
      },
      "message": "Remove references to dlmalloc specific functions\n\nRemove references to internal libc dlmalloc_* functions\nso that we can hide them for lp64\n\nChange-Id: I13977bea63d900e1819052140e3bd6bc1f2fc759\n"
    },
    {
      "commit": "27786445aa50d7082071baf5eba356348079e167",
      "tree": "1c4778b17880a863b724aa3b55c234031a57336b",
      "parents": [
        "2f4b12233a2620deed38c20026ef878cb819f2a3",
        "eec0132c41ad3e1c3f8daf2996824a593429577c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 23:45:29 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 30 23:45:29 2015 +0000"
      },
      "message": "Merge \"Make debugger support default methods.\" am: 996935e961 am: 679841d2be\nam: eec0132c41\n\n* commit \u0027eec0132c41ad3e1c3f8daf2996824a593429577c\u0027:\n  Make debugger support default methods.\n"
    },
    {
      "commit": "6c8467ffc427a513dc2fdea7ed9eeb0bb54d30ef",
      "tree": "a3f0258c260e3818c32aa254d484724fde1d16d3",
      "parents": [
        "b9bbbeb2b05d74cae0fe0682a26b19f5a7e68d8c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Nov 20 15:03:26 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 22:39:43 2015 +0000"
      },
      "message": "Make debugger support default methods.\n\nSupports breaking on, stepping into and through default methods.\n\nBug: 25549445\nBug: 24618811\n\nChange-Id: I1a47e3263a0624adbd9e83b99d0acd7bef7757a4\n"
    },
    {
      "commit": "464595f53abe4370ee6f589eb472e2036e39bce7",
      "tree": "eb623b90c89b6dd57aed8b535588fc6ca858bab2",
      "parents": [
        "099ab4d06857ccbe642d98ba25df1eb02aee99c7"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Tue Nov 24 11:59:59 2015 +0000"
      },
      "committer": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Tue Nov 24 11:59:59 2015 +0000"
      },
      "message": "Enso ThreadGroup.groups is an array not ArrayList\n\nThreadGroup.groups in the enso branch uses plain\narray in place of ArrayList. debugger.cc code\nneeded minor adjustments to access it.\n\nBug: 25857261\nChange-Id: I77ffb92b64a3642933c3240dbadedab5def5dc1b\n"
    },
    {
      "commit": "a7a3ba792d608535e4d53ccc3b7a89d110609f12",
      "tree": "2c9910ecd7ea709ed02f65878b3ada9b06e97be1",
      "parents": [
        "3e1ff83fb210818df66b7a0a7bc70dca6c7b9d47",
        "636b9252af8d8848dbf8f30b7e9638867b62c791"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 18 10:29:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 18 10:29:22 2015 +0000"
      },
      "message": "Merge \"Support deoptimization only to set vreg\""
    },
    {
      "commit": "636b9252af8d8848dbf8f30b7e9638867b62c791",
      "tree": "ef2d3080fab4c51e320114e012bcde49aaa089e4",
      "parents": [
        "6bf6e438cd4746effce0b26d504c54100191c988"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jul 31 16:40:24 2015 -0700"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 17 11:57:12 2015 +0100"
      },
      "message": "Support deoptimization only to set vreg\n\nThis CL removes the old API that was used to update vreg. We now rely\nexclusively on deoptimization to change the value of a vreg (mainly\nfrom the debugger). This allows to have only one mechanism working\nwith both Quick and Optimizing compilers. It also remove run-test\n455-set-vreg which was the only user of the old API.\n\nThis CL also renames StackVisitor::SetVReg[Pair]FromDebugger to\nStackVisitor::SetVReg[Pair] to reflect that change.\n\nBug: 25428216\nChange-Id: Ib09510185280dbd0f6d02c52549ae9671c187e32\n"
    },
    {
      "commit": "dc184177452ed438718befccd9d984cc93de51cc",
      "tree": "808ea305a96e13a65e031e69e4c0aa0640a3183e",
      "parents": [
        "2264f624e41acf09b17c3961bd52966e43f2b58f",
        "a5891e81a2fb833307cf7c7e7267070dc0223dc8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 09 08:57:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 09 08:57:28 2015 +0000"
      },
      "message": "Merge \"Fix interaction between JIT and instrumentation.\""
    },
    {
      "commit": "a5891e81a2fb833307cf7c7e7267070dc0223dc8",
      "tree": "a7acb2a0f2836fee2729db2b795d15bb3f586863",
      "parents": [
        "2fa684206b0a8bd203d07e1edf74a839b498f74f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 14:18:27 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 16:05:42 2015 +0000"
      },
      "message": "Fix interaction between JIT and instrumentation.\n\n- The JIT needs to go through the instrumentation to update\n  entry points.\n- The instrumention needs to know if a method got JITted\n  to know if needs to deoptimize.\n\nbug:25438583\n\nChange-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1\n"
    },
    {
      "commit": "a3e1377f3f389a33f6a283796ea5cea1583911f3",
      "tree": "4e78b7db0e3a8f3b58321bf2bcabe8231f369ec7",
      "parents": [
        "55a77ef5f99c2b056eb5f2820c1ff3b29c0ec270"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 12:09:44 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 15:50:45 2015 +0100"
      },
      "message": "JDWP: fix returned tag for ClassType.NewInstance\n\nBug: 25490662\nChange-Id: I0c369f04342a60caef4f7462005804307a410d18\n"
    },
    {
      "commit": "56d5e50a7519495777f3223e21b9d73d8ceaa6ad",
      "tree": "0f69811b89768281809c69d66966fbb9f463f706",
      "parents": [
        "4bbe7807f313bb8e59131812c31bf31513094f8f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 03 17:38:35 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 03 17:38:35 2015 +0100"
      },
      "message": "JDWP: fix java.lang.String creation\n\nBug: 25439464\nChange-Id: I56f11ed942585e8110dbbba1178cf11ec76e032f\n"
    },
    {
      "commit": "41af5e50d0b5e9d13084a61cfe9dfa6b6e201a40",
      "tree": "d8c47581bf110021fa10c05351d33c5f873e11e3",
      "parents": [
        "13f6af0f9c8af1fce34e9610ad9d30d4d0434478"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 11:10:46 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 15:42:42 2015 -0700"
      },
      "message": "Store method as ArtMethod* instead of jmethodId in Breakpoint\n\nPreviously we needed a ScopedObjectAccess for Dbg::VisitRoots,\nthis could cause deadlocks in the following scenario:\n\nGC:\nGoes to runnable state while holding mutator lock as shared held.\nThis occurred in Dbg::VisitRoots when calling Breakpoint::Method.\n\nOther thread:\nCalls SuspendAll and suspends the GC thread before it can go back\nto suspended thread state. This thread then attempts to exclusive\nlock mutator lock, but the GC is suspended while holding it in a\nshared state.\n\nBug: 25336094\nChange-Id: Idcb8d34c314b1d6951abe533a0cfa586cc07d7d6\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "a6b1ead81603513fd40b77fd72f06d8cb1f35276",
      "tree": "3ba5add50b6b0034024e65c6de3aea1004ec5161",
      "parents": [
        "bcb71a2ce5bcb516f76fc9fe838b61b0c48e1210"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 06 10:32:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 06 13:24:20 2015 -0700"
      },
      "message": "Mark breakpoint roots\n\nUsed to prevent class unloading on methods that have breakpoints.\n\nBug: 22720414\nChange-Id: I9aee8bcbfdf253607e89dfc55a50ba3f11d99206\n"
    },
    {
      "commit": "aa5168291c46f9b418d989bccf2d8e09338a83e6",
      "tree": "bad4c44f503962fc5d74c3079f14f9af1ce7864d",
      "parents": [
        "1aba494df441c31836e5b7d4d8e408420a93cb8d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 02 15:53:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 11:50:18 2015 -0700"
      },
      "message": "Add exclusion between instrumentation and GC\n\nInstrumentation calls VisitClasses while exclusive holding the\nmutator lock. This can cause deadlocks since VisitClasses needs to\ndecode JNI weak globals. If the system weak slow path flag is set,\nthen we wait holding locks while exclusive holding the mutator lock.\nThis causes a deadlock since the GC cannot acquire the mutator lock\nto sweep system weaks.\n\nThis fixes a deadlock seen in one of the tracing tests.\n\nChange-Id: I580152118e068a70f309dcc19df4144afec835dd\n"
    },
    {
      "commit": "8ac9c91cfa2408cf8d27bcf12785a60923aab775",
      "tree": "fec6ebbdf2031aa648fa3699b3511048d64e0656",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 01 15:58:41 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 01 18:06:22 2015 -0700"
      },
      "message": "Make SetStateUnsafe run checkpoints before going to suspended\n\nThis prevents cases where we can get a checkpoint request in runnable\nand then unsafe set to suspended. This was bad behavior since the\ncheckpoint may not be run in a timely manner.\n\nBug: 24191051\nChange-Id: I73605c1a1154f67699f3902141f3232ab064793f\n"
    },
    {
      "commit": "99170c636dfae4908b102347cfe9f92bad1881cc",
      "tree": "1ecff5dd69ea20b09e622cb88e7835a55dfa4be8",
      "parents": [
        "5836f8465ddd0a7f5cbeec9c30d739bd0619867f"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jul 06 11:10:37 2015 -0700"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 17 17:07:22 2015 +0200"
      },
      "message": "Deoptimization support in optimizing compiler for setting local values\n\nDue to compiler optimizations, we may not always be able to update\nthe value of a local variable in a compiled frame (like a variable\nseen as constant by the compiler). To avoid that situation, we simply\ndeoptimize compiled frames updated by the debugger so they are\nexecuted by the interpreter with the updated value.\n\nWhen the debugger attempts to set a local variable (actually a DEX\nregister or a pair of registers) in a compiled frame, we allocate a\nShadowFrame associated to that frame (using its frame id) and set the\nnew value in that ShadowFrame. When we know we are about to continue\nthe execution of the compiled frame, we deoptimize the stack using\nthe preallocated ShadowFrame (instead of creating a new one). We\ninitialize it with the current value of all DEX registers except\nthe ones that have been set by the debugger. Therefore, the\nShadowFrame represent the runtime context modified by the debugger.\n\nBumps oat version to force recompilation.\n\nBug: 19944235\nChange-Id: I0ebe6241264f7a3be0f14ee4516c1f7436e04da6\n"
    },
    {
      "commit": "26f728661a08062a373a3203b72dc2555c2aed2d",
      "tree": "4f6e8168ac7ca422c7de3c7cdda6db21958358fd",
      "parents": [
        "b6f7dd330f115fc977d1d5a10122c41c9dd7c210"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 09:52:07 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 11:15:12 2015 +0200"
      },
      "message": "Cleanup thread access in StackVisitor\n\nAdds method StackVisitor::GetThread to give access to the visited\nThread* so we no longer need to copy that pointer in subclasses.\n\nAlso adds a few missing const and DISALLOW_COPY_AND_ASSIGN.\n\nChange-Id: I57649ee7742ef4ef1e01447ac2fbb66f977b22eb\n"
    },
    {
      "commit": "4f55e22630d99ca0edd9e951e5ee96b57bb9b980",
      "tree": "84b7d55a6a7c31c09ed2865cc1bc2f4393476533",
      "parents": [
        "2d06e08d25bbf8eff1de945736a60810009e59ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 13:26:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 11 13:14:20 2015 -0700"
      },
      "message": "Add and use ScopedSuspendAll\n\nUsage replaces most SuspendAll and ResumeAll calls.\n\nChange-Id: I355683a5365876242cea85a656dcb58455f7a294\n"
    },
    {
      "commit": "e2cb7f297dfeb1a6e19c3b8d45b742427054fa56",
      "tree": "b5501cd32e859351b5f058da56e62accb03a3821",
      "parents": [
        "15982a940dd0032e225f8d2829609d7a35a3d842",
        "520633bebd2bf4d70884d30f179dbde9f275aac6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "message": "Merge \"Support deoptimization on exception\""
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\n"
    },
    {
      "commit": "520633bebd2bf4d70884d30f179dbde9f275aac6",
      "tree": "0006fb9db71545d9aaa88df3952a7488b30b2ae6",
      "parents": [
        "e0a49e3a93aa54b9e603d797d9e925a98742753a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 08 17:03:36 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 10 17:39:56 2015 +0200"
      },
      "message": "Support deoptimization on exception\n\nAllows to deoptimize when an exception is being thrown. We only\ndeoptimize if an executable frame (starting from the catch handler)\nneeds to be executed with the interpreter.\n\nBefore executing deoptimized frames, the exception is restored. The\ninterpreter starts by handling this exception at the point of the\nthrowing instruction.\n\nBug: 23714835\nChange-Id: I0c5f7d4b257644acf12210aae8e5b6bb0f4af1f7\n"
    },
    {
      "commit": "957fb8930766ae422568e7b1b816159a9e9bc18c",
      "tree": "849a611f978656f1c85182402e1ef2c8ca50c5e6",
      "parents": [
        "68ffda887e35f35e978f2f607b7a91e44a5e1969",
        "05792b98980741111b4d0a24d68cff2a8e070a3a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "message": "Merge \"ART: Move DexCache arrays to native.\""
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "e3485840d071c98e946c4be6864bcd1932630653",
      "tree": "94fcd57be24b2a011ef2f7dede01116b48246cbb",
      "parents": [
        "40abca79b09107f33d9a44d5ce3620b5ef45fe44",
        "2e1c16d9a4695e4b5cab3ed3ec95f7a88e69c79f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 31 14:37:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 31 14:37:58 2015 +0000"
      },
      "message": "Merge \"JDWP: check object is assignable in ArrayReference.SetValues\""
    },
    {
      "commit": "2e1c16d9a4695e4b5cab3ed3ec95f7a88e69c79f",
      "tree": "82b8c3e9dcfccec6d42d23f1ad3429723142b86f",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Aug 28 11:57:49 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 31 16:36:05 2015 +0200"
      },
      "message": "JDWP: check object is assignable in ArrayReference.SetValues\n\nIf the object\u0027s type is not compatible with the array\u0027s type, we\nreturn a TYPE_MISMATCH error.\n\nBug: 23602995\nChange-Id: Ibd838dd301e40db4f08c74c9783707d1c87c67fd\n"
    },
    {
      "commit": "76f55b030d2517d434f227bee2363c3fb760e5c6",
      "tree": "92d625bb90b05ad976ff174ac25a112a7fda3bd1",
      "parents": [
        "24011e738d77dedb28c1b4d6ff34445cc2acc4a7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 21 16:10:39 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 27 14:36:01 2015 -0700"
      },
      "message": "Synchronize JNI critical calls with the CC collector thread flip.\n\nJNI critical calls (like GetArrayElementsCritical) would need to block\nfor the whole GC run to finish if the CC collector GC is ongoing. This\nCL changes it so that they don\u0027t need to block for the GC run, but\nonly for the duration of the thread flip operation, which is much\nshorter. This is valid due to the to-space invariant.\n\nBug: 12687968\nBug: 19235243\n\nChange-Id: I1b6b4ae4fa539ddc0ec50b10ae8c8709f2a12fe8\n"
    },
    {
      "commit": "3bf1027cd09397f1c076f523de7b4553227d36d3",
      "tree": "b0f65f0e6dcfdda8fc17d57b5611a8e761f5dce5",
      "parents": [
        "d9c4d2e9a9bc01fd82a895091126406081fafb1f",
        "d4032e4e2d454b11dba74acc4824abb8a846f707"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 19 12:53:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 12:53:38 2015 +0000"
      },
      "message": "Merge \"JDWP: remove suspend count check on invoke\""
    },
    {
      "commit": "3887c468d731420e929e6ad3acf190d5431e94fc",
      "tree": "67dacb849e722e33e118b97714a48e467c06cbd5",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "message": "Remove unnecessary `explicit` qualifiers on constructors.\n\nChange-Id: Id12e392ad50f66a6e2251a68662b7959315dc567\n"
    },
    {
      "commit": "02f0771bba69edd34b0b112902bb9132ed099c75",
      "tree": "669634d6447ee626e306665ebf3881c17be4ffec",
      "parents": [
        "94800f46da0aded5152545322ad842f89e8a21d8",
        "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Aug 05 18:18:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 18:18:59 2015 +0000"
      },
      "message": "Merge \"Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\""
    },
    {
      "commit": "90ef3db4bd1d4865f5f9cb95c8e7d9afb46994f9",
      "tree": "3c6f8989e0c6e027382a3c08d221ba97afd72291",
      "parents": [
        "1cf85515600d298a2c9e4de137c0926949205097"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 15:19:41 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 18:56:54 2015 -0700"
      },
      "message": "Address some comments and clean up\n\nChange-Id: I538cf204f1c89d5fc81f8fc5e5800fcf1cf87359\n"
    },
    {
      "commit": "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7",
      "tree": "87e8252ee6ca23138f867989a098b7c4338c21a5",
      "parents": [
        "1d558db0bcd841140f6fe1c6ba2e9a6de131649d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:18:43 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:19:56 2015 -0700"
      },
      "message": "Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\n\nThis reverts commit a315f5c546b796f55f4872bb6efc15eb858d9639.\n\n--\n\nRevert \"runtime: cleanup class_linker out-parameters and formatting\"\n\nThis reverts commit bc1d78daa463572c5a770cdca858a3b51d8e1b7b.\n\n--\n\nRevert \"base: replace raw pointers for out-parameters with safer out\u003cT\u003e\"\n\nThis reverts commit fb326cffc679cab8eb873b9e44795706f023cb3c.\n"
    },
    {
      "commit": "bc1d78daa463572c5a770cdca858a3b51d8e1b7b",
      "tree": "d33ae78ec8b5e1f9e4b088545e346306d3c4f04e",
      "parents": [
        "8e568d079b052db118d83e6e89ea36ab4fa4bfb1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jul 30 16:39:45 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 31 16:03:00 2015 -0700"
      },
      "message": "runtime: cleanup class_linker out-parameters and formatting\n\n* Use out\u003cT\u003e instead of parameters\n* Fixes up some other signatures to be more correct\n* Reformat parameters to be one per line if they can\u0027t fit on one line\n* Reformat locks to be one per line if they can\u0027t fit on the decl line\n\nChange-Id: Ib71b08707d3ed0bb85299406c0b23a1de4e92a1c\n"
    },
    {
      "commit": "c60e1b755c5632dfeb04c333489ede52ee5c945f",
      "tree": "9582a0ffc99e4ad11dcd5d95dd97b09bc6acc5bf",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "message": "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS\n\nUse the proper define.\n\nChange-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085\n"
    },
    {
      "commit": "e0671ce5a6cb34e44e3afefa8e29c0c3e30d2855",
      "tree": "124d68a72435aebb5698e068c12555f121282cca",
      "parents": [
        "aac046772b6d0b8dd23f3296fd82b29ef35dca25"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 28 17:23:28 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 29 10:01:59 2015 -0700"
      },
      "message": "Clean up class visitors\n\nMove from function pointers to virtual function visitors.\n\nChange-Id: I68cb83c1d2ed9b5a89f8e534fe7ca4bbc1c91f45\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": "14c3bf91b2ec434295ec84d6446f495fb7de6d5c",
      "tree": "6eaa51c263b84b7a11f40f21be993987cdca80f3",
      "parents": [
        "6d3d1e3d866a880b4df95ba96ed126c1723e3dd6"
      ],
      "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": "Fri Jul 17 15:34:40 2015 -0700"
      },
      "message": "Change intern table to not use WaitHoldingLocks\n\nBug: 22423014\nChange-Id: I9e16b8cb4def72fff73f1783a182877105feb7aa\n"
    },
    {
      "commit": "41656de4b6440bcd1bea5fb785f0710153b2bc68",
      "tree": "394de0c87c3dd3ddc3e6c88919187a077ab609b4",
      "parents": [
        "a100332ee0f4b842c28ec2448f97e40a882cd837"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jul 06 18:53:15 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed Jul 08 20:02:54 2015 +0000"
      },
      "message": "Fix potential bugs in allocation tracker\n\nAdd a missing visit allocation records call in concurrent copying collecter.\nHandle null class objects if we support class unloading, and issues\nwith disallow and allow new allocation records.\n\nBug: 20037135\nChange-Id: I59b7321c281e0d79a620501b2f43e36d2a576203\n"
    },
    {
      "commit": "d4032e4e2d454b11dba74acc4824abb8a846f707",
      "tree": "8e81a560690c3d28a9400b072ec5ef38b7e439ee",
      "parents": [
        "06b6da5ccbf9246c697b8cf1be0ba58ce616521d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 12 15:47:34 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jul 06 10:46:07 2015 +0200"
      },
      "message": "JDWP: remove suspend count check on invoke\n\nWe used to return an error when the debugger asks to execute a method\nin a thread that is suspended more than once. The reason was to avoid\nblocking the JDWP thread on a thread that is still suspended.\n\nNow invoke commands are handled asynchronously, we no longer need to\nthat check.\n\nBug: 19397712\nChange-Id: I14f259923753e411dcce514183ed6fccd4cd0450\n"
    },
    {
      "commit": "42c3c33df8b6eefc4ba532f1981282510f109928",
      "tree": "4526fe0a718f2e8ead36907aa9984c402d5a1888",
      "parents": [
        "bb3dabaf804e0d0bd2bf34e69091b2f86fd4e78b"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Tue Jun 23 16:38:25 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Thu Jun 25 14:10:48 2015 -0700"
      },
      "message": "Make allocation tracker use less memory\n\nThe allocation tracker no longer keeps recently allocated objects live.\nInstead it just keeps their class objects live as strong roots. This fixed\nthe gc-stress test failure for 098-ddmc.\n\nAlso fixed the issue in DisableNewSystemWeak() for allocation tracker,\nby making new allocation to wait until GC\u0027s sweeping to complete. I didn\u0027t\nfeel any significant slowdown with this wait.\n\nBug: 20037135\nChange-Id: I6a98188832cf7ee478007e3788e742dc6e18f7b8\n"
    },
    {
      "commit": "d4a02cfc59a449d216faa687cfdaa4252b4a433f",
      "tree": "dc0f23e71354403028b30f1592637e2d66db6210",
      "parents": [
        "0022bdf71533a300deebe6b9cf287eaceeb0620c",
        "33d6903e570daf8f3cf7c1f6ebd9a6dd22c7c23c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 23 13:53:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 23 13:53:55 2015 +0000"
      },
      "message": "Merge \"Replace some run-time assertions with compile-time ones in ART.\""
    },
    {
      "commit": "1ed11b9ad5512cf464cb1686640df53201fa5297",
      "tree": "7466c110f74fb736a8f00e60a24ac841d1c0213a",
      "parents": [
        "5aa39bb7f93cf2e8f73d06980b588519825c0ebe"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Thu Jun 11 22:47:35 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jun 22 16:52:08 2015 -0700"
      },
      "message": "Restore DDMS recent allocation tracking\u0027s behavior\n\nMake the allocation tracker mark recently allocated objects as roots,\nso the allocation records are not swept. Because DDMS needs recent\nallocation tracking records even for dead objects. This should fix\nthe flaky failures for 098-ddmc test, but it cannot pass GC stress\ntest (OOM). Re-enabled 098-ddmc for other tests.\n\nThere should be an option to not mark them as roots, when user only\nneeds HPROF dump with traces but not DDMS\u0027s recent allocation tracking.\nProbably need to add a new JNI API function for this option.\n\nThere could be another way to keep a second list of recent allocation\nrecords and maintain a type cache for them, so not to make the objects\nroots. But it\u0027s more complex, and not sure which is better.\n\nAlso reduce memory usage for AllocRecordStackTrace objects, and change\ndefault stack depth to 16. Rename the property that controls the stack\ndepth to \"debug.allocTracker.maxStackDepth\" so developer can change it.\n\nBug:20037135\nChange-Id: Ic6b9ae87bdcda558be6f14ded8057e763439881c\n"
    },
    {
      "commit": "33d6903e570daf8f3cf7c1f6ebd9a6dd22c7c23c",
      "tree": "8069008292fe085d051300f1a871392dc413f820",
      "parents": [
        "822c00d0fe3b70d1f1fe5bac03713674d45f8173"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 18 18:20:59 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 18 18:20:59 2015 +0100"
      },
      "message": "Replace some run-time assertions with compile-time ones in ART.\n\nChange-Id: I16c3fad45c4b98b94b7c83d071374096e81d407a\n"
    },
    {
      "commit": "05c26b30843dd8283c703356e75d51726e8b8e3a",
      "tree": "84d6b27009e308f1a43c8847fd0aa342bc6d4b29",
      "parents": [
        "42361f2e8b3601813dc40d12e14c679df99a864b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 11 18:42:58 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 12 19:20:46 2015 +0200"
      },
      "message": "JDWP: update handling of 8-bit and 16-bit fields\n\nWe must use special getter/setter for types smaller than int:\nboolean, byte, char and short. However, JDWP still requires to treat:\n- int and float as 32-bit values\n- long and double as 64-bit values\n\nBug: 21746739\nChange-Id: I8d0ce46246084c9e16f287da28d8969d36b83b99\n"
    },
    {
      "commit": "42361f2e8b3601813dc40d12e14c679df99a864b",
      "tree": "f5a89acb10d76edc7b7d288e934b60f3c1fc6b9a",
      "parents": [
        "995f6e23418a1b4058167e64bbe50fd9e5dc7f02",
        "cbc5064ff05179b97b416f00ca579c55e38cd7d9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 12 10:40:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 12 10:40:58 2015 +0000"
      },
      "message": "Merge \"JDWP: asynchronous invoke command handling\""
    },
    {
      "commit": "8c2ff641294715864013737fdec57cdfd410270c",
      "tree": "2dd302323b4711d1a9391b8c1a8dce3de3e76e91",
      "parents": [
        "6dbf5a5a075a371cb2ff3659058e93a985485baa"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed May 27 17:25:30 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Wed Jun 10 15:03:01 2015 -0700"
      },
      "message": "Add allocation stack traces for HPROF dump.\n\nThis feature is currently only enabled when DDMS\u0027s allocation tracking\nis enabled. In the future there should be a way to enable this feature\nbefore an application starts.\n\nAlso updates DDMS\u0027s recent allocation tracking to use a new backend\ndata structure that is shared with this feature.\n\nThe following system properties controls customizable parameters:\ndalvik.vm.allocTrackerMax: max number of objects that have allocation\n                           records, default 512K;\n\ndalvik.vm.recentAllocMax:  max number of records that are sent to DDMS\n                           when clicking \"Get allocation\" button,\n                           default 64K-1 (limit of the protocol);\n\ndalvik.vm.allocStackDepth: max number of stack frames in an allocation\n                           record, default 4.\n\nBug: 20037135\nChange-Id: I26ed378a5613678bd3c43e846025f90470a8e059\n"
    },
    {
      "commit": "cbc5064ff05179b97b416f00ca579c55e38cd7d9",
      "tree": "9ce221e6644ff770b8484ba8cb5581e538b88eef",
      "parents": [
        "864a2d955aa85ab989c86d7f1eeacbe0b11f8b0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 17:33:12 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 10 09:35:08 2015 +0200"
      },
      "message": "JDWP: asynchronous invoke command handling\n\nThe JDWP thread used to wait for the result of a method invocation\nrunning in an event thread. But doing that prevents the JDWP thread\nfrom processing incoming commands from the debugger if the event\nthread gets suspended by a debug event occurring in another thread.\nIn Android Studio (or another IDE), this leads to the debugger being\nblocked (with the famous message \"Waiting until last debugger command\ncompletes\" of Android Studio / IntelliJ) because it is actually\nwaiting for the reply of its latest command while the JDWP thread\ncannot process it.\n\nThis CL changes the way invoke commands (ClassType.InvokeCommand,\nClassType.NewInstance and ObjectReference.InvokeCommand) are handled\nin the ART runtime.\nThe JDWP thread no longer waits for the event thread to complete the\nmethod invocation. It now simply waits for the next JDWP command to\nprocess. This means it does not send any reply for invoke commands,\nexcept if the information given by the debugger is wrong. In this\ncase, it still sends a reply with the appropriate error code.\nThe event thread is now responsible for sending the reply (containing\nthe result and the exception object of the invoked method) before\ngoing back to the suspended state.\n\nIn other words, we add special handling for invoke commands so they\nare handled asynchronously while other commands remained handled\nsynchronously. In the future, we may want to handle all commands\nasynchronously (using a queue of reply/event for instance) to remove\nthe special handling code this CL is adding.\n\nNow the JDWP thread can process commands while a thread is invoking\na method, it is possible for the debugger to detach (by sending a\nVirtualMachine.Dispose command) before the invocation completes. In\nthat situation, we must not suspend threads again (including the\nevent thread that executed the method) because they would all remain\nsuspended forever.\n\nAlso minor cleanup of the use of JDWP constants and update comments.\n\nBug: 21515842\nBug: 18899981\nChange-Id: I15e00fb068340f3d69dc9225d8d2065246e68c58\n"
    },
    {
      "commit": "415fd0833fe44b99ed57353f4bd7572681506daa",
      "tree": "5c798549945457a86faf181495337722335ae4b0",
      "parents": [
        "a96bea54b7e3def5490d169f2bf92be2e68dd001"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 11:42:27 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 12:27:32 2015 +0200"
      },
      "message": "Fix JDWP tests after ArtMethod change\n\nFixes Throwable::GetStackDepth for exception event detection after\ninternal stack trace representation change.\n\nAdds missing ArtMethod::GetInterfaceMethodIfProxy call in case of\nproxy method.\n\nBug: 19264997\nChange-Id: I363e293796848c3ec491c963813f62d868da44d2\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": "31db3432157caac55584a59827c69b303ba09d13",
      "tree": "e3386ac519070582ef468021e6d94c0f1b96d359",
      "parents": [
        "2b2288f2abbcdcd1201b322008fa30495d724d51",
        "52f5f93873ec244320e05b033243c5c7a3ae40e2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 28 09:56:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 28 09:56:32 2015 +0000"
      },
      "message": "Merge \"Fix single-step in native thread\""
    },
    {
      "commit": "52f5f93873ec244320e05b033243c5c7a3ae40e2",
      "tree": "bbd55d9daa0ef2584d958dee376561426f335463",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 28 11:00:57 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 28 11:35:01 2015 +0200"
      },
      "message": "Fix single-step in native thread\n\nIf we attempt to single-step in a thread that is not running Java\ncode, there is no current method on the stack. So we need to check\nfor null before trying to decode debug info.\n\nBug: 21320157\nChange-Id: Idef9954d14e1eb7185f25d2a6e238135ac52d35f\n"
    },
    {
      "commit": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "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": "de48aa6708a3d5dacf7db3d64965e23261fb15d3",
      "tree": "f26124e483ab84d2009c735897c3a4beaf37cb39",
      "parents": [
        "dc80984a9e24d6e46fab9461f01d7a27e656cf90"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 26 11:53:39 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 26 12:32:56 2015 +0200"
      },
      "message": "JDWP: fix breakpoint on catch statement\n\nSetting a breakpoint on a catch statement in the source actually\ninstalls the breakpoint on a DEX move-exception instruction. At this\npoint, an exception is pending in the current thread.\n\nThe issue is no exception must be pending in the current thread to\nreport the breakpoint event. This is required to be able to call JNI\nfunctions to create JDWP ids.\n\nThis CL fixes it by clearing the pending exception before reporting\nevent and restore it after reporting the event.\n\nBug: 21382373\nChange-Id: Id3c60cca398135a3e0859a1ccb645b9c99d5ca76\n"
    },
    {
      "commit": "39b6c24ce68cf05db0f82f454b4401cfb03d675f",
      "tree": "29e15d2597cd05419a1c0faedfe6977af9a7dfa3",
      "parents": [
        "768b19b6bbddaa2262f6532e7fcb96fecbfee981"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 19 20:30:23 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 20 18:40:43 2015 -0700"
      },
      "message": "Intercept JNI invocation of String.\u003cinit\u003e methods.\n\nlibmono uses JNI AllocObject and CallNonvirtualVoidMethod to create and\ninitialize a string instead of using the recommended NewObject. This\nchange adds an intercept to change the String.\u003cinit\u003e call to a\nStringFactory call instead. Then, it uses the object id of the original\nstring object referrer and maps it to the result of the StringFactory.\n\nBug: 21288130\n\n(cherry picked from commit 15e9ad1d028d7f12cb598b075453173532a00d91)\n\nChange-Id: I3421c43722c07397da4a398c2ca9110e1d40bcfa\n"
    },
    {
      "commit": "aae4334a3f5215edbfe90ab00f8e1e9ade542007",
      "tree": "1cab65e87d4d797ca6736d046e1d8322d07b4d51",
      "parents": [
        "03e4351df62ade9fa0e9139ece28f23ba85c49c2",
        "261bc044a3575512869586593e99e97cd8b1c321"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon May 18 08:02:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 18 08:02:30 2015 +0000"
      },
      "message": "Merge \"JDWP: more GC safety\""
    },
    {
      "commit": "261bc044a3575512869586593e99e97cd8b1c321",
      "tree": "055fbf2bd3d7f836d4a872550ebe3c508eec5668",
      "parents": [
        "bdd9f2d870099e326a281ac90993b37b999c35ea"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 08 09:36:07 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed May 13 09:23:00 2015 +0200"
      },
      "message": "JDWP: more GC safety\n\nEnsures GC safety when keeping references that may be moved by GC:\n- SingleStepControl: stores ArtMethod* in a GcRoot\n- ModBasket: stores references in a StackHandleScope\n\nBug: 18166750\nChange-Id: If2b6f9ecff4cf469b50487fd863319fdfa9b9f37\n"
    },
    {
      "commit": "b43390cb87eace4a017f672d66cfb20fb9e76aa1",
      "tree": "7d4f2f0f0d0ad561f20cac4a2aa78cba9a477c78",
      "parents": [
        "28d332c720cb7c9c0163c4844bb0c1a2a067470e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 10:47:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 14:59:31 2015 -0700"
      },
      "message": "Hold heap bitmap lock in Heap::GetObjectsAllocated\n\nFixes a race condition where add and remove space could cause a crash\nwhen we iterated over the spaces.\n\nTODO: Add a spaces lock or something to guard against this.\n\n(cherry picked from commit a395c0a492079d86b312c9edc796d63001576954)\n\nBug: 21031927\n\nChange-Id: I7f0d558316f8e9d9f22ffd182e8666355bf50d47\n"
    },
    {
      "commit": "8e5bd18fc665d7ec5461ea068e98740a65da754c",
      "tree": "83441cdfdab06709b573aad2ab731cc65c10b9f1",
      "parents": [
        "cdeb0b5fede4c06488f43a212591e661d946bc78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 06 11:34:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 11 15:23:25 2015 +0100"
      },
      "message": "Add a flag to StackVisitor for inlining.\n\nThe flag tells whether the stack walk needs to include inlined\nJava frames.\n\nThis does not do anything just yet, as we\u0027re not inlining anyways.\n\nChange-Id: I716e25094fe56fa335ca1f9a398c1bcdba478e73\n"
    },
    {
      "commit": "ba9ef5377b21a627ec502da3e475b34e45d0c435",
      "tree": "5facbc141e51db481cb7473403675a4142992ba1",
      "parents": [
        "b882da74db950246b5731aecad9737b63bdefef7",
        "0462c4c87c39db6cfcd338f323844738109ac3c9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 07 16:10:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 07 16:10:44 2015 +0000"
      },
      "message": "Merge \"Support multiple instrumentation clients\""
    },
    {
      "commit": "0462c4c87c39db6cfcd338f323844738109ac3c9",
      "tree": "30776cd2fadab4100851640976c2b572d228d688",
      "parents": [
        "a6591ef95afa6bc9d89c0c6044635ec7a13d4c55"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 01 16:34:17 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 07 18:03:58 2015 +0200"
      },
      "message": "Support multiple instrumentation clients\n\nChanges Instrumentation::ConfigureStubs to support multiple clients\nthat need different levels of instrumenation. A client is identified\nby a string key used to save the desired instrumentation level.\n\nAlso adds regression gtest instrumentation_test and some cleanup.\n\nBug: 19829329\nChange-Id: I1fc24a86fcb7cb46d4be806895376c25cc0a0b3c\n"
    },
    {
      "commit": "9d6bf69ad3012a9d843268fdd5325b6719b6d5f2",
      "tree": "a41fc22d2c89e41c86feb5ef07ebda89b1b83d90",
      "parents": [
        "b6829c2ee05124d64a19c7a52ada4a23f624fb91"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 10 12:12:33 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 29 16:59:58 2015 +0200"
      },
      "message": "JDWP: properly combine location events\n\nThis CL properly groups JDWP events at the same location: Breakpoint,\nSingle-step, Method Entry and Method Exit. This is necessary if the\ndebugger is not the only instrumentation listener. This matches the\nbehavior of Dalvik, especially for methods with a single return\ninstruction.\n\nThe interpreter was tuned so the instrumentation callbacks were\ncalled to satisfy the debugger with the idea the debugger was the\nonly instrumentation listener. This is not true when method tracing\nis enabled at the same time.\nWhen tracing is enabled, there is always a listener for MethodEntry\nand MethodExit events (art::Trace class). However, if the debugger\nis only listening to DexPcMoved event (to manage JDWP Breakpoint\nevent), it will not be notified of this event.\n\nWe now properly call all the instrumentation callbacks in the\ninterpreter and move the logic specific to debugging into the class\nDebugInstrumentationListener. This allows to properly group JDWP\nlocation events together depending on the sequence of instrumentation\ncallbacks.\n\nWe add Thread::tls_32bit_sized_values::debug_method_entry_ flag to\nremember we just entered a method. It replaces the local variable\nnotified_method_entry_event in the interpreter and simplifies the\ncode.\n\nBump oat version to force recompilation because the layout of the\nThread class is modified.\n\nBug: 19829329\nChange-Id: I204af9112e37d2eebc86661fb7c961a41c74e598\n"
    },
    {
      "commit": "9d1e19035a59ff8bf05a09ad880ede99806ba73f",
      "tree": "7eb3c9eb01d4f581f3e354d947300547582fdd38",
      "parents": [
        "3fd79afbb7490f52817f737ecceb694f6618dcf9",
        "848f70a3d73833fc1bf3032a9ff6812e429661d9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 28 02:04:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 02:04:09 2015 +0000"
      },
      "message": "Merge \"Replace String CharArray with internal uint16_t array.\""
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    }
  ],
  "next": "8a35405e00ad3a722750e37c8eae1c3e1cc0afb0"
}
