)]}'
{
  "log": [
    {
      "commit": "97c1a658b063ac202a29d31b5c0ef55a6f233537",
      "tree": "968ae2895ba34198ca95db66433b458c8b6a84e5",
      "parents": [
        "df62f34281407990a48b4346e16c99d6bb3a648b",
        "896df40bbb20f4a1c468e87313b510c082016dd3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Nov 09 20:45:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Nov 09 20:45:04 2014 +0000"
      },
      "message": "Merge \"ART: Fix possible soft+hard failure in verifier\""
    },
    {
      "commit": "896df40bbb20f4a1c468e87313b510c082016dd3",
      "tree": "918c0656583d807566f9247b23ef2698700a4218",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 20 22:25:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Nov 09 12:42:42 2014 -0800"
      },
      "message": "ART: Fix possible soft+hard failure in verifier\n\nIt was possible to generate a hard failure and a subsequent soft\nfailure, which violates a CHECKed invariant.\n\nRefactor code slightly to share common code.\n\nBug: 17625962\n\n(cherry picked from commit f08663b47ccd3aa083972d62937a328ad80d080e)\n\nChange-Id: Iccd9e30f1087363b19b2faedc10243a2290202c0\n"
    },
    {
      "commit": "e7c9a8c2b8481aafbc6af4ce6229bd361ba24742",
      "tree": "f6d8fe8fd7aeae117a6547dc4f012cd4085cb4e8",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:35:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 11:45:06 2014 -0800"
      },
      "message": "Add hash map, reduce excessive hashing\n\nChanged the class def index to use a HashMap instead of unordered_map\nso that we can use FindWithHash to reduce how often we need to compute\nhashes.\n\nFixed a bug in ClassLinker::UpdateClass where we didn\u0027t properly\nhandle classes with the same descriptor but different class loaders.\nIntroduced by previous CL.\n\nBefore (fb launch):\n1.74% art::ComputeModifiedUtf8Hash(char const*)\n\nAfter:\n0.95% art::ComputeModifiedUtf8Hash(char const*)\n\nBug: 18054905\nBug: 16828525\n\nChange-Id: Iba2ee37c9837289e0ea187800ba4af322225a994\n\n(cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "575e78c41ece0dec969d31f46be563d4eb7ae43b",
      "tree": "16906df0ba0912a6cb01b3139ba7c60d5f9d09b7",
      "parents": [
        "2998e9cdc9f19c30c4944a4726ed9f147de79ebd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "message": "ART: Replace COMPILE_ASSERT with static_assert (runtime)\n\nReplace all occurrences of COMPILE_ASSERT in the runtime tree.\n\nChange-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2\n"
    },
    {
      "commit": "f72a11dd4b0dd86bc4b1baa37bfa47fc8d5572b5",
      "tree": "bf2f2842a7bbe44057bc1e8c0e176b51baa173ac",
      "parents": [
        "2a4e71ca268f8a5b3d8424116a7a8650265d8774"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 15:41:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 16:17:21 2014 -0700"
      },
      "message": "Add math routines with defined wrapping behavior for the interpreter.\n\nAdd a RSUB_INT_LIT16 instruction alias to make instruction opcode switch\nstatements easier to read.\n\nChange-Id: I3bac07c9518665abf0b05b5c3105a90be22f780a\n"
    },
    {
      "commit": "7c0381049ea33e64514984432312290842946bc1",
      "tree": "24a8928610ebc84a166f1b766f3f70799cd66a9d",
      "parents": [
        "0ea536897c078761e0309437a3d25fbbf53c94a3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 27 20:08:46 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 30 10:06:52 2014 -0700"
      },
      "message": "ART: Do not abort on most verifier failures\n\nChanges hard aborts to hard verifier failures, which rejects a\nclass instead of killing the process.\n\nBug: 17625962\n\n(cherry picked from commit 8fa841aa1c02ff8e3e7caaa73ed5fe25f027d5d3)\n\nChange-Id: Iba8e15676e13ea6dcd6e1e5d0484031d9ab52ae9\n"
    },
    {
      "commit": "ded66a01f81812e0129d17c3d08d5eda18433062",
      "tree": "74a3f7bad1c020b0136d6c173633a361a479f5cb",
      "parents": [
        "e0205d519dd417f749243b42b8711dfa313e5390"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:12:55 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:36:32 2014 -0700"
      },
      "message": "Move MethodHelper::GetReturnType to mirror::ArtMethod.\n\nAlso, fix missing handle in HasSameSignatureWithDifferentClassLoaders.\n\nChange-Id: I9e1ffd09be950ecc8346fc3c485760d82d9ecab3\n"
    },
    {
      "commit": "98c271d517bc4d25fc6879b4b8e35ea93885d9e2",
      "tree": "233cbcc2bbb555cbe4b9ae4bf3eb899d238e4b90",
      "parents": [
        "661cb3f65d3d6fd09f4823f4519890646260fbe6",
        "db0cccd9a74cb9aa5f3b62f377415f653e3c0ca4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 20:43:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 24 20:43:21 2014 +0000"
      },
      "message": "Merge \"Code cleanup.\""
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "db0cccd9a74cb9aa5f3b62f377415f653e3c0ca4",
      "tree": "852a7c3bdfa234913c4c62e462738575a736410f",
      "parents": [
        "eb1d22bf405f0edaeb34f78905d75f167e88b868"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "logan.chien@mediatek.com",
        "time": "Tue Sep 30 19:07:55 2014 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "logan.chien@mediatek.com",
        "time": "Tue Sep 30 19:07:55 2014 +0800"
      },
      "message": "Code cleanup.\n\nChange-Id: I054a946e91a6e6fb20a9dc499e521c8b15a53502\n"
    },
    {
      "commit": "c8ccf68b805c92674545f63e0341ba47e8d9701c",
      "tree": "fb360323538cb242ebf7c5c0aca27d3a0bce0abb",
      "parents": [
        "fcabfbe577c0fd40910b565beb681bd4b66f6c5d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:07:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:13:48 2014 -0700"
      },
      "message": "ART: Fix some -Wpedantic errors\n\nRemove extra semicolons.\n\nDollar signs in C++ identifiers are an extension.\n\nNamed variadic macros are an extension.\n\nBinary literals are a C++14 feature.\n\nEnum re-declarations are not allowed.\n\nOverflow.\n\nChange-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a\n"
    },
    {
      "commit": "f731a78809ac61a9085781370f0f38ef88305276",
      "tree": "f20c145d8240a560c251f788acf7de48f6b7ca45",
      "parents": [
        "59dce708c643fef943f8d1ce8cf9414d7bdba2e9",
        "5ca20548f6298b16ebf9793d0135c1478dd65946"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 18:29:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 29 18:29:17 2014 +0000"
      },
      "message": "Merge \"ART: More verifier error output\""
    },
    {
      "commit": "5ca20548f6298b16ebf9793d0135c1478dd65946",
      "tree": "af789b22e52d66917decdaa782b2090cc788ffbf",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:02:30 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 09:13:51 2014 -0700"
      },
      "message": "ART: More verifier error output\n\nAdd some debug output on verifier abort.\n\nChange-Id: I4a84ff1d8e1bad689addca287a989639e7111b97\n"
    },
    {
      "commit": "cb3c08fe9c733e477776dcc0d0fa5a3cf0053aa7",
      "tree": "518abbf5fa2dc8488ddb7f31b7941d41dc00f002",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 13:16:38 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 08:12:44 2014 -0700"
      },
      "message": "ART: Do a pre-pass for monitor_enter dex pc search\n\nIn case the method does not have any monitor_enter instructions,\nit is unnecessary to run the full verifier. Speeds up stack dumps\nand works around b/17514582.\n\nBug: 17514582\nChange-Id: I5201bfbb9fb6cad49596b4c72e71983b58d9f20c\n"
    },
    {
      "commit": "5f09be9e4fbd3002712e820245562b1a57e55c3f",
      "tree": "202981b77484b85fe85eb7591aba07b98aa0f941",
      "parents": [
        "acc7798973a21df5b9944348b371f0e1ceffab80"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Sep 26 10:43:59 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Sep 26 10:43:59 2014 -0700"
      },
      "message": "Fix verifier crash in GetQuickFieldAccess().\n\nBug: 17671806\nChange-Id: Ifb603f6f55a94826d656a4c73a7e328d74f6dac9\n"
    },
    {
      "commit": "c5c71bfa21aee5ad05217af57e94a0263c4eef1d",
      "tree": "8fa9a003aed0ab98e196ed91338d936efdbadeb7",
      "parents": [
        "9961929db4fce2143df10df60fa29cc8ee7b00d7",
        "9bc6199a9a6e140102951f6f38845b43b561af83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 25 01:55:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 25 01:55:35 2014 +0000"
      },
      "message": "Merge \"ART: Reject branch/switch/throw to move-result.\""
    },
    {
      "commit": "9bc6199a9a6e140102951f6f38845b43b561af83",
      "tree": "31a9fbba4960a6e5ee691028108e2e540ecacde0",
      "parents": [
        "5957d54ac0de8a318dbc5a163734f877b1185e38"
      ],
      "author": {
        "name": "Stephen Kyle",
        "email": "stephen.kyle@arm.com",
        "time": "Mon Sep 22 13:53:15 2014 +0100"
      },
      "committer": {
        "name": "Stuart Monteith",
        "email": "stuart.monteith@arm.com",
        "time": "Wed Sep 24 17:48:19 2014 +0100"
      },
      "message": "ART: Reject branch/switch/throw to move-result.\n\nmove-result* instructions must occur after invoke instructions,\nhowever it was still possible to branch or switch to a move-result*\ninstruction with creative DEX manipulation. The verifier now rejects\nthis situation, as well as having a move-result* instruction as the\nfirst instruction in a try block\u0027s handler. This now ensures that\nmove-result* must happen dynamically after an invoke, not just\nstatically.\n\nChange-Id: Ida97852f4051310fdaf38bed1d6e1c5a541c85c5\nSigned-off-by: Stephen Kyle \u003cstephen.kyle@arm.com\u003e\n"
    },
    {
      "commit": "10f0ca2844e82a3319a12246af913e14f93194ef",
      "tree": "1c1d4c7094330cfeabb10683eb5c3cb6c79be8fd",
      "parents": [
        "b36bba6d35e88687852b108c8d4b73b3ec2a9397"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "logan.chien@mediatek.com",
        "time": "Tue Sep 23 23:01:47 2014 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "logan.chien@mediatek.com",
        "time": "Wed Sep 24 23:05:39 2014 +0800"
      },
      "message": "Fix \"const-class v0, I\" for libartd.so\n\nThis CL fixes the verification of \"const-class v0, I\"\nby adding HasClassVirtual() to PrimitiveType.\n\nWithout this CL, the DCHECK for HasClass() in RegType::GetClass()\nwill raise an assertion failure, since the verifier is trying to get\nthe class object for the dex cache.\n\nThis issue can be reproduced by running the CTS\ndot.junit.opcodes.const_class.Main_testN2 with libartd.so.\n\nChange-Id: I605a3fcf7dd9d63e1f739fbb3153d0367911bb3e\n"
    },
    {
      "commit": "7f590e25c76891c3839a282635b5932af23812df",
      "tree": "38ea385029903068f5e8753a0ab154026c7238de",
      "parents": [
        "79bbbe2d79811d4e86486cb8bc2b49e9a2b3c0d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 19:46:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 17 22:46:45 2014 -0700"
      },
      "message": "Restore some aosp/master changes lost in cherry-pick 7c438b19b71932ac8a44eff44f20744a01559c8d\n\nChange-Id: Ic9fe8a235baac85efbdf748aeaddf98139558c4e\n"
    },
    {
      "commit": "5cbcde2983d7cb95deb38d39784f03a7192b0061",
      "tree": "e628adc6a9645827d23084e0c2f3ec52a5c7db10",
      "parents": [
        "100d341c52e312a7bef8d9b641b090f71993ee64"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 16 14:59:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 16 15:01:30 2014 -0700"
      },
      "message": "ART: Fix method verifier dumping\n\nDo not try to dump on hard failure.\n\nBug: 15567083\nChange-Id: I6278f551f8a9dc7411087e214023dd4d142d1d26\n"
    },
    {
      "commit": "2cbaccb67e22c0b313a9785bfc65bcb4b25d0676",
      "tree": "daeb766e19880b651fd9c4a719c9a07dd7d4bd0e",
      "parents": [
        "bace0378d720a1d2938ec7f6be17e2814671d20a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 14 20:34:17 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 16 12:50:08 2014 -0700"
      },
      "message": "Avoid printing absolute addresses in oatdump\n\n- Added printing of OatClass offsets.\n- Added printing of OatMethod offsets.\n- Added bounds checks for code size size, code size, mapping table, gc map, vmap table.\n- Added sanity check of 100k for code size.\n- Added partial disassembly of questionable code.\n- Added --no-disassemble to disable disassembly.\n- Added --no-dump:vmap to disable vmap dumping.\n- Reordered OatMethod info to be in file order.\n\nBug: 15567083\n\n(cherry picked from commit 34fa79ece5b3a1940d412cd94dbdcc4225aae72f)\n\nChange-Id: I2c368f3b81af53b735149a866f3e491c9ac33fb8\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "2ed8deff799448e094fa7a7cb9cf3b718820f4c6",
      "tree": "b33fa371673d2019b6a8bdb2c928237cd7b3a9d3",
      "parents": [
        "41bc89598bbfe1037740a6a2e12ce0936dd9ba19"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 28 14:41:02 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:42:50 2014 -0700"
      },
      "message": "ART: Allow quickening in the boot image\n\nUpdate the class linker to accept class status from the boot image\nin compiler mode. Update compiler driver to allow quickening for\nboot image classes. Update method verifier to accept quickened\ninstructions in compiler mode when we just want to dump. Update\noatdump to the new verifier API.\n\nBug: 17316928\n\n(cherry picked from commit 35439baf287b291b67ee406308e17fc6194facbf)\n\nChange-Id: I9ef1bfd78b0d93625b89b3d662131d7d6e5f2903\n"
    },
    {
      "commit": "5182932cf6704b53e957f7b4be021fe505a55e22",
      "tree": "99ee2bfb5a6f4d27735aeed26a0533c759db733c",
      "parents": [
        "56369897d662ea63ea5ed57ae36af0ae0fa1452d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 25 15:05:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:37:25 2014 -0700"
      },
      "message": "ART: Change access flag behavior in verifier\n\nNote: this moves the miranda modifier to the upper 16 bit.\n\nBug: 16161620\n\n(cherry picked from commit 7fc8f90b7160e879143be5cfd6ea3df866398884)\n\nChange-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5\n"
    },
    {
      "commit": "7c438b19b71932ac8a44eff44f20744a01559c8d",
      "tree": "f724004a682cb7c2faa0d12579756c3a81b98252",
      "parents": [
        "ebab3bbcaa09b644acd50ec18d79cb0d239bf347"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 17:01:24 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 18:27:38 2014 -0700"
      },
      "message": "Fix stale root error in verifier\n\nThere was a stale root error caused by the static roots from\nthe reg types. These were visitied if there was an active verifier\nin the method_verifiers_ but this is not always the case when a GC\nis run. The fix is to always visit the static method verifier roots.\n\nThis only showed up as a bug without an image since these roots\nwere primitive classes and always in the image, and therefore\ndidn\u0027t ever need to be updated due to moving GC.\n\n(cherry picked from commit 6167864e28e4e12658ebdbaf1d5239acdaf4aaa4)\n\nChange-Id: I592f2770570de97b431671cfbd409f63697892f1\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "5441091dc78c64a683cb336ff27e80c364bc2cd3",
      "tree": "f5321f27c993634d46cc9777def144cd7f4f0b2e",
      "parents": [
        "d8f69b086baf6717ce949d1c4de90d73b91083b0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 15:33:05 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 15:33:05 2014 -0700"
      },
      "message": "Re-add read barrier to roots in the verifier.\n\nFixes read-barriers but keeps verifier API invariants. Based on:\nhttps://android-review.googlesource.com/#/c/102962\nBug: 17398101\n\nChange-Id: Iad986784a5d735ccb3214362ccfc7ef69bc02c57\n"
    },
    {
      "commit": "d8f69b086baf6717ce949d1c4de90d73b91083b0",
      "tree": "1a19ca7433520d48f2446d985794f0f55edef003",
      "parents": [
        "2adccb618c0de207fde96e5e90ce99c79eb8eb85"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 21:43:52 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 15:21:47 2014 -0700"
      },
      "message": "Revert \"Add read barriers for the roots in the verifier.\"\n\nThis reverts commit 7da9586b559290e1c16207c6513ffe485de61655.\n\nBug: 17398101\n\nChange-Id: I1d6110fdf0d3a3c9241c8e7e7f4b85a298f9dd8e\n"
    },
    {
      "commit": "376fa68f02d1cd56e506533a3ad16de4de88271d",
      "tree": "9a462043cdacba41c96c6a1ee3c8ba08f904318b",
      "parents": [
        "ed20a4d80bcd8d47b5bcdd51ef17c786c0e5015c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Sep 07 13:06:12 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 08 22:08:53 2014 -0700"
      },
      "message": "ART: Fix unchecked register index validity\n\nThe static check of index validity is against the type given by\nthe instruction, e.g., boolean for SPUT_BOOLEAN, but the target_type\nis the resolved field type and can differ. An additional check is\nnecessary to avoid a read out of bounds.\n\nBug: 17411109\n\n(cherry picked from commit 74ae47a0590feceea31a2388f98c83e3ec0df0ec)\n\nChange-Id: Ie4ed8bbda79f3f6403a24e727450a943447aa71d\n"
    },
    {
      "commit": "bad0267eaab9d6a522d05469ff90501deefdb88b",
      "tree": "1ce689b75184cb322b9edde34d7af938c658a6ae",
      "parents": [
        "0772a9d99c8774463c9076824340eaa4eb66f47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 25 13:08:22 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 18:57:35 2014 -0700"
      },
      "message": "Add native memory accounting through custom allocator.\n\nAdded a custom allocator that lets you pass in a special tag which\nspecifices where the allocation came from. This is used when\ndumping. The performance overhead is low since each allocation only\ndoes a atomic add/sub for each allocation/free.\n\nThe measurements are dumped to traces.txt during SIGQUIT.\n\nExample output:\nI/art     (27274): AllocatorTagHeap active\u003d120 max\u003d120 total\u003d168\nI/art     (27274): AllocatorTagMonitorList active\u003d1572 max\u003d6240 total\u003d11724\nI/art     (27274): AllocatorTagClassTable active\u003d185208 max\u003d185208 total\u003d268608\nI/art     (27274): AllocatorTagInternTable active\u003d430368 max\u003d430368 total\u003d436080\nI/art     (27274): AllocatorTagMaps active\u003d5616 max\u003d6168 total\u003d34392\nI/art     (27274): AllocatorTagLOS active\u003d1024 max\u003d1536 total\u003d2044\nI/art     (27274): AllocatorTagSafeMap active\u003d0 max\u003d51936 total\u003d533688\nI/art     (27274): AllocatorTagLOSMaps active\u003d144 max\u003d1248 total\u003d5760\nI/art     (27274): AllocatorTagReferenceTable active\u003d10944 max\u003d11840 total\u003d19136\nI/art     (27274): AllocatorTagHeapBitmap active\u003d32 max\u003d40 total\u003d56\nI/art     (27274): AllocatorTagHeapBitmapLOS active\u003d8 max\u003d8 total\u003d8\nI/art     (27274): AllocatorTagVerifier active\u003d0 max\u003d18844 total\u003d1073156\nI/art     (27274): AllocatorTagModUnionCardSet active\u003d5300 max\u003d5920 total\u003d56020\nI/art     (27274): AllocatorTagModUnionReferenceArray active\u003d24864 max\u003d24864 total\u003d24864\nI/art     (27274): AllocatorTagJNILibrarires active\u003d320 max\u003d320 total\u003d320\nI/art     (27274): AllocatorTagOatFile active\u003d1400 max\u003d1400 total\u003d5852\n\nChange-Id: Ibb470ef2e9c9a24563bb46422d46a55799704d82\n\n(cherry picked from commit 5369c40f75fdcb1be7a7c06db212ce965c83a164)\n"
    },
    {
      "commit": "8e219ae27624116b6d23e858fb21e93342f81d66",
      "tree": "a685be4079ff6c506630b720eb50226d16848005",
      "parents": [
        "0b05ec674139c2b2e0914b0bb0e1898f93a9c852"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 19 14:29:46 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 26 15:28:07 2014 -0700"
      },
      "message": "Reduce interpret-only compile time.\n\nBefore:\n39.04user 5.18system 0:29.24elapsed 151%CPU (0avgtext+0avgdata 164176maxresident)k\n38.87user 5.16system 0:29.14elapsed 151%CPU (0avgtext+0avgdata 164144maxresident)k\n\nAfter:\n36.26user 3.25system 0:27.00elapsed 146%CPU (0avgtext+0avgdata 162592maxresident)k\n36.25user 3.28system 0:26.28elapsed 150%CPU (0avgtext+0avgdata 162688maxresident)k\n\nDisabled implicit stack protection for the compiler, this reduces page faults.\n\nAdded support for not timing every method compilation and verification. NanoTime is\nslow and adds ~2 seconds of real time. This is currently enabled since people want\nto know which methods are slow to compile.\n\nBug: 16853450\n\nChange-Id: I349ffb3f36db8c437137387aa6914dc17d743f09\n"
    },
    {
      "commit": "37f05ef45e0393de812d51261dc293240c17294d",
      "tree": "7c7793862efa52e1deb42babbdcb652c245ab941",
      "parents": [
        "e25826e28ea65d9c1aa23f84788a091c677b20c7"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jul 16 18:38:08 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 11:16:53 2014 -0700"
      },
      "message": "Reduced memory usage of primitive fields smaller than 4-bytes\n\nReduced memory used by byte and boolean fields from 4 bytes down to a\nsingle byte and shorts and chars down to two bytes. Fields are now\narranged as Reference followed by decreasing component sizes, with\nfields shuffled forward as needed.\n\nBug: 8135266\nChange-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752\n"
    },
    {
      "commit": "bf99f77dda749e2b653e8c45259b1fb56e7bb012",
      "tree": "98addbb3533c745781bc26e4a55cbbdd6d6e97e7",
      "parents": [
        "762f0a5bdd238458bbb463a9565388f2047a98d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:37:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:54:24 2014 -0700"
      },
      "message": "Clean up Handle usage.\n\nPrefer using ConstHandle instead of Handle as function arguments\nsince you can\u0027t assign new references to ConstHandle which helps\nprevent bugs.\n\nChanged NullHandle to be a ConstHandle so that you can never modify\nit to be a non null reference.\n\nChange-Id: I81cb979f6f8d5b49e5614966a2caf28c3701dd4f\n"
    },
    {
      "commit": "1dbc3a918612e9ce01f8b05b5ef5f4cbb34e74d0",
      "tree": "8c222c9f85ac9f14a14997fbbf5522f383096c6d",
      "parents": [
        "19c62d5e819519932aa7dff87a52f77815c64e65",
        "695c5982eeddee18c643cc2f94c9d78fa75599ab"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 20:34:16 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 22 20:34:16 2014 +0000"
      },
      "message": "Merge \"ART: Reject field accesses to non-reference vregs.\""
    },
    {
      "commit": "695c5982eeddee18c643cc2f94c9d78fa75599ab",
      "tree": "8bba139b6388b74737f656fdc09f8431aeb992eb",
      "parents": [
        "21106bc612a7f4158ef968f90454b4c78c4061b2"
      ],
      "author": {
        "name": "Stephen Kyle",
        "email": "stephen.kyle@arm.com",
        "time": "Fri Aug 22 15:03:07 2014 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 20:33:35 2014 +0000"
      },
      "message": "ART: Reject field accesses to non-reference vregs.\n\nThe verifier will now reject any iget/iput insts\nthat do not have a reference object in vB.\n\nBug: 17207857\nChange-Id: I2826f0f7abfc88561f4da9486588592f4b296d14\nSigned-off-by: Stuart Monteith \u003cstuart.monteith@arm.com\u003e"
    },
    {
      "commit": "dc3761719fb5e2d1ced5708e3c73b965f9ef0c73",
      "tree": "84d499b1be46896793bdfebe6f83bf8ca275d50b",
      "parents": [
        "a37ad7a6caad2e0a83c72c1103015202cbcaf1a4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "message": "Handlerize MethodVerifier::mirror_method_.\n\nThe method (mirror_method_) wasn\u0027t handlerized across some\nallocation/GC points such as the ResolveType() call in\nScanTryCatchBlocks() and the GetReturnType() calls in\nCodeFlowVerifyInstruction().\n\nBug: 12687968\nChange-Id: I95323de14459eb5a7c4abfcf44f882f86d59be64\n"
    },
    {
      "commit": "78480ecb348beee3f27731e12ec06ade032521d6",
      "tree": "4b1e9a73212bc70f7cab9f62737b691e8769b585",
      "parents": [
        "d684cbfbe8abfb9aea4de27687041243217295c7"
      ],
      "author": {
        "name": "Elena Sayapina",
        "email": "elena.v.sayapina@intel.com",
        "time": "Fri Aug 15 15:52:42 2014 +0700"
      },
      "committer": {
        "name": "Elena Sayapina",
        "email": "elena.v.sayapina@intel.com",
        "time": "Mon Aug 18 12:42:30 2014 +0700"
      },
      "message": "ART: Fix verifier fail message.\n\nVerifier failure message is corrupted.\nThe verification failure reason overlaps verification failure location.\nMethodVerifier::Fail() method creates failure message stream by\nstd::ostringstream(failure location) constructor which by default\nsets the stream\u0027s position indicator to the begging of that stream.\nInserting failure reason to the stream by \"\u003c\u003c\" then overrides the failure location.\nUsing std::ostringstream(failure location, std::ostringstream::ate) fixes the issue\nby setting the stream\u0027s position indicator to the end of the stream on opening.\n\nChange-Id: I8cc1cffc95bc5c56aadbb9ab8c0cdc8bc680d6f4\nSigned-off-by: Elena Sayapina \u003celena.v.sayapina@intel.com\u003e\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "0d08727e19b46770f0f27633d08caf13d9bb3e98",
      "tree": "ccba29566141d15396ff76348ac5db040c7bab1b",
      "parents": [
        "7aaa8dbfbcde7f58564b42044892891559669838"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 04 14:47:17 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 04 15:07:17 2014 -0700"
      },
      "message": "Make verifier identify unresolved methods as constructors by \u003cinit\u003e.\n\nCheck was previously missing brackets in the method name.\n\nBug: 16560516\n\n(cherry picked from commit 04ce113458b6b01f96d58dbb4c41682ee22d8b5d)\n\nChange-Id: Ie98c5b84e73ffc43ea08e1b08ae9c6e41bcd5891\n"
    },
    {
      "commit": "7da9586b559290e1c16207c6513ffe485de61655",
      "tree": "4fb44066c831224dad49430f69aa4edf29aad3da",
      "parents": [
        "1175aec5f686b9e3d429282d7d4022c39436f71f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jul 30 14:26:22 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jul 31 10:45:47 2014 -0700"
      },
      "message": "Add read barriers for the roots in the verifier.\n\nNote: Because the roots (the class references in RegType objects) can\nbe updated by the read barriers, a lot of uses of type \"const RegType\"\nwere replaced with \"RegType\".\n\nBug: 12687968\nChange-Id: I6cf37a87f352938d43fb51560a8d927ada104f50\n"
    },
    {
      "commit": "aa910d5ef43256102809e397de305c23f1c315e6",
      "tree": "ffd2bae0a66e2f174fabc4e8c1062038e5b5dccc",
      "parents": [
        "da4a1264cd7d5db9ed01cfd1eeaed71cb11c6c71"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 30 18:59:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 30 20:38:55 2014 -0700"
      },
      "message": "ART: Fix verifier mishandling erroneous array component types\n\nThe verifier must not assume that component types are not erroneous.\n\nBug: 16661259\nChange-Id: I23b2f517259ca9c0b8a1aa38f6348fcd61e0b22e\n"
    },
    {
      "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": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\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": "52271936367b5be48ec3c49bf567167c7d6c4044",
      "tree": "5f2f16192a8bd532c6495cb31a1d9f71ce1b17f9",
      "parents": [
        "c2bb441a65c5d1dd0b73d04489514ab09bd53c8a",
        "6afd409d9ff5911d7de6967836535e15219ab31f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jun 07 00:19:05 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 07 00:19:05 2014 +0000"
      },
      "message": "Merge \"Fix mismatched new[] delete in verifier.\""
    },
    {
      "commit": "6afd409d9ff5911d7de6967836535e15219ab31f",
      "tree": "96efb9b7072c20537b2ac5710aba111c024e793f",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:59:39 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 17:09:56 2014 -0700"
      },
      "message": "Fix mismatched new[] delete in verifier.\n\nDone in order to please valgrind.\n\nBug: 15432385\nChange-Id: Iebb6fe50eb71fc7f4c2f8e7aa93ad6ab226be5a8\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": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\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": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "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": "a1ce1fef2d49d1d537776a5308ace7102a815fe5",
      "tree": "a1afe850d9ebd21f4b751eb68e1ec3dc60dab001",
      "parents": [
        "930f7b843ddc6e6530439d3fdb0e2133a6292f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 23:23:58 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 26 13:17:44 2014 -0800"
      },
      "message": "Split up CommonTest into CommonRuntimeTest and CommonCompilerTest\n\nChange-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70\n"
    }
  ],
  "next": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b"
}
