)]}'
{
  "log": [
    {
      "commit": "65c9db8dfbeea3f708f95f058f4fed7c2af71052",
      "tree": "225cfc1d87ea95583b686591f1dd752ee7ce3bb0",
      "parents": [
        "3f49507c333b7c8d36620870522a7a1055987ef8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 28 13:14:34 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 28 13:14:34 2014 -0700"
      },
      "message": "ART: Reject array-length on non-reference register\n\nIt should be a hard verifier failure if we detect an array-length\ninstruction over a non-reference-type register.\n\nBug: 16595896\nChange-Id: I059510b15c846551b2f8ded86cfd8127543324f4\n"
    },
    {
      "commit": "c389c97ca93b73b3cb380cedfe438d153b524225",
      "tree": "efb5f88c9fcb2ab87df05766fb14b3ae135d0f88",
      "parents": [
        "c836fcbb52d99efdd9ed4f5c104aebd0c37cb121",
        "2cdbad7c62f126581ec5177104de961c4d71adaa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 22:05:50 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 22 16:18:32 2014 +0000"
      },
      "message": "Merge \"Set vtable in class object to null after linking.\""
    },
    {
      "commit": "2cdbad7c62f126581ec5177104de961c4d71adaa",
      "tree": "6283b87bc9b65249decac9b0e38fe396782b8d7e",
      "parents": [
        "c62944adcd427dca55489d234428da47c43a0aab"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jul 16 10:44:41 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 15:03:50 2014 -0700"
      },
      "message": "Set vtable in class object to null after linking.\n\nThis is follow-up work of embedding imt and vtable for\nfaster interface/virtual call dispatching.\nOnce vtable becomes embedded, the original vtable is nulled.\n\nChange-Id: I307696657d1e283654169dbecb8f7815c42bbabc\n"
    },
    {
      "commit": "2a593a14e8e0df01a50139e0d48c7be46fb057ef",
      "tree": "4c83ba2105954bf17de0911878bcf8c93f452a9b",
      "parents": [
        "96823a6504d28cfbf2806ab301084291ddd1159e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 22:11:42 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 22:30:33 2014 -0700"
      },
      "message": "ART: Check high part of dalvik register pairs on put-wide\n\nWhen verifying a put-wide, it is necessary to check the lo and the hi\nregister for the right type.\n\nBug: 16018242\nChange-Id: I9e661951d592e155e0f281ea959e778d8f4a67ab\n"
    },
    {
      "commit": "d4a6e5cc16217bf3e9205d45b728c3d4dc1ddc54",
      "tree": "e2663eef8b42a1d367ce0225dd9e4c52f08403de",
      "parents": [
        "50246792ff37fe25446b70564c0942f04d3e5f48",
        "f91baf17ad11a86c84c9fc34ff70feee65a43233"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 23:40:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 17 22:34:19 2014 +0000"
      },
      "message": "Merge \"ART: Also accept java.lang.Throwable as a catch-all handler.\""
    },
    {
      "commit": "f91baf17ad11a86c84c9fc34ff70feee65a43233",
      "tree": "9bd78c90b89cae8d7530690eec49564d0ef80faf",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 15:41:00 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 16:38:31 2014 -0700"
      },
      "message": "ART: Also accept java.lang.Throwable as a catch-all handler.\n\nAccept catch handlers with catch type of java.lang.Throwable as\ncatch-all handlers.\n\nBug: 16308310\nChange-Id: Ie9b9582ee71c94c82b7695dc6f9c2c6df3d869d8\n"
    },
    {
      "commit": "00633eb490ad21f711dcfccfb3a70992b2f8a72a",
      "tree": "625bb71f4b14bf7cbb2e40a881b31da84ff9aef9",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 17 16:13:35 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 17 16:16:59 2014 -0700"
      },
      "message": "ART: Make a soft failure in method verifier hard, add check\n\nMake the soft error of using a primitive type in an instanceof a\nhard verifier error.\n\nAdd a check when doing check_cast peep-hole optimization to check\nwhether the cast type is valid.\n\nBug: 16020300\nChange-Id: Icaea560d17804f24a13dc09c115e9ec7039cb472\n"
    },
    {
      "commit": "e5877a12c30afe10a5c6a1afaff7a47ef44a2a5f",
      "tree": "161535abb39394fc3b1d96d31625ba7eb61c8497",
      "parents": [
        "aab012d6196bd29b3167963ec8acb0b9780672b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "message": "Fix x86 build.\n\nAlso fix attributes/annotalysis on entrypoint_utils functions now we have\nclang that is smarter wrt warnings than GCC.\n\nChange-Id: I69257b4ad9a27d07acbc973d21a1cfa4260a8ed6\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "ebbdd87cbb57e45da341fbf7325406e982810c10",
      "tree": "fc8c236a7fd44ad040e013c549822868a777b747",
      "parents": [
        "751dee376dcd972af996106a4c32ab4964c1f867"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 07 23:53:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 08 17:30:29 2014 -0700"
      },
      "message": "Only allow instance-of to improve knowledge of a type for downcasts.\n\nPrevious \"not upcast\" test could improve a type to an impossible type that\nfollowing a merge back with the original register would lead to conflict\n(and subsequent verifier errors).\nModify UpdateRegisters so that the work line will be updated if merging\ncauses changes in the fall-through case.\n\nBug: 15808277\nIssue: https://code.google.com/p/android/issues/detail?id\u003d72093\nChange-Id: Ib16cae8506246177e902825af036d5a397ad0dac\n"
    },
    {
      "commit": "b06a0364e9a5a27d2a33ab7a9c9b98c7332e6cea",
      "tree": "3998c29f7d13a5716e3ec73d97e41194ba3ebb75",
      "parents": [
        "5c0fcdad7578dd8ce0e53e9d8f02777b253762cc",
        "c3314311df5ae50ea9151ac4933d3eccbdefb41a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 21 01:38:46 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 20 02:09:57 2014 +0000"
      },
      "message": "Merge \"ART: Method verifier must check invoke-virtuals for non-zero args\""
    },
    {
      "commit": "c3314311df5ae50ea9151ac4933d3eccbdefb41a",
      "tree": "9da2c9de0286fad85f29a132fbc35d43951b7eab",
      "parents": [
        "a81fe3d512ef846aad3398222afd1f0588bbaf7c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 18:13:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 20 18:03:12 2014 -0700"
      },
      "message": "ART: Method verifier must check invoke-virtuals for non-zero args\n\nCompiler checks rely on all instructions, not just reachable ones,\nso add two new verifier flags.\n\nBug: 15755602\nChange-Id: Ia9c2146cf82d94ce4d69fb6f7be6450137bb84bd\n"
    },
    {
      "commit": "77cd4d677c682c194b8325b209cb76720be4046a",
      "tree": "be9c93a89aff1e1d3699d1eebc2feb2497a7de47",
      "parents": [
        "a81fe3d512ef846aad3398222afd1f0588bbaf7c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 17:29:48 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 17:29:48 2014 -0700"
      },
      "message": "ART: Method verifier needs to check 2-reg values\n\nThe method verifier did not check against the second register\nfor a J or D parameter from a method signature.\n\nThe register line had a wrong DCHECK that did not catch this even\nin debug mode.\n\nBug: 15751498\nChange-Id: Ic6af08bf4704b3ab0f308dd9f0da28691a4cb024\n"
    },
    {
      "commit": "95c0bf8fb5847cff263639f889d04c7c3c26eedd",
      "tree": "08e6eb7b36f4f612fbdb4809cfe21d9cfd41a6d8",
      "parents": [
        "a9f64d7b6857532bb871a7bf1d3c9c9a44ed5917"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 16 14:06:52 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 17 00:27:05 2014 +0000"
      },
      "message": "ART: Make verifier check invocation args of unresolved methods\n\nIn the case of unresolvable methods it is not enough to bail out\nwith a soft verifier failure, as the compiler relies on the\ninvocation being well-formed. Check all arguments against the\nproto id in such a case.\n\nAlso make sure to complete parsing arguments in the case the\nmethod was resolved.\n\nRefactored code to unite these two cases.\n\nBug: 15616104\nChange-Id: I5ec58cbfbf6b09eaaf07ddf15edae7c6a8b62b17"
    },
    {
      "commit": "073ed9ba97df41862403f64d7a2e824d09ab50ed",
      "tree": "765f4d1bc73507ce6b96d60dcff8b7d184f32fad",
      "parents": [
        "8cd927c8f6911cfb6118b8c54550959c09eb84f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 13 15:46:46 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 13 15:46:46 2014 -0700"
      },
      "message": "ART: Ignore timing issues in debug builds\n\nWhen in debug builds, do not warn about slow verification and\ncompilation.\n\nChange-Id: Ib982e1c7cf40cf624688bbf6c41f0a7cc53bbc67\n"
    },
    {
      "commit": "73d1f2767d5866593c780bede8091f3aee81aecf",
      "tree": "22c65b5b728a27313b4efd24a0a59e2e55dcd32c",
      "parents": [
        "f08793720664025af1c45798bb30cf81575b1f79",
        "5fb22a916dcb652fd2c2a2421de621f458177dcd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 18:34:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 12 05:34:11 2014 +0000"
      },
      "message": "Merge \"Don\u0027t verify runtime only opcodes in the data-flow phase of verification.\""
    },
    {
      "commit": "5fb22a916dcb652fd2c2a2421de621f458177dcd",
      "tree": "4453b47638d9c8b8da61c9fc967f2e7ec89ffb22",
      "parents": [
        "1eadc56648869e1b3989407525313a7eea1fed22"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 10:31:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 11:25:17 2014 -0700"
      },
      "message": "Don\u0027t verify runtime only opcodes in the data-flow phase of verification.\n\nBug: 15570344\nChange-Id: I0304e8742a1d0318783ba72862e684ab91f63d0e\n"
    },
    {
      "commit": "acc4d2f72a2cadce2964dd2cc9eb20f73fc552ff",
      "tree": "f0598b7c0e46816424f8d36d4f39ad0ba9351631",
      "parents": [
        "3316ff53b8745707a492d0442a94174abc679ece"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 19:35:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 19:41:45 2014 -0700"
      },
      "message": "ART: Check the number of invocation args in verifier\n\nCheck the number of invocation arguments against the method\u0027s\nprototype signature. It could happen that the method wasn\u0027t\navailable, yet, in which case we would let a clearly wrong\ninstruction through.\n\nThis generalizes https://android-review.googlesource.com/#/c/97779/\n\nBug: 15570483\nChange-Id: Ie81aff3c1166a2b2bf1385414dff2e22fbb40ef2\n"
    },
    {
      "commit": "3316ff53b8745707a492d0442a94174abc679ece",
      "tree": "605b94edfa927c4803da77ee52af2dd57a45281c",
      "parents": [
        "a2b87c252cdbde5302dd5cccd7e16eebe5dbb694",
        "9f2b6433c17ec8ea30015fd1b20e7a0ad3d4159e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 23:44:57 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 12 03:32:07 2014 +0000"
      },
      "message": "Merge \"ART: Invoke_virtual needs at least receiver parameter\""
    },
    {
      "commit": "9f2b6433c17ec8ea30015fd1b20e7a0ad3d4159e",
      "tree": "33a9aa6ad2daa87a9355248db2fc9b1b430ae97a",
      "parents": [
        "cbaa3076b51db805c5e74636d77c8c7cbd79d125"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 15:44:40 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 15:53:48 2014 -0700"
      },
      "message": "ART: Invoke_virtual needs at least receiver parameter\n\nMakes the method verifier reject invoke_virtual instructions that\nclaim they do not need any parameters.\n\nBug: 15570946\nChange-Id: Ia76fddb7a08551d6c08654950e7085f09eacf430\n"
    },
    {
      "commit": "e2256621883f321513a6397ca82a271c64d7c393",
      "tree": "b605697753593236ccfea92afe5b5bb8b3946e92",
      "parents": [
        "adea0aa22790254bf9978984e9ffc3688a41e129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 14:35:51 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 15:50:21 2014 -0700"
      },
      "message": "ART: Do not allow quickened dex codes in compiler mode.\n\nThe method verifier will reject quickened dex opcodes when the\nruntime is in compiler mode, as we do not expect them here.\n\nBug: 15570344\nChange-Id: I072567835139860213f9882cac995370b4548a79\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "4479ba35389b03ccc9eabd17fba6168f9505517a",
      "tree": "fb8091b4637b27d8a9d3d4f390b79263a12d9881",
      "parents": [
        "081203e06534e4aa27a942e47084289eecab29ed",
        "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "message": "Merge \"Change FieldHelper to use a handle.\""
    },
    {
      "commit": "576ca0cd692c0b6ae70e776de91015b8ff000a08",
      "tree": "de632fae7ee9f096e7a2c54a7fcdace8f6ae7106",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 15:58:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 16:27:45 2014 -0700"
      },
      "message": "Reduce header files including header files.\n\nMain focus is getting heap.h out of runtime.h.\n\nChange-Id: I8d13dce8512816db2820a27b24f5866cc871a04b\n"
    },
    {
      "commit": "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb",
      "tree": "444936c3e3718b692ba7f1981b863190f26b4ed7",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 05 17:42:53 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:12:17 2014 -0700"
      },
      "message": "Change FieldHelper to use a handle.\n\nFixed compaction bugs related to FieldHelper::GetType in:\nartSet32InstanceFromCode\nSetFieldValueImpl\nCheckReceiver\nField_set\ninterpreter::DoFieldPut\nMethodVerifier::VerifyISGet\nMethodVerifier::VerifyISPut\nMethodVerifier::VerifyIGetQuick\n\nBug: 13077697\n\nChange-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72\n"
    },
    {
      "commit": "66b68faa42cd36eb368f96c206b29c940ddda129",
      "tree": "ec8d7be0ffd659c3369c3a4f45d319b8be3c4892",
      "parents": [
        "52925af1e3136bcf68bc5754fbfa407950235217",
        "0cd81352a7c06e381951cea1b104fd73516f4341"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\""
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "46960fe5dcc1be07b39a55114338423a73554449",
      "tree": "fb31a1fc7dc07abe3d87a26f8fd394e9f7193304",
      "parents": [
        "567e9dbc65ee183cda2a052dbf224c8c4a8f9423"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "message": "Make the specification of when we need precise constants more precise.\n\nMeans that oatdump output showing values for deoptimization actually reflects\nwhat we see at runtime.\nAlso, doesn\u0027t do precise in the case of determining methods and fields for the\nquickened case, which may be an occasional performance win.\n\nChange-Id: I62c7fb244f7996ba9d52e7a7ce75c046b663fa17\n"
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "a4cf1df04b3de24e69c044e0aae4c2573d6c37d1",
      "tree": "507b362e03d6cb18cc5f9b114bf35b2d6c3001c0",
      "parents": [
        "410d87ff51e9432768924d2f294592818f93c244"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 07 19:47:17 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 07 22:11:21 2014 -0700"
      },
      "message": "Allow invoke-virtual-quick on interface types.\n\nFix a broken assumption that receivers for invoke-virtual are non-interface\ntypes.\n\nBug: 14469172\nChange-Id: I0d6e19141d4f52a4bd27bf1cb5f8d0e85fc9cf49\n"
    },
    {
      "commit": "33f2e594cc37570de9fc806e1cf66767205f20a2",
      "tree": "49519138dbf0bd2be96fe797225c019f9afe12be",
      "parents": [
        "41ccffd58512f1fa1aeb9ad288cbb667899ff1be"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 06 12:04:52 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 06 12:04:52 2014 -0700"
      },
      "message": "Add more context for CHECKs\n\nBug: 14469172\nChange-Id: I7b75c63c857d0fd7e3b08990f21a73d2dfe430b1\n"
    },
    {
      "commit": "29a2648821ea4d0b5d3aecb9f835822fdfe6faa1",
      "tree": "2eb972b2b006e4d2842c8cf6a1d6631f90a39249",
      "parents": [
        "dbb8727b0b3ae73e84fb8db55e051336d6222add"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 15:27:29 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 15:35:19 2014 -0700"
      },
      "message": "Move DecodedInstruction into MIR.\n\nChange-Id: I188dc7fef4f4033361c78daf2015b869242191c6\n"
    },
    {
      "commit": "da6e4feb6a02fed7f307e1ef3b90e716a99ba24c",
      "tree": "3afc391bfd5d6ef2a0f512382805d7f85403194a",
      "parents": [
        "942c8e3723ad1e12039deef5754440dd8e1c546d",
        "2ed76f95dd5a7edada82407a1853be803c9853a9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 08:14:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 25 08:14:11 2014 +0000"
      },
      "message": "Merge \"Resolve method\u0027s argument reference types\""
    },
    {
      "commit": "2ed76f95dd5a7edada82407a1853be803c9853a9",
      "tree": "1ff07ef9ef905e943480a808e69fd61a7645e667",
      "parents": [
        "ec83aacf669165eeeb1c30aee402001394982fd3"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 22 17:11:08 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 10:10:07 2014 +0200"
      },
      "message": "Resolve method\u0027s argument reference types\n\nUsing ResolveClassAndCheckAccess allows to resolve reference types and check\nwe have access to these types too. This also prevents from getting unresolved\nreference types, which has been observed during deoptimization.\n\nBug: 13464407\nChange-Id: I4c02fdff191c195f34502a4d4a20357419982eb1\n"
    },
    {
      "commit": "942c8e3723ad1e12039deef5754440dd8e1c546d",
      "tree": "e05d0f71932320f1f8f4f9987a88065c22739663",
      "parents": [
        "011005100214eb40c2aaad3f8fe9c3dc9465bcec",
        "479fc1ecc12fa6560ca90d841c4d5174fb346618"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 07:37:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 25 07:37:49 2014 +0000"
      },
      "message": "Merge \"Support field watchpoint in interpreter\""
    },
    {
      "commit": "479fc1ecc12fa6560ca90d841c4d5174fb346618",
      "tree": "9c89abea89494c90934b260f42f81e8ca83c3611",
      "parents": [
        "96a4f29350bf279d48bff70e21e3264cce216683"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 04 17:51:34 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 09:35:54 2014 +0200"
      },
      "message": "Support field watchpoint in interpreter\n\nWe report field read/write events to instrumentation from the interpreter. This\nallows it to send JDWP field access and field modification events to debugger.\nThis completes CL https://android-review.googlesource.com/90390.\n\nWe also fix the JDWP FieldOnly modifier by introducing ModBasket.fieldTypeID.\nWe incorrectly used ModBasket.classId which is actually dedicated to ClassOnly\nmodifier based on thread\u0027s location\u0027s class id.\n\nFinally, we now enable canWatchFieldModification and canWatchFieldAccess JDWP\ncapabilities so a debugger can request these events to be reported.\n\nBug: 8267708\nChange-Id: I987852ad47abb27b2f7e78544a8189c7a4e2f462\n"
    },
    {
      "commit": "b878f2133a04593643228eb1d47993092528b963",
      "tree": "0288b9d0eca5e73af456d9dba45d33f0f4c75730",
      "parents": [
        "17c50db442d2791d9c4d7d1e98060556c323ce9b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 24 16:25:36 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 24 16:54:45 2014 -0700"
      },
      "message": "Make unresolved exception types cause soft verification errors.\n\nBefore, the verifier would allow the first exception it finds\nfor a catch block to be unresolved, but this causes problems if\nit merges other exceptions later. The verifier should soft fail\nfor any unresolved exception type it finds.\n\nBug: 14256107\nChange-Id: I22563ebfe8c9680cc676b73516d5b48bc9c4ecf3\n"
    },
    {
      "commit": "9bc54406ba3377980cfce44901dc2be246178ba9",
      "tree": "12b9a514ef37c5cd01a99f3c6ffa83e3b03be7c0",
      "parents": [
        "94e8a97310af35cb0bae309e796b554cdb586ca5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 17 16:40:01 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 17 16:45:06 2014 -0700"
      },
      "message": "Interpreter-only mode should cause dex-to-dex compilation.\n\nAlso, fix quick iget/iput that had similar issues to:\nhttps://android-review.googlesource.com/91423\nAlso, remove fall-back resolution code from quick invokes/igets/iputs as we\nallow class loading for the exception throw and regular verification already\nallows class loading.\nBug: 14133618\n\nChange-Id: I51199e6e2392da0354f64b157e79af494c183778\n"
    },
    {
      "commit": "639815628cf52a4a944a4322cb09da37cded2de9",
      "tree": "7ce86f1f277834802cfea486e5aa592e6cc1cd04",
      "parents": [
        "425640d6fac3432a44e236a002e8401a7cd59c5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 17 12:28:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 17 21:10:24 2014 +0000"
      },
      "message": "Fix a class-loading bug in the verifier when throwing NPE\n\nWhen throwing an NPE for invocation, we try to resolve the class of\nthe method being called. When in the interpreter and having quickened\ncode, that failed.\n\nBug: 14133618\nChange-Id: I4964b908bb26a82a12263fb86f5dc39c9042479b"
    },
    {
      "commit": "4b06a725fe722063cb595d42ed4ed8b4fd05db9c",
      "tree": "8865f7c022fe3283ecd5cc031dbaefe043a40fd1",
      "parents": [
        "dc9009e32d3c94e42614245fdf3fa024a5721aec"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 09 15:45:08 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 09 16:30:52 2014 -0700"
      },
      "message": "Change FindClass in GetQuickInvokedMethod to use reg_types_.\n\nFindClass can do ScopedThreadStateChange which causes check failures\nduring SIGQUIT.\n\nBug: 13929160\nChange-Id: I00be4972423c04254a922de3aa731e8edb38ca02\n"
    },
    {
      "commit": "757b304a2dfaeaee01071c9e2ee5e5a18ea18545",
      "tree": "572aa5a984c978b6a7054db05768b69c82d89ed3",
      "parents": [
        "ad174d1b54bf2fa477bec71a0ca93595f54b8fe9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 28 14:34:28 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 28 14:44:56 2014 +0100"
      },
      "message": "Properly dump register type in verifier failure messages\n\nFixes failure messages where we miss to dereference pointer to RegType. This\ncaused to dump the address of the reg type instead of the reg type itself.\n\nAlso moves merging tests of primitive types from RegTypeReferenceTest to\nRegTypeTest class.\n\nChange-Id: I71cea419fdaa9ac46d7c011eb23e8746a14fb378\n"
    },
    {
      "commit": "aa0c00c97bc1fe5c8def7c6cdebfd119e86d07e5",
      "tree": "2557e1aeb5a1830c72733797f86ea9bf72418228",
      "parents": [
        "37d4c1db4d705f5a28001f65afdd68d0527948d8"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 14 17:58:54 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Mar 14 18:09:49 2014 +0100"
      },
      "message": "Fix reg type merging in the verifier\n\nFixes bad merging of float, long and double reg types with constant types. Adds\nmerging tests in reg_type_test.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d66434\nBug: 13464407\nChange-Id: I56761f5f5562b742d0ef9cc66b58d55f7b668949\n"
    },
    {
      "commit": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b",
      "tree": "de6141864c1c011216c19dd99a2c1e2bc442dd6d",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 18:11:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 12:09:04 2014 -0800"
      },
      "message": "Add more VerifyObject calls.\n\nAdded verify object calls to SirtRef, IndirectReferenceTable,\nReferenceTable.\n\nRemoved un-needed verify object in ScopedObjectAccess / DecodeJObject\nsince object sources are handled.\n\nBug: 12934910\nChange-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125\n"
    },
    {
      "commit": "b04388f6f05be900386da1ca66615d9542c35475",
      "tree": "fa28a2dfc445ee9cbe14812c1bfb63c58bb01e45",
      "parents": [
        "94e05cfdbd7e3f8f633b77b478c6674e9be5aedc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 22:49:27 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 22:49:27 2014 -0800"
      },
      "message": "Fix oatdump for interpret-only boot classpath\n\nChange-Id: I12cf5046b01dfba110bf0604fe01a8abf8b352dc\n"
    },
    {
      "commit": "a2806550cefb7c70781d8ee6279e6ad5769804cb",
      "tree": "464c0dd8018379c65db92772644de5d426f2949d",
      "parents": [
        "95c2e440582f31f77a047797a5e2be4af53a8bfa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 27 12:29:32 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 27 12:29:32 2014 -0800"
      },
      "message": "Remove some stray stringpiece.h includes\n\nBug: 13186058\nChange-Id: I2cb313425864a5d4e988fcf71a99c60ad63c63fb\n"
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "eae2fb27c91aa7972dffcb32d5e405567badd6aa",
      "tree": "07b53346da7531093d9720fb8a5ee218b4a20c6f",
      "parents": [
        "4289116517f765df84820bf753fbf891986f40ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 14 14:31:25 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 14 15:25:45 2014 -0800"
      },
      "message": "Don\u0027t resolve types in verifier when we can\u0027t load classes.\n\nAdded a boolean parameter to GetReturnType which tells us whether or\nnot we can resolve types. We pass in can_load_classes_.\n\nBug: 11689500\nChange-Id: Ib3d35f441e08c2409ce14ac269854012dc978ddd\n"
    },
    {
      "commit": "849600bb5cfc02bf5ab4aa9a810667ebd3b53328",
      "tree": "9c1b1a8441074d13bafc0283a7632872f7680abc",
      "parents": [
        "64763b9b42bdb96c5d1e48d10223c7b96c1f73c4"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Dec 20 10:28:08 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Dec 20 17:55:42 2013 +0100"
      },
      "message": "Use imprecise constants at compilation time.\n\nDuring veriifcation, we create constant types for the following instructions:\nconst/4, const/16, const and const/high16. We used to create \"precise\" constant\ntypes for each constant we process in the method being verified. Though precise\nconstants are only useful for deoptimization which happens at runtime.\n\nThis CL now creates \"imprecise\" constant types at compilation time. Since it\nreduces the number of constant types we create during verification, it should\nalso reduce the amount of time spent in verification at compilation time.\n\nBug: 12167380\nBug: 12126841\nChange-Id: I70522c4133a74a533fc2d2cb8d4f49888e590828\n"
    },
    {
      "commit": "2b5eaa2b49f7489bafdadc4b4463ae27e4261817",
      "tree": "ada8b60989919068d562e3fcee01aa5b7c5cfc61",
      "parents": [
        "0bf1f266869776c2dd21b3242599d74ac80855f0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 13 13:59:30 2013 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 17 11:03:53 2013 +0000"
      },
      "message": "Move compiler code out of method verifier.\n\nWe want to detect small methods for inlining at the end of\nthe method verification. Instead of adding more compiler\ncode to the runtime, we create a callback from the runtime\ninto the compiler, so that we can keep the code there.\nAdditionally, we move the compiler-related code that was\nalready in the method verifier to the compiler since it\ndoesn\u0027t really belong to the runtime in the first place.\n\nChange-Id: I708ca13227c809e07917ff3879a89722017e83a9\n"
    },
    {
      "commit": "2d7e5aa6c707537f1906ed77b0ff29ec3dd261f7",
      "tree": "ede87a07e14bc8f596604639b06c6b133ee1be0f",
      "parents": [
        "03d7e9af6ccec24c12f63c0e6b777de412cbb8b1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 13 17:39:59 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 13 17:49:00 2013 -0800"
      },
      "message": "Add classes that fail verification early to rejected class list.\n\nChange-Id: I5e06ec2dc3dfd061fcd6c099e10991482a1aaf65\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "8171fc34bf74ed0df02385787d916bc13eb7f160",
      "tree": "9c2b15d421bbf7483dd042a4b9985517c3cc86ee",
      "parents": [
        "fa365d2fa097810f31d6cb1b1ef415636bc63af8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 26 17:05:58 2013 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 10 10:02:58 2013 +0000"
      },
      "message": "Don\u0027t prefix GC map by length.\n\nBug: 11767815\nChange-Id: I063917aefdf7674ee1a77736db059c9ee95ea075\n"
    },
    {
      "commit": "4137f4828a6a7c48aa1b161cecb82e1e0880aa16",
      "tree": "26b54e93bd748ff6d84d3bee431407a40fa92592",
      "parents": [
        "b6b4c459ef823ba62696796542519655c79423c2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Nov 22 11:44:57 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Nov 22 11:44:57 2013 -0800"
      },
      "message": "Make verifier log hard failures by default.\n\nPreviously required verbose verifier logging to see reasons for hard failures.\n\nChange-Id: I2d05dfec95aeb48e8e1d9d3e4386916ab90071a4\n"
    },
    {
      "commit": "c255e9723c4ac6eff7778ade21296bb5f11ea7bf",
      "tree": "1d971d90020797f9480be59d4b2135e817de0ab3",
      "parents": [
        "ba9ece9c58de90b39c39b29dbdaee54b1654c066"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 19 11:21:24 2013 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 19 12:13:14 2013 +0000"
      },
      "message": "Avoid unnecessary copy of dex_gc_map.\n\nChange-Id: I8a7209d92aeee853f6a4e9e9bb0e094c5acd5e05\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "c26a56cb596c3c8efd519c4014fc2ebb3e48b221",
      "tree": "af1a350fbafcb9bb98abc1096261d44241ffac27",
      "parents": [
        "e508a2090b19fe705fbc6b99d76474037a74bbfb"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 04 12:00:47 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 04 23:10:02 2013 +0000"
      },
      "message": "Verifier uses exception type instead of conflict if unresolved.\n\nFixes OneMedical app installation issues.\n\nBug: 11335470\nChange-Id: I10ef8c84ef5bf5587283413b8cea89202407fe2b\n"
    },
    {
      "commit": "7195dd860e424057bd9a17d501269d9b50673f11",
      "tree": "3e656d8b35f6f74b2e4fbc398c1834a96bb6b73d",
      "parents": [
        "9728f91a63016136261231ff5213bde703bd27b6",
        "dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 17:17:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 30 17:17:11 2013 +0000"
      },
      "message": "Merge \"Don\u0027t use UTF16 length as length for MUTF8.\" into dalvik-dev"
    },
    {
      "commit": "dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111",
      "tree": "0b63738b04404f42015da7164dfe5ec506452b02",
      "parents": [
        "eda6df7374bf61c933d4a36635e2a9a30c9892a0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "message": "Don\u0027t use UTF16 length as length for MUTF8.\n\nBug 11367555.\n\nChange-Id: Ia0b07072a1a49d435c3b71ed9a668b316b7ff5d8\n"
    },
    {
      "commit": "8249b425ba81d804c222c746e31bfcac9516e759",
      "tree": "1743aef5417c31921d4d33a837790a0a743813cb",
      "parents": [
        "ad3d996316dd90b84b4b29ccdfc4aeeb1ec890ee"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 29 17:50:55 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 29 18:12:34 2013 +0100"
      },
      "message": "Avoid verifier crash for quickened invoke on null.\n\nWhen verifying an invoke-virtual-quick on a \"null\" instance, we can\u0027t infer the\nclass of the method being invoked. This CL handles this case and avoid a crash\ndue to a failed check in RegType::GetClass.\n\nAlso revert changes made to test 082-inline-execute since it succeeds with this\nCL now.\n\nBug: 11427954\nChange-Id: I4b2c1deaa43b144684539acea471543716f36fb3\n"
    },
    {
      "commit": "a9a8254c920ce8e22210abfc16c9842ce0aea28f",
      "tree": "56614ee997940e8e3b88fef43b890e8a33e78112",
      "parents": [
        "34633b22f74393344987a50b8aaee548a9dadc18"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 04 11:17:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 08 15:54:54 2013 -0700"
      },
      "message": "Improve quick codegen for aput-object.\n\n1) don\u0027t type check known null.\n2) if we know types in verify don\u0027t check at runtime.\n3) if we\u0027re runtime checking then move all the code out-of-line.\n\nAlso, don\u0027t set up a callee-save frame for check-cast, do an instance-of test\nthen throw an exception if that fails.\nTidy quick entry point of Ldivmod to Lmod which it is on x86 and mips.\nFix monitor-enter/exit NPE for MIPS.\nFix benign bug in mirror::Class::CannotBeAssignedFromOtherTypes, a byte[]\ncannot be assigned to from other types.\n\nChange-Id: I9cb3859ec70cca71ed79331ec8df5bec969d6745\n"
    },
    {
      "commit": "34633b22f74393344987a50b8aaee548a9dadc18",
      "tree": "f4df741c3563b1299781a5bfe32bea844cf619f2",
      "parents": [
        "f1603c2d1c9da70a8e2e4d6af8cf62776ce6b035",
        "5ce6f04f4ae2ea3a105a2bf77cc3ef57c856b157"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 04 17:43:55 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 17:43:55 2013 -0700"
      },
      "message": "am 5ce6f04f: am 3057d341: am a6b22c5b: Verifier allows arguments of integral types to be interchangeable.\n\n* commit \u00275ce6f04f4ae2ea3a105a2bf77cc3ef57c856b157\u0027:\n  Verifier allows arguments of integral types to be interchangeable.\n"
    },
    {
      "commit": "a6b22c5be364a4ea926bfd2d0ea6169b22bdd10b",
      "tree": "cae85ffc74f27444b55ed27a049ad27fb7837010",
      "parents": [
        "756ee4e090bc1e1812b41fb7b4661df601a32ef9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 04 14:33:22 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 04 16:07:13 2013 -0700"
      },
      "message": "Verifier allows arguments of integral types to be interchangeable.\n\nThis fixes a bug where code was passing an int into a method with a\nbyte argument. The RI allows this, but the verifier was rejecting it.\n\nBug: 11033423\nChange-Id: I2a6af3bbbc6e9288fc000f711ae1337ab5786d1a\n"
    },
    {
      "commit": "d91d6d6a80748f277fd938a412211e5af28913b1",
      "tree": "5c45f4ae53aab3f530284a97dc328b4e38ce7c94",
      "parents": [
        "9c11b56296b8cffc94b0b854ce6cff7e014b8d57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 25 20:26:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 26 21:08:25 2013 -0700"
      },
      "message": "Introduce Signature type to avoid string comparisons.\n\nMethod resolution currently creates strings to then compare with strings formed\nfrom methods in other dex files. The temporary strings are purely created for\nthe sake of comparisons. This change creates a new Signature type that\nrepresents a method signature but not as a string. This type supports\ncomparisons and so can be used when searching for methods in resolution.\n\nWith this change malloc is no longer the hottest method during dex2oat (now its\nmemset) and allocations during verification have been reduced. The verifier is\ncommonly what is populating the dex cache for methods and fields not declared\nin the dex file itself.\n\nChange-Id: I5ef0542823fbcae868aaa4a2457e8da7df0e9dae\n"
    },
    {
      "commit": "d0fbd85a82a266c21d6b72c61d6dc098ec362de7",
      "tree": "14f431e4bd889b6c7ec6b29322594786828d3bb1",
      "parents": [
        "fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 18:17:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 21:17:06 2013 -0700"
      },
      "message": "Reduce memory allocation in verifier.\n\nRemove the use of a map PcToRegisterLineTable for efficiency (matches Dalvik).\nPlace the register line register values inside the RegisterLine, saves a\nsecondary allocation and indirection.\nAvoid the use of a deque in RegisterLine to avoid an allocation.\nSimplify the SirtRef destructor in non-debug builds.\nSaves \u003e100ms from the two threaded compile time of ThinkFree on host.\n\nChange-Id: I2dacba61dbaf284ca02d4c194413e1da221dcb76\n"
    },
    {
      "commit": "fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f",
      "tree": "5cfbe05084351576e9659cb8f7b66dcb6163a37b",
      "parents": [
        "576fe9d4181c749aa510e32d2521ed4192bdfda0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 23 23:51:32 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 17:07:24 2013 -0700"
      },
      "message": "StringPiece clean up.\n\nProfile guided clean up.\nTry to avoid creating StringPieces with the contents of a dex file where\nthe length is known.\nTry to avoid RegTypeCache::FromDescriptor when there\u0027s a class available.\nMake ConstantType::ConstantValue inlinable.\nSaving of about 50ms from a 2 threaded ThinkFree compile on host.\n\nChange-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85\n"
    },
    {
      "commit": "deb43702e611d6c75b459ea352a00f5d98fc0aa9",
      "tree": "3a85938cf895bbdf3082eb5cf6a235514818a2ec",
      "parents": [
        "abcf7ae8deba4ee81dec44f3d1a2f0ecaf032859"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 03 19:07:00 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 24 16:26:02 2013 -0700"
      },
      "message": "Fix handling of unresolved references in verifier.\n\nThe verifier should not treat use of unresolved references as a reason to reject\nthe entire class. Instead, the verifier treats the instruction as a throw. If\nthat class is run, the interpreter with extra checks will throw an exception.\n\nBug: 10457426\n\n(cherry picked from commit a3faaf4bece7f42529c013fe87bd41de59798656)\n\nChange-Id: I161bfdbfa116890ffa9e7a593c756229bd939eb4\n"
    },
    {
      "commit": "a3faaf4bece7f42529c013fe87bd41de59798656",
      "tree": "933e312a4aa4d69b2d7da7eda4d592419cec4729",
      "parents": [
        "a9a624b2be2180e6bd33f02c89fb8521376a2e8c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 03 19:07:00 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 24 15:18:36 2013 -0700"
      },
      "message": "Fix handling of unresolved references in verifier.\n\nThe verifier should not treat use of unresolved references as a reason to reject\nthe entire class. Instead, the verifier treats the instruction as a throw. If\nthat class is run, the interpreter with extra checks will throw an exception.\n\nBug: 10457426\n\nChange-Id: I3799da843a7ffb3519bbf6dc13a6276519d9cb95\n"
    },
    {
      "commit": "ee39a10e45a6a0880e8b829525c40d6055818560",
      "tree": "88cf2b0765ffc8cc96aa2f895254fbf799d0eb40",
      "parents": [
        "7d690ba929a2a02e2b6344749561d49e2c0d55d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 21 22:00:10 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\n(cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69)\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "dd3c27eeb8286ab53d8a2f1aec76a7a919ba353a",
      "tree": "f03ff1b2e3d5a22710aa085d8b24502998b93d8b",
      "parents": [
        "8438ed31e10f3881ed92f03877d5edaca7d5b48c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 04 16:11:55 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 13:09:14 2013 -0700"
      },
      "message": "Fix verifier upcasting type after instance_of.\n\nThe verifier automatically changed the type of a register to be\nthe checked type in an instance_of instruction, even if the\nchecked type was the register type\u0027s superclass. This would loosen\nthe type information of the register and cause problems later.\n\nBug: 10614872\n\n(cherry picked from commit c642ec8987746a2a44b990bd5354306242d709da)\n\nChange-Id: Ib447557d3582dad6ac01f0e3b4ee497a27a45172\n"
    },
    {
      "commit": "c642ec8987746a2a44b990bd5354306242d709da",
      "tree": "bc257f588bd2623eadb8b4af0b99df3096993c42",
      "parents": [
        "8c6326c528aa785041f0d8c08e24c6b793ba5b6e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 04 16:11:55 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 04 16:14:13 2013 -0700"
      },
      "message": "Fix verifier upcasting type after instance_of.\n\nThe verifier automatically changed the type of a register to be\nthe checked type in an instance_of instruction, even if the\nchecked type was the register type\u0027s superclass. This would loosen\nthe type information of the register and cause problems later.\n\nBug: 10614872\n\nChange-Id: I67aa2c66be754d946e928b8a64431f193539b842\n"
    },
    {
      "commit": "b8a0b94735f188bc739e4c55479c37699006b881",
      "tree": "6620437e5019924f9da7b1c9a6408cf4a113b3e5",
      "parents": [
        "aa836f7fa2ef359cf8ec1ef98d924f7971ba8352"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 20 18:09:52 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 20 18:11:09 2013 -0700"
      },
      "message": "Switch JNI globals lock to reader-writer.\n\nAlso, verifier rejected classes lock. These locks show as contended during\ndex2oat, however, they\u0027re commonly only read access is required.\n\nChange-Id: If8bb834cc69cd8c26494c87fb7f7b20d4e41cdfd\n"
    },
    {
      "commit": "90af14d2743614e3e1453984b14258a6f145501d",
      "tree": "defcc7bdc0a85de36695b7c7285d7d5759ade92c",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu Aug 15 17:50:16 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Aug 16 14:34:53 2013 -0700"
      },
      "message": "Get SEA fibonacci running in interpreter mode.\n\nAndroid.mk: Added new file to build.\ncompile_driver.cc: Moved SE_IR usage test in the block\n         protected by bool compile, which is enabled by\n         adding a sepatate test in IsCnadidateForCompilation.\nclass_linker.cc: Added check in NeedsInterpreter to enable SEA_IR.\nart_method-inl.h: DIsabled check in SEA_IR mode.\nmethod_verifier.cc: Added check for SEA_IR mode.\nmethod_verifier.h: Chenged IsCandidateForCompilation signature to\n         allow testing the function name (for SEA_IR selective\n         compilation).\ndot_gen.h: Updated ART file API usage to altest version.\nsea_ir/frontend.cc: Passing function symbol name to CompileMethod.\ninstruction_Nodes.h: Added  accessor for method index for\n         InvokeStatic IR node.\nsea.cc: Added additional IR SignatureNode for function calls (extra\n         Method parameter). Fixed UnnamedConstant constant value.\nsea.h: Passing function_name to GenerateLLVM.\ntype_inference_visitor.cc: Aded type for first (placeholder) method\n         parameter.\n\nChange-Id: I295858ea0761a3dffb36f35748d8b93d4919d6a9\n"
    },
    {
      "commit": "0f40ac31134d9ae0f059d4c448165599dc8459c1",
      "tree": "2f908f5d7a51d4e7b028b307e5d43a9e794abc10",
      "parents": [
        "97a03e3cc86002b10889562a6b5b164cd2b99e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:10:30 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:30:39 2013 -0700"
      },
      "message": "Fix races in small mode compiler filters setup\n\nFixes host tests in small art mode.\n\nChange-Id: I2579f872583f425607f91c1e58df68b05b5098bb\n"
    },
    {
      "commit": "97a03e3cc86002b10889562a6b5b164cd2b99e7e",
      "tree": "31a25bc1a5e8ab191d101764deabaaa53d37cc26",
      "parents": [
        "1a4d6d809b4c24580b4667e3075d545738d83ec7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 21:33:58 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 21:33:58 2013 -0700"
      },
      "message": "Fix small art build.\n\nChange-Id: Idaade55babbab192c87b32c077d2ec01ac9ef0e2\n"
    },
    {
      "commit": "1d1e267136732c2b123470b05c06fa536fa6dbbb",
      "tree": "a2c4cf3b5ffa7199d38db677886926c0b9a813cf",
      "parents": [
        "a804b711f21db74f9fb0dd7a5854656b1252fb97",
        "ea46f950e7a51585db293cd7f047de190a482414"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 14 02:15:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 02:15:58 2013 +0000"
      },
      "message": "Merge \"Refactor java.lang.reflect implementation\" into dalvik-dev"
    },
    {
      "commit": "75a43f10f55e2aa550de51e969cc1e60d583b632",
      "tree": "32667690ae49d1168d8310692af915e497a6a392",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 17:22:14 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 19:13:59 2013 -0700"
      },
      "message": "Clean up logcat spam from compiler and verifier\n\nMoved to VLOG(...), adding verifer tag for VLOG.\n\nChange-Id: Ia9ac8aeaf5aa1f4881e384003e82a66e560c5692\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "08bf1967611965b65ffd5de1aa603b60e7b2d6a8",
      "tree": "a9272c3a767cee878fdad81207bd8037f08dd830",
      "parents": [
        "73a79074c06d8b0a8c14946438c59c3821d88fe7"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Mon Aug 12 08:53:04 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Aug 13 10:09:48 2013 -0700"
      },
      "message": "Work on SMALL_ART and PORTABLE working at the same time.\n\nChange-Id: Iddedf63b6f9d908717a4d30f963e9b81a9604d49\n"
    },
    {
      "commit": "c9f9444a0d58f395fee5ddd9f55ff32f92cb7b57",
      "tree": "2626125a263f8cbb0b733631a7c6fd2a07e9360a",
      "parents": [
        "b0f871965d588cce066785728fb105248b38bb4a",
        "a024a0686c3b0fea13f362bff70d65981e5febc5"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 08 14:01:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 08 14:01:03 2013 -0700"
      },
      "message": "am a024a068: Compilation filter\n\n* commit \u0027a024a0686c3b0fea13f362bff70d65981e5febc5\u0027:\n  Compilation filter\n"
    },
    {
      "commit": "a024a0686c3b0fea13f362bff70d65981e5febc5",
      "tree": "99b003e7524544156a4e94bcca7daa41ed4d4b77",
      "parents": [
        "e0a53e99e2a01f8668d6616c3cec7e2f5a711286"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jul 31 10:47:37 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 08 13:30:16 2013 -0700"
      },
      "message": "Compilation filter\n\nThis CL introduces a static compilation filter mechanism intended\nto allow us to reduce compilation time and space requirements until\nwe have a profiling mechanism in place.\n\nIt supports 5 modes of filtering:\n\n   o interpret-only (compile nothing)\n   o deferred-compilation (compile only those methods believe to be\n     compute-intensive)\n   o space (optimized for space)\n   o balanced (best return on space investment)\n   o speed (compile everything)\n\nA future CL will allow the default filtering mode to be set\nvia system property.  For now, you can pass it in via command\nline as follows:\n\n   dalvikvm -compiler-filter:[interpret-only|defer-compilation|\n                              space|balanced|speed]\n\nor dex2oat --runtime-arg -compiler-filter:[one of the above modes]\n\nCreating a file named art/SMALL_ART will force the filter\ndefault to interpret-only.  Later on we\u0027ll move this capability\nto a persistent system property.\n\nor modify kDefaultCompilerFilter in runtime.h\n\nIt also changes the compiler driver to allow the compilers to\ndecline to compile a method by return NULL.\n\nChange-Id: Ic73411818f8bb845a4a19a05b0395c50902c534f\n"
    },
    {
      "commit": "a464748006d101407108c3d9eefd865c44cce695",
      "tree": "090fc2a30d5a0dbbc6fa6c12c432d2f03d27efaa",
      "parents": [
        "9642c96bd5a1ccc4e221de9c0af4a545af8182d2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 06 15:35:47 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 06 15:35:47 2013 -0700"
      },
      "message": "Verifier checks that primitive put array/field type matches insn type.\n\nChange-Id: Idd68a36d26451459e55fc586bbd1e71c51a81be9\n"
    },
    {
      "commit": "b9c37fb5746cc240e86677e56cb0d74d829e3504",
      "tree": "f10bf94f63ad30aed84826db9a2dd73743152ee8",
      "parents": [
        "99b1c14fc9f517f4882a596958ad2a0977d92daa"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 05 17:47:40 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 05 17:47:40 2013 +0200"
      },
      "message": "Use reader writer mutex for safe checkcast map.\n\nUse a ReaderWriterMutex to protect MethodVerifier::safecast_map_ like\nwhat\u0027s done for MethodVerifier::dex_gc_maps_ and MethodVerifier::devirt_maps_.\n\nChange-Id: Id2ac9c290cc524eb992ea7cabe63766e88753747\n"
    },
    {
      "commit": "fe1f7c84369abbf5a0121557aa0c6c58e9477710",
      "tree": "8dbb3178123556db721a982703260db51c8df1e3",
      "parents": [
        "b24b4a7e0c4f9bbea49f9dd95b2600080c8293d9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 14:50:24 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 14:50:24 2013 -0700"
      },
      "message": "Move verification of primitive type puts into helper method.\n\nChange-Id: Ia40d9f85303a52e20ca57acf13a0cfc8a9922024\n"
    },
    {
      "commit": "b24b4a7e0c4f9bbea49f9dd95b2600080c8293d9",
      "tree": "a59863dc34ae5262a418d855fe3f55eeb452b9bd",
      "parents": [
        "8d4fb0eb94ea3dd5db9461230e2c11926e4ebdb4"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 31 13:47:31 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 13:47:26 2013 -0700"
      },
      "message": "Make verifier allow integral types to be put in integral type arrays.\n\nThis fixes a problem where the verifier was rejecting when an integer\nis put into a byte array. This also more closely matches the RI.\n\nAlso fixes various issues with debugging checks caught by cts.\n\nBug 10097083\n\nChange-Id: Ie816fcdd85d6dc898feffa1e3fea8cfc2c6946ff\n"
    },
    {
      "commit": "9fc16eb43fe938f0cddb13638bd7cbc2ea9534a2",
      "tree": "42be6682a5c6540c944a37c62f82c5635ab9e81e",
      "parents": [
        "0418ae2bdd996b64f733b1290080e3f98a05609f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 14:49:16 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 14:52:50 2013 -0700"
      },
      "message": "Don\u0027t add barriers to clinit methods.\n\nChange-Id: I13e6c008feb8c19e452d6e2f88b2bbbcac997de5\n"
    },
    {
      "commit": "c449aa8151bf81d93d22ff24677ccf09a6da218e",
      "tree": "343274bb1e635bc503ae0ffc44c68ec44f6b69e5",
      "parents": [
        "c95d6b1cb35b382804b9a310d32f66059eca65d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 14:35:46 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 14:45:07 2013 -0700"
      },
      "message": "Clear exception if catch block doesn\u0027t have move-exception.\n\nBug: 10040419\n\nChange-Id: Icc7a55cb3cdfbc3efd2b161bbe22b3e5007de35f\n"
    },
    {
      "commit": "4221d61630ba9f5e386f0e13e40aa33a51a2b6ed",
      "tree": "b4c9a2df24db78b1c47625574d6e3dc91f31b1ff",
      "parents": [
        "024a7276735f0cdd4ff5691a12e698cc7c527d5f",
        "46a1270fad27d81904ed60d0df56761356af500d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "message": "am 46a1270f: Revert \"Support inline dex data\"\n\n* commit \u002746a1270fad27d81904ed60d0df56761356af500d\u0027:\n  Revert \"Support inline dex data\"\n"
    },
    {
      "commit": "024a7276735f0cdd4ff5691a12e698cc7c527d5f",
      "tree": "4348bf588e7cd427cf91d6bf8001fb3fa8d3b933",
      "parents": [
        "ecde136fb42c38cf9928982605abfcd6de46d86a",
        "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "message": "am 64d8f18c: Merge \"Support inline dex data\"\n\n* commit \u002764d8f18c94b23cb4ff908304aef4d9f3f5a85f39\u0027:\n  Support inline dex data\n"
    },
    {
      "commit": "46a1270fad27d81904ed60d0df56761356af500d",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 27 14:36:07 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 27 14:36:07 2013 -0700"
      },
      "message": "Revert \"Support inline dex data\"\n\nThis reverts commit 728328a441c6d3172283f3e44d120550997b5887.\n"
    },
    {
      "commit": "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39",
      "tree": "48d5244620d5b5dcc99820a8879b455aa6fd4677",
      "parents": [
        "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
        "728328a441c6d3172283f3e44d120550997b5887"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 23:47:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 26 23:47:18 2013 +0000"
      },
      "message": "Merge \"Support inline dex data\""
    },
    {
      "commit": "728328a441c6d3172283f3e44d120550997b5887",
      "tree": "886013afb34df67fa7d5feae0d007a508ec950d1",
      "parents": [
        "23d5cffcb8e32aaa6ce0895ade28849f72d90463"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 16:26:08 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 16:46:14 2013 -0700"
      },
      "message": "Support inline dex data\n\nDx always places switch table and array data following executable\ncode.  However, embedding data inline appears to be legal - and\nthe Garmin Connect app does this.  Unknown is what tool generated\nthe odd dex code.  This CL reworks dex parsing to support inline data.\n\nFurther, a verification check to require a move-exception at\nthe beginning of catch regions is disabled.  Dalvik\u0027s verifier appears\nto only require that if a move-exception exists, it must be at\nthe beginning of the catch.  If there is value to the check\nrequiring a move-exception, we\u0027ll need to enable it based on a\nfuture dex version.\n\nChange-Id: I80c78544993acb999f7c62d32479c3c8455b56cb\n"
    },
    {
      "commit": "0f055d11096cb02563e9c040cd03c791fd8f69a3",
      "tree": "8c7e730f17174ab4e11786fde1c2a05c7039d507",
      "parents": [
        "93c3396f8b33539489763ebdfafcedb4127009d9",
        "7934ac288acfb2552bb0b06ec1f61e5820d924a4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:46:02 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:47:51 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7934ac28 to dalvik-dev\n\nChange-Id: I8798a6f154463d3f92f6aca62f14130aec82d273\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    }
  ],
  "next": "93c3396f8b33539489763ebdfafcedb4127009d9"
}
