)]}'
{
  "log": [
    {
      "commit": "16e3d2cee40f3305f29f3ce0d2857ecc815e57bc",
      "tree": "2c529f1777d351dfff8ef95edf95a3dd84358bf4",
      "parents": [
        "d090cf4f2420a228251e27dbae600f4f44ae2c57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 12:57:00 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 13:04:17 2013 -0700"
      },
      "message": "Check interface assignability strictly for check-cast elision.\n\nObjects are assignable to interfaces in the verifier as described in the long\nRegType::ClassJoin comment. Using IsAssignableFrom therefore brought about\na bug where all check-casts where the cast type was an interface were being\nelided. Introduce a new strict is assignable from routine that follows the\nruntime rather than the verifier is assignable from behavior.\n\nChange-Id: Iac30f71ce9116f2ef16c22acd73eea1c19c79d89\n"
    },
    {
      "commit": "d090cf4f2420a228251e27dbae600f4f44ae2c57",
      "tree": "bee68fc19e535effde1f0a6d3f0130a6df9b97cb",
      "parents": [
        "9b36039438c06e3c39324914fc13389b36c68dd2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 15:35:18 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 15:39:59 2013 -0700"
      },
      "message": "Always dump stacks if we\u0027re aborting.\n\nIn Bug:9285048 we don\u0027t see the stack of the offending thread as it is not\nsuspending. Break thread-safety by attempting to dump all threads when the\nglobal aborting flag is raised.\n\nChange-Id: Icb72642833e73ed4c06fa2771695fcd6d9899c78\n"
    },
    {
      "commit": "9b36039438c06e3c39324914fc13389b36c68dd2",
      "tree": "926cc2e7aefefd8149e297d37fa240c1c9df23ff",
      "parents": [
        "c9e463c8aa083a5ed20293f42363ebff93de5f84"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 14:45:07 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 14:45:07 2013 -0700"
      },
      "message": "Peephole the type of a source of a move-object before instance-of.\n\nIn relation to dx\u0027s Bug:9316546 we need to look through move-objects to see\nwhere the original register comes from.\nThis increases the number of check-casts removed in boot.oat by ~0.5%.\n\nChange-Id: I0c8e94978f522d840764fa675e805496a3ff08b8\n"
    },
    {
      "commit": "c9e463c8aa083a5ed20293f42363ebff93de5f84",
      "tree": "9664a0f909043f822437e804339c11eb77896db7",
      "parents": [
        "a7005960d536cbfd7ba82d2fa52ee1865516435b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 16:52:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 23:57:52 2013 -0700"
      },
      "message": "Faster instance-of for final classes.\n\nIf a class is final and not and array we can generate a 1/0 based on class\nequality.\nUse a method\u0027s declaring class if it matches the instance-of class (common in\nJava equals methods).\nDon\u0027t do a class pointer comparison in the case of an abstract or interface\nclass, just go straight into the slow-path.\nFix performance bug where peep-hole verifier pass didn\u0027t merge into the\nfall-through line if the next instruction wasn\u0027t interesting.\n\nChange-Id: Idb47ec6acebfd25a344ed74adaacba02fafc7df2\n"
    },
    {
      "commit": "a7005960d536cbfd7ba82d2fa52ee1865516435b",
      "tree": "4b48df851ee745e56eff5843d8c7e4b9feee4ecb",
      "parents": [
        "fae370a044f5817f69937cccfd2d12a16b374266"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 09:22:10 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 09:22:10 2013 -0700"
      },
      "message": "Unresolved types aren\u0027t assignable from Object.\n\nAlso, don\u0027t eliminate check-cast if an access check is required.\n\nChange-Id: Ibb864e01917a93f77db4cf6eb53461c5c7cb0162\n"
    },
    {
      "commit": "fae370a044f5817f69937cccfd2d12a16b374266",
      "tree": "60af2a03b19e9bcca149e0519504da134d17f9ed",
      "parents": [
        "1b1e8da7287e199533bf63d72f16fdff99fe7f8e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "message": "Don\u0027t apply instance-of peephole when vDest \u003d\u003d vSrc.\n\nBug: 9284898.\nAlso statistic to show check-cast ellision use.\nFix bug where the check-cast ellision was using wrong dex pc.\nAvoid a use of DecodedInstruction.\nOther formatting clean-up.\n\nChange-Id: Ibf67941a24148b615896d0be6f2f29ce5034e53a\n"
    },
    {
      "commit": "1b1e8da7287e199533bf63d72f16fdff99fe7f8e",
      "tree": "bc212f567422d957895a64911a59f395d638c24b",
      "parents": [
        "980d16b81f3dd78eb491b80bed9cd184016878c6",
        "92c607f614484ed091cfb1f73fab5c736eed78de"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 05 12:29:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 05 12:29:44 2013 +0000"
      },
      "message": "Merge \"Optimize branch instructions in interpreter.\" into dalvik-dev"
    },
    {
      "commit": "980d16b81f3dd78eb491b80bed9cd184016878c6",
      "tree": "93b06ee8e66568a3a224798c3aa35768ea0c7e05",
      "parents": [
        "8d3a117b374352a1853fae9b7306afeaaa9e3b91"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 04 15:01:40 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 04 15:50:14 2013 -0700"
      },
      "message": "Stage 2 of cast elision opt.\n\nNO code is generated for check-casts where we can statically determine the type is correct (through the instaceof-ifeq pattern).\n\nChange-Id: I4935375d7ffd4e7d4ff0aaad900c1a4de9deefaa\n"
    },
    {
      "commit": "92c607f614484ed091cfb1f73fab5c736eed78de",
      "tree": "c3929e6a415fba4216846c71ea49fd63e5ab0b81",
      "parents": [
        "4b3dc167917f8cf700416659b1bca220c1ccafe9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 04 16:18:52 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 04 19:00:09 2013 +0200"
      },
      "message": "Optimize branch instructions in interpreter.\n\nThis CL cleans up branch instructions handling by optimizing instruction\ndisplacement with an offset by changing the way we compute the next\ninstruction. On ARM, it saves at least 3 instructions for GOTO and 4\ninstructions for IF-XX/Z.\n\nThis CL also transforms the Instruction::At CHECK into a DCHECK. This improves\nthe compiled code when computing next instruction.\n\nChange-Id: I901699201012d2dbbaef4d9158cc97b63bfbbe84\n"
    },
    {
      "commit": "8d3a117b374352a1853fae9b7306afeaaa9e3b91",
      "tree": "3d715e8abed609581249034f1f62037def104ac2",
      "parents": [
        "4b3dc167917f8cf700416659b1bca220c1ccafe9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 04 01:13:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 04 09:16:43 2013 -0700"
      },
      "message": "Perf tweaks to compiling and oat writing.\n\nMake hot quick compiler routines inlinable.\nRemove computation/use of SSA strings.\nUse vector insert when writing to the end of a vector in the output stream, to\navoid a memset followed by a memcpy.\n\nGenerating boot.oat/art these changes improve performance by around 2.5%.\n\nChange-Id: I3d0bdb01333efe8f0eda4bdf97225e0b307f934d\n"
    },
    {
      "commit": "4b3dc167917f8cf700416659b1bca220c1ccafe9",
      "tree": "58397e15a0a9ed69aba33755cca314c02a848e32",
      "parents": [
        "8d44885106503f68e5b977c080df8ae6cc360497",
        "48ae54e62578d9382488c62d6779e95cd8302291"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 04 01:00:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 04 01:00:57 2013 +0000"
      },
      "message": "Merge \"Tune ArenaBitVector::Iterator::Next.\" into dalvik-dev"
    },
    {
      "commit": "8d44885106503f68e5b977c080df8ae6cc360497",
      "tree": "dfe686382944e22329674aaf6cfaedd47bf89666",
      "parents": [
        "0aaf0f261b3cbbc1da85b792e7bde801067922d1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 17:26:19 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 17:40:27 2013 -0700"
      },
      "message": "Fix portable build shadow frame.\n\nChange-Id: I78cbf09dbe2bcfc0c3b8bf40f804ae65da7bdf8c\n"
    },
    {
      "commit": "48ae54e62578d9382488c62d6779e95cd8302291",
      "tree": "c62c7652860e19252c54fefddb2d95b380a8c594",
      "parents": [
        "9838487c78a3a5cf058e274c39a67ee97e372a1b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 03 16:59:58 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 03 16:59:58 2013 -0700"
      },
      "message": "Tune ArenaBitVector::Iterator::Next.\n\nHot routine:\n1) move to header file so that fields may be moved to registers,\n2) remove search for bits in word with a CTZ.\n\nChange-Id: I960ee811234c3a65d11f0af55ed15c4444f486ae\n"
    },
    {
      "commit": "9838487c78a3a5cf058e274c39a67ee97e372a1b",
      "tree": "4bd140b345801bafa017681788cf436e5d012ea3",
      "parents": [
        "9b645acfea19b3e3a8c9c61733f07d08dc43dae1",
        "e701f48eb06fa59871412a11286429111270b211"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 21:26:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 03 21:26:37 2013 +0000"
      },
      "message": "Merge \"Clean up shadow frame.\" into dalvik-dev"
    },
    {
      "commit": "e701f48eb06fa59871412a11286429111270b211",
      "tree": "8026f7b25596642e142b67768047484a5307c149",
      "parents": [
        "5243e912875026f99428088db7e80cb11651d64e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 24 11:50:49 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 14:26:02 2013 -0700"
      },
      "message": "Clean up shadow frame.\n\nCreated version of GetThisObject that takes num_ins to get the object\nwithout having to get the code item again. Also using memset to clear\nthe registers on initialization.\n\nChange-Id: I02b255f0c47d2d3c55783f4c96dc93983015f019\n"
    },
    {
      "commit": "9b645acfea19b3e3a8c9c61733f07d08dc43dae1",
      "tree": "16eeabeabf6f85de6deef4cdd1ff7c38f3151a81",
      "parents": [
        "5243e912875026f99428088db7e80cb11651d64e",
        "62cd098c0ca1300ce4c748cad85466e018f44de9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 03 13:53:55 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 03 13:53:55 2013 -0700"
      },
      "message": "am 62cd098c: Add check to catch use dalvik\\\u0027s libcore earlier\n\n* commit \u002762cd098c0ca1300ce4c748cad85466e018f44de9\u0027:\n  Add check to catch use dalvik\u0027s libcore earlier\n"
    },
    {
      "commit": "62cd098c0ca1300ce4c748cad85466e018f44de9",
      "tree": "14519f14fef2c8d033edc84c6f85e55f76a49078",
      "parents": [
        "6b019b33739bfe1613ac6960a2403fa54b4bc671"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 03 11:30:25 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 03 11:30:25 2013 -0700"
      },
      "message": "Add check to catch use dalvik\u0027s libcore earlier\n\nChange-Id: Ic776ee35aead930157500f99049101786b3ee187\n"
    },
    {
      "commit": "5243e912875026f99428088db7e80cb11651d64e",
      "tree": "2c54105cd8d4f94a1309deb66b1a2809fd020eb7",
      "parents": [
        "534ae2b5fc648c7a69c7cd166c9f0440b14e5a38"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 10:55:07 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 03 11:06:39 2013 +0200"
      },
      "message": "Reduce use of DecodedInstruction in verifier.\n\nThis CL reduces the use of DecodedInstruction in verifier. It continues work\nstarted in https://googleplex-android-review.googlesource.com/#/c/311171.\n\nWe cannot remove it completely from verifier because of method\nMethodVerifier::VerifyInstruction. It is based on instruction flags rather than\ninstruction opcode. So we can\u0027t rely on instruction format. We may need to add\nVRegA, VRegB and VRegC methods for this case. This should also be required for\nthe compiler itself. Let\u0027s delay this change to another CL.\n\nChange-Id: I9d34df8b5bdb3db74e4959364c3cde90ef15585d\n"
    },
    {
      "commit": "d0583802482a7b2f54749edc4faa00303459f9a8",
      "tree": "640fb56bfe465aeed281a6585dc12836c87858f9",
      "parents": [
        "8427a3db9efb1c67d581fdae006b9afc5c1283b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 10:51:46 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 11:16:53 2013 -0700"
      },
      "message": "Allow type based sharpening for imprecise references.\n\nWhen a reference is imprecise we may still be able to devirtualize if the\nmethod that is dispatched upon may not be overridden (ie final).\nSome other tidying of the devirtualization code.\n\nFor boot this increases the frequency of type based devirtualization by a\nlittle more than 0.01%.\n\nChange-Id: I050efbcc78c6b89135a6432bd7c2e946d8efbab4\n"
    },
    {
      "commit": "8427a3db9efb1c67d581fdae006b9afc5c1283b2",
      "tree": "5fbd1a2dc815702b6dd1e678b33435c872e35621",
      "parents": [
        "637c65b1e431fd90195b71c141b3590bd81cc91a",
        "397c04884138953090d6d54a683eb7a4df3b8460"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 04:41:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jun 01 04:41:23 2013 +0000"
      },
      "message": "Merge \"Don\u0027t mark instanceof as a safepoint.\" into dalvik-dev"
    },
    {
      "commit": "637c65b1e431fd90195b71c141b3590bd81cc91a",
      "tree": "30097d990e442290bbb4ce94620390075b2dd624",
      "parents": [
        "207bb6548f96636b40ee62124b37d2d82c3ddc6b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:46:00 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 21:31:37 2013 -0700"
      },
      "message": "Verifier improvements.\n\nMake type hierarchy for unresolved and unitialized types explicit.\nTidy and comment code.\nAdd DexFile::FindStringId that takes UTF-16 to avoid unnecessary UTF-8\nconversions during image writing.\nExplicitly disable RTTI that causes problems in debug builds.\n\nChange-Id: I701f1c3be8be5854fcabf5ec39e9f9c5d388aab0\n"
    },
    {
      "commit": "397c04884138953090d6d54a683eb7a4df3b8460",
      "tree": "0b411537f63dff2c4747efe2636aa7a60d575dcd",
      "parents": [
        "207bb6548f96636b40ee62124b37d2d82c3ddc6b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 16:46:31 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 16:46:31 2013 -0700"
      },
      "message": "Don\u0027t mark instanceof as a safepoint.\n\nInstanceof can\u0027t throw an exception and so needn\u0027t be marked as a safepoint.\n\nChange-Id: I3970197db7c58a79baa58f5f675d59e9157060da\n"
    },
    {
      "commit": "207bb6548f96636b40ee62124b37d2d82c3ddc6b",
      "tree": "520b7bba309fac9ee551898bace47e1768088b08",
      "parents": [
        "817e45a26552bc8420fbea9e657ea7884d1010d5",
        "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 18:45:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 31 18:45:18 2013 +0000"
      },
      "message": "Merge \"More profiler driven tweaks.\" into dalvik-dev"
    },
    {
      "commit": "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61",
      "tree": "3efbbafa4cc39683a8bcbc2d76103c3d5bfbf072",
      "parents": [
        "f89eccd509475cb1949c729e796b26a2a248ae04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 16:57:23 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:43:42 2013 -0700"
      },
      "message": "More profiler driven tweaks.\n\nMake more code inlinable by moving to header files.\nUse reserve on std::vectors to avoid reallocation.\n\nChange-Id: I1bf67d32dd58ff5c06dec73a247fadc3de593e91\n"
    },
    {
      "commit": "817e45a26552bc8420fbea9e657ea7884d1010d5",
      "tree": "a1f5297cfdfd76d2f14aea367469c77e91cbee96",
      "parents": [
        "4e2fadad876b5f2ea5b5790b8a31dab300c685ff"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu May 30 18:59:12 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu May 30 19:10:44 2013 -0700"
      },
      "message": "Compiler: type inference bug.\n\nThe recent MIR-level select optimization failed to properly manage\nthe type information of the new kMirOpSelect node, resulting in a\ntype inference mismatch that trigered a reduction of optimization\nlevel (should not have affected correctness).\n\nChange-Id: I4e104050674c8667b9dff15a401ab230a46e7968\n"
    },
    {
      "commit": "4e2fadad876b5f2ea5b5790b8a31dab300c685ff",
      "tree": "6bc5389b7074c7854bdc4ec580e63c14c661ad8a",
      "parents": [
        "104bdd890eb1e4d9d6645e41849dd5d0c9d6b7be",
        "2b87ddf36abff711fa2233c49bffc7ceb03b15d7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 20:21:35 2013 +0000"
      },
      "message": "Merge \"Elision of checks optimization.\" into dalvik-dev"
    },
    {
      "commit": "104bdd890eb1e4d9d6645e41849dd5d0c9d6b7be",
      "tree": "c0512735a0c58972061ebd5151ad82e03cce5670",
      "parents": [
        "49b21e38338f5c74b347c74da4b929fe43dc8396",
        "54c7e27ab00a32f7845e81505e125804e4a0b948"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 20:21:15 2013 +0000"
      },
      "message": "Merge \"Revert \"Elision of checks optimization.\"\" into dalvik-dev"
    },
    {
      "commit": "54c7e27ab00a32f7845e81505e125804e4a0b948",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "9e2d7f141d566f097b053f06053c374e8fe4392a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:05 2013 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:05 2013 +0000"
      },
      "message": "Revert \"Elision of checks optimization.\"\n\nThis reverts commit 9e2d7f141d566f097b053f06053c374e8fe4392a\n\nChange-Id: I0d47ce8c715b9cb6c2eb30d7d4ef296982ca507c\n"
    },
    {
      "commit": "2b87ddf36abff711fa2233c49bffc7ceb03b15d7",
      "tree": "b53d3ac42b11e938b3d52f30f0a71cbf2e822037",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 30 13:14:34 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nFix for Change-Id: Ide3ea09c0e60647da30226d43ae869ca612856f3\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: Ibc8804d78e9ea7caefc21034897a5a500ea014f0\n"
    },
    {
      "commit": "4e60ff6fdab5ef8344eff67034108d3f8a6e138c",
      "tree": "21cd9fa97fc9283c9845d3422ddc2ee47d91bdf2",
      "parents": [
        "1bf8d4dbe5cb9891e8a1125ff1928b544efc243a",
        "9e2d7f141d566f097b053f06053c374e8fe4392a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 17:45:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 17:45:22 2013 +0000"
      },
      "message": "Merge \"Elision of checks optimization.\" into dalvik-dev"
    },
    {
      "commit": "9e2d7f141d566f097b053f06053c374e8fe4392a",
      "tree": "398a72cfe30a532b0ffde7483ad292c02b6afbf1",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 30 10:42:13 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: Ide3ea09c0e60647da30226d43ae869ca612856f3\n"
    },
    {
      "commit": "1bf8d4dbe5cb9891e8a1125ff1928b544efc243a",
      "tree": "84b28ef4c8bdf7da73c16e891e2fe978b52d9a90",
      "parents": [
        "b29bbbc00071f56a4a98a2d94c3968a36763ed55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 00:18:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 10:20:05 2013 -0700"
      },
      "message": "Profiler directed clean-up of dex2oat.\n\nFix bad usage of std::string in: the verifier and compiler driver method\narguments, causing unnecessary boxing and allocations; in creating a symbol for\nthe dex compilation unit, that is only used in portable builds; in pattern\nmatching for intrinsics by name.\n\nMake class linker dex and classes locks reader/writer to allow concurrent\ndex cache or class querying. Refactor ComputeCompilingMethodsClass to pass in a\ndex cache hint, to avoid taking any locks when the dex file of the compiling\nmethod matches that of the field or method being resolved.\n\nMake the RegType\u0027s HasClass method virtual to avoid frequent virtual method\ndispatch. Make RegTypeCache GetFromId inlinable.\n\nVarious other bits of whitespace and formatting clean-up.\n\nChange-Id: Id152e1e5a6fed2961dad0b612b7aa0c48001ef94\n"
    },
    {
      "commit": "b29bbbc00071f56a4a98a2d94c3968a36763ed55",
      "tree": "f4d22c4682c2df247dea7b6a9b43f8adbb1cc1e0",
      "parents": [
        "2edb373eb3ca903b2ee719b0c5b82e7595d172df",
        "b88b3daca9f3c1554e0ea82b462894cb744da671"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 30 00:22:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 00:22:11 2013 +0000"
      },
      "message": "Merge \"Revert \"Elision of checks optimization.\"\" into dalvik-dev"
    },
    {
      "commit": "b88b3daca9f3c1554e0ea82b462894cb744da671",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "ef7162edde3ec04f1cd5a8d09a665fcb337d30aa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 30 00:21:55 2013 +0000"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 30 00:21:55 2013 +0000"
      },
      "message": "Revert \"Elision of checks optimization.\"\n\nThis reverts commit ef7162edde3ec04f1cd5a8d09a665fcb337d30aa\n\nChange-Id: I914454adbe3a0d2f23f841efa1a201f3cbff4b6e\n"
    },
    {
      "commit": "2edb373eb3ca903b2ee719b0c5b82e7595d172df",
      "tree": "1f9dff9741fbb70df742932700b533c53ea88ae7",
      "parents": [
        "f8582c3b87efa0245d176f768fd373e5b4289da4",
        "ef7162edde3ec04f1cd5a8d09a665fcb337d30aa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 29 23:38:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 29 23:38:21 2013 +0000"
      },
      "message": "Merge \"Elision of checks optimization.\" into dalvik-dev"
    },
    {
      "commit": "ef7162edde3ec04f1cd5a8d09a665fcb337d30aa",
      "tree": "144a10ef3becf9b5d778f87ebf5223eefc54e11c",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 29 16:36:59 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: I857279ccd1e73c07638b42601d436e0ea5860fe9\n"
    },
    {
      "commit": "f8582c3b87efa0245d176f768fd373e5b4289da4",
      "tree": "f4d22c4682c2df247dea7b6a9b43f8adbb1cc1e0",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 29 16:33:03 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 29 16:33:03 2013 -0700"
      },
      "message": "Build fix.\n\nMIPS build exposed a latest bug in DexFile\u0027s binary search code.\nPortable build always requires a dex cache when using verifier based\nsharpening.\n\nChange-Id: I235c033d7eba0272b264f5dbda209ff5cd7cce93\n"
    },
    {
      "commit": "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "1d9314c989114f330297d52dae3fe0cd4848b183"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 15:32:56 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 18:19:28 2013 -0700"
      },
      "message": "Enable devirtualization for abstract and sub-class methods.\n\nIf we know the type of a receiver in the verifier we record devirtualization\ndata. Currently we only use this data to avoid virtual method dispatch when\nwe know the receiver of a method isn\u0027t a sub-class. This change allows\ndevirtualization of virtual and interface methods when we know the receiver\u0027s\ntype and the method the we\u0027d find via dispatch is either known within boot or\nhas a reference from the current dex file.\n\nPass the receiver through to the method resolution trampoline as\ndevirtualization may mean the dex method index needs to be made more accurate\nfor the receiver.\n\nTidy up method devirtualization and related statistics.\n\nPush the devirtualization map lookup into a less common case to avoid\ntaking its lock.\n\nMake MethodReference a struct rather than a typedef of a pair, so the members\ncan have more meaningful names than first and second.\n\nRough statistics show that we devirtualize using this change around 2.5% of\nthe time, whilst some apps like GMS core devirtualize over 3.4% of the time.\n\nChange-Id: Ieed3471dbedfc4cc881d652631b67176bb37d394\n"
    },
    {
      "commit": "1d9314c989114f330297d52dae3fe0cd4848b183",
      "tree": "4535deb9faf85612d54b44b69ed7834ace36ac83",
      "parents": [
        "63937db1cec24d065e2b4cdb7a41809528b5085b"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 10:44:48 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 10:44:48 2013 -0700"
      },
      "message": "fix indentation\n\nfixing indentation to align with rest of the file.\n\nChange-Id: I27b5cabee25c4de552d0c1bae3e2f3f53cf0fcc9\n"
    },
    {
      "commit": "63937db1cec24d065e2b4cdb7a41809528b5085b",
      "tree": "dcdbad47af267bbb79fa16a2847ad47cc94ab76a",
      "parents": [
        "b1a00bdce9391a8f23cc2f3ef3dd9eedaafa8d49"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 09:08:32 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 09:53:55 2013 -0700"
      },
      "message": "Fix mac build\n\nSmall fix for mac build: apple\u0027s gcc doesn\u0027t comprehend __attribute__((hot))\n\nChange-Id: I2cab22e5bfdc1d22027b12d8103bd56cb407a609\n"
    },
    {
      "commit": "b1a00bdce9391a8f23cc2f3ef3dd9eedaafa8d49",
      "tree": "49a84c55ab6b73dcf867f7cb178412bfa8053c33",
      "parents": [
        "90e33974cf5f29c36747dc580c0f9fae821c5143",
        "ba3ce9a51651f3f3de2ecc82673b46762b1f2d9d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 00:06:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 24 00:06:20 2013 +0000"
      },
      "message": "Merge \"Re-enable thread-safety checking on host, warn when not enabled.\" into dalvik-dev"
    },
    {
      "commit": "ba3ce9a51651f3f3de2ecc82673b46762b1f2d9d",
      "tree": "1358c21dc68f0f8e268c6c54a3f0297694bf6212",
      "parents": [
        "790ad90ccd2f3e297e2cf0a47adbf4f9ffb10149"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 17 18:50:09 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 23 15:52:14 2013 -0700"
      },
      "message": "Re-enable thread-safety checking on host, warn when not enabled.\n\nDisable thread safety checks in the interpreter where template specialization\nis causing annotalysis issues.\n\nChange-Id: I178ea278a93a3eb90f386b3e02827b5c61ea0e52\n"
    },
    {
      "commit": "90e33974cf5f29c36747dc580c0f9fae821c5143",
      "tree": "ae7d43ecad7c6ae4f6e18f763a9a2808f248c611",
      "parents": [
        "41bc990eb50571bbe67399ba6ff1fec08c02243e",
        "b43cef30fa7171f5b33c5f94853ad8474ed08022"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 23 22:05:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 22:05:10 2013 +0000"
      },
      "message": "Merge \"Fix for register number display in oatdump.\" into dalvik-dev"
    },
    {
      "commit": "b43cef30fa7171f5b33c5f94853ad8474ed08022",
      "tree": "7b2e6525f0d23f3c24821e45f9ac264362239ab6",
      "parents": [
        "d4e868a25128e31c92b2779e7d2e15f9afdf4fff"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 11:59:20 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 15:01:38 2013 -0700"
      },
      "message": "Fix for register number display in oatdump.\n\nChange-Id: Iefd52cb5df95d118804e7f5bbd921b82f5f11213\n"
    },
    {
      "commit": "41bc990eb50571bbe67399ba6ff1fec08c02243e",
      "tree": "4afa1b41d9eac9bac8883f0ca08ff82de4e8917b",
      "parents": [
        "8152be8ff881af33366d35bd9791b83586a4af22",
        "d4e868a25128e31c92b2779e7d2e15f9afdf4fff"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 23 21:14:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 21:14:47 2013 +0000"
      },
      "message": "Merge \"Partial fix for reg number display in oatdump.\" into dalvik-dev"
    },
    {
      "commit": "8152be8ff881af33366d35bd9791b83586a4af22",
      "tree": "f65c63a0e903ea7bc0865577b657674c809a467c",
      "parents": [
        "790ad90ccd2f3e297e2cf0a47adbf4f9ffb10149",
        "29e2e7e6807824f0d5dbfdd15835d2854ea7717c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 23 21:11:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 21:11:53 2013 +0000"
      },
      "message": "Merge \"Use UniquePtr in MethodVerifier::GenerateDevirtMap.\" into dalvik-dev"
    },
    {
      "commit": "790ad90ccd2f3e297e2cf0a47adbf4f9ffb10149",
      "tree": "719a141f77194d4eeab03bfb1e7385799e001263",
      "parents": [
        "ca6ad221d1bd857e26817f6b63d4ad9f3fe7ca40"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 22 15:02:08 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 23 10:17:09 2013 -0700"
      },
      "message": "Some more interpreter cleanup.\n\n- Pass method helper and code item to entry point so they don\u0027t\n  have to be regenerated.\n- Removed interpreter only check from invoke, changing entry\n  points instead.\n\nChange-Id: Ib0ea83dcffcdb295d3a48d92ad8a93ac59f9932e\n"
    },
    {
      "commit": "d4e868a25128e31c92b2779e7d2e15f9afdf4fff",
      "tree": "0a6403c0d74303332dba2bda1d4f92328a077892",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 09:44:17 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 09:54:24 2013 -0700"
      },
      "message": "Partial fix for reg number display in oatdump.\n\nChange-Id: Ia6b5c7e0cd40faae398be93f522d8f6095c4a040\n"
    },
    {
      "commit": "ca6ad221d1bd857e26817f6b63d4ad9f3fe7ca40",
      "tree": "a20fab36aaf7fe6428808df668f02548ae632089",
      "parents": [
        "a9cccb8517d988ef5cfc2392bc21049981fbd235"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 23 17:31:16 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 23 17:31:16 2013 +0200"
      },
      "message": "Specialize DoInvoke in interpreter.\n\nThis CL makes DoInvoke a template function to specialize it regarding invoke\ntype and whether it is a normal invoke or a range invoke.\n\nIt also removes the unused MethodHelper parameter.\n\nChange-Id: I90427f4bda2cc858a75babaae035e7ff7c2f0a80\n"
    },
    {
      "commit": "a9cccb8517d988ef5cfc2392bc21049981fbd235",
      "tree": "2692e416e73e503bdd1fa8a06408c15db2cfa6c8",
      "parents": [
        "6b019b33739bfe1613ac6960a2403fa54b4bc671",
        "c8a3ff8b6cfa0e3d38a4cd4aff1c28d231635783"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 23 15:23:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 15:23:27 2013 +0000"
      },
      "message": "Merge \"Optimize field access in interpreter by improving inlining.\" into dalvik-dev"
    },
    {
      "commit": "c8a3ff8b6cfa0e3d38a4cd4aff1c28d231635783",
      "tree": "fb4272bd2795e8eb6a59a688c8bb420066565cc1",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed May 22 11:26:35 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 23 10:13:15 2013 +0200"
      },
      "message": "Optimize field access in interpreter by improving inlining.\n\nThe DoFieldGet and DoFieldPut functions are forced to be inlined into the\ninterpreter. Nevertheless, this seems to expose a limitation in GCC\u0027s\ninlining process where two parts of the code are not inlined while they\ndepend on constant function parameters:\n- the call to Primitive::FieldSize is not completely inlined since there\u0027s\nstill a call to Primitive::ComponentSize,\n- the switch (which reads from/writes to the field) is not inlined but\ncopied into the interpreter.\n\nTo improve inlining, we could transform these functions into macros. Then GCC\nwould correctly inline the code. However, in order to keep the code simple and\nreadable, I chose to transform them into template functions. This only requires\nto move constant parameters of the function into template arguments.\n\nNote that while it creates multiple versions of DoFieldGet and DoFieldPut, they\nare not part of the final object file since they\u0027re all inlined.\n\nChange-Id: I424a56d4c442a56cb6d7a09cdaa30dcd25deeedb\n"
    },
    {
      "commit": "29e2e7e6807824f0d5dbfdd15835d2854ea7717c",
      "tree": "563969c30a3aa650e6da91efb16dbb69843f95ca",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 22 14:52:11 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 22 14:52:11 2013 -0700"
      },
      "message": "Use UniquePtr in MethodVerifier::GenerateDevirtMap.\n\nAlso fix some indentation.\n\nChange-Id: I384d9c11e316f898ff26d0de533e4c4193db10b5\n"
    },
    {
      "commit": "7f55288906c21b99801d75bb6fe17fe25af5c1e9",
      "tree": "e952b999b7002a58757430813c69996c1547d153",
      "parents": [
        "1880b24735679cd6c308713d85dab9ca40b2cf92"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 21 20:17:35 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 21 20:17:35 2013 -0700"
      },
      "message": "Fix ElfWriterMclinker for ART_USE_PORTABLE_COMPILER\n\nChange-Id: I425b28b872581a2b4936909e9c84cae7f3e96c8c\n"
    },
    {
      "commit": "1880b24735679cd6c308713d85dab9ca40b2cf92",
      "tree": "ecbc92ab4b8068e7779020ac670635d2660d332d",
      "parents": [
        "6951067ee14754454e17221fdef0d3d5ed7c4f7e",
        "6a47b9dc850b903aabefcfab4adb132cb68bba2e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 22 01:38:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 22 01:38:55 2013 +0000"
      },
      "message": "Merge \"Refactor ElfWriter and introduce ElfWriterQuick\" into dalvik-dev"
    },
    {
      "commit": "6a47b9dc850b903aabefcfab4adb132cb68bba2e",
      "tree": "924d2ea244bb01a48620e704b181a1d9d1f4055c",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 17 10:58:25 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 21 18:37:04 2013 -0700"
      },
      "message": "Refactor ElfWriter and introduce ElfWriterQuick\n\nChange-Id: I3eaa1fa1085bb4d28fe342a7420272720e48274b\n"
    },
    {
      "commit": "6951067ee14754454e17221fdef0d3d5ed7c4f7e",
      "tree": "5994c12990ea02ca7a73377787ced2c700351557",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 21 17:34:55 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 21 17:34:55 2013 -0700"
      },
      "message": "Some interpreter cleanup.\n\n- Pass result pointer to interpreter to interpreter entry point.\n- Avoid using MethodHelper.ChangeMethod in DoInvoke.\n\nChange-Id: I714b78d50fb14d7a0edced54cd4de78ae54021da\n"
    },
    {
      "commit": "7b15b1b6809a3dc46c69610491d1b10513f449db",
      "tree": "857b7ed9f4bb71591decf5228695c7c74c7a814b",
      "parents": [
        "ca39692028741f795132d68fe24f43488eeaae3b",
        "75b2a4abea8a608d7aec3e417498b69b31026a74"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 16:50:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 16:50:40 2013 +0000"
      },
      "message": "Merge \"Remove use of DecodedInstruction at runtime.\" into dalvik-dev"
    },
    {
      "commit": "75b2a4abea8a608d7aec3e417498b69b31026a74",
      "tree": "64c349fd18332fbdc9371324e4c36f1312e1daea",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 09:25:10 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 18:29:04 2013 +0200"
      },
      "message": "Remove use of DecodedInstruction at runtime.\n\nThis CL removes the use of DecodedInstruction while executing code. This is a\nfirst step in removing its global use in Art.\n\nChange-Id: Ic7264e0d614ffab99931fd50347394a68152a10c\n"
    },
    {
      "commit": "ca39692028741f795132d68fe24f43488eeaae3b",
      "tree": "d71d4ef13fec33abb6e6476f9e8689ff50f0dea9",
      "parents": [
        "33e15bcb4c0873cbce9d039fbc9bc7f4cf257765",
        "33e9566255c426e7a2c8fca5b8a1b6a94a5d352c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 21 14:59:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 14:59:00 2013 +0000"
      },
      "message": "Merge \"Various GCC 3.6 and clang build fixes.\" into dalvik-dev"
    },
    {
      "commit": "33e9566255c426e7a2c8fca5b8a1b6a94a5d352c",
      "tree": "80965d3d329c09ec5a574863a356562e42f639ff",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:29:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 21:16:03 2013 -0700"
      },
      "message": "Various GCC 3.6 and clang build fixes.\n\nRemove #error in common_test.h that fires with clang build and replace with\nruntime error.\nFix bit rot caused by not compiling with Wthread-safety.\nFix clang build issues in compiler relating to missing header file definitions\nin object files.\nOther minor build and tidying issues.\n\nChange-Id: Ife829ab0664581936155be524de46e6181c750b0\n"
    },
    {
      "commit": "33e15bcb4c0873cbce9d039fbc9bc7f4cf257765",
      "tree": "72ef6a1befcf021ee23c76a199d8f5bbdd6da51a",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:04:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:36:20 2013 -0700"
      },
      "message": "Fix bug in OOME inside an OOME hampering run-test 061.\n\nIf we\u0027re throwing an OOME inside an OOME we don\u0027t want to clear the current\nthread\u0027s throwing OOME flag.\n\nChange-Id: I9aa362263dc4fca84f3d3a629c480112c3263008\n"
    },
    {
      "commit": "8b81549b4f540132b2cac4a0ae4d2c292307d24f",
      "tree": "263ced6fcdf8bbc42b28618ca50476cde3fc6b3b",
      "parents": [
        "83d97e19c1aa00af7e02d234223b1de35be8cede",
        "6bdd8f4bf372d703dd6304fe03a6b1a119502c65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 17 23:01:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 17 23:01:51 2013 +0000"
      },
      "message": "Merge \"Optimize aput-object in interpreter.\" into dalvik-dev"
    },
    {
      "commit": "6bdd8f4bf372d703dd6304fe03a6b1a119502c65",
      "tree": "0666aa9322ad90162b231e0a7fd41d7a4d20099b",
      "parents": [
        "e606010a5e5ea803736576b47740a2551e5d0dfc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:44:01 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 17:46:08 2013 +0200"
      },
      "message": "Optimize aput-object in interpreter.\n\nInline ObjectArray::Set test about valid index and valid object. Adding\nObjectArray::IsValidObject method to check for ArrayStoreException and\ncall it from interpreter.\n\nChange-Id: I99beeb531455049fc189f9b8e8f4f020591f7bab\n"
    },
    {
      "commit": "83d97e19c1aa00af7e02d234223b1de35be8cede",
      "tree": "7291b355521683100f2e7366291a55ca9e754bb7",
      "parents": [
        "e15e7faff3deb937c8617428e70ffb6b79ad77e0",
        "74c070440e9c3f362cd0e9e13754bc8693ed9073"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 17 15:20:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 17 15:20:03 2013 +0000"
      },
      "message": "Merge \"Help inline LogMessage::stream method.\" into dalvik-dev"
    },
    {
      "commit": "e15e7faff3deb937c8617428e70ffb6b79ad77e0",
      "tree": "df96c52ddb7e6f1b85ecec1e3543896c79d633b7",
      "parents": [
        "e606010a5e5ea803736576b47740a2551e5d0dfc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:20:05 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:20:05 2013 +0200"
      },
      "message": "Update monitor enter/exit exception handling in interpreter.\n\nThis CL prevents from checking if an exception is pending when we just\nthrew a NPE. Move the conditional check after calling monitor enter/exit\nroutine.\n\nChange-Id: Icfebf3914f6439b47038d7a00932251f8000c1c2\n"
    },
    {
      "commit": "74c070440e9c3f362cd0e9e13754bc8693ed9073",
      "tree": "00d99e15e0b8297ab08bfb1cf1abe51fda5799ef",
      "parents": [
        "e606010a5e5ea803736576b47740a2551e5d0dfc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:04:12 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:04:12 2013 +0200"
      },
      "message": "Help inline LogMessage::stream method.\n\nA very simple method that should be safely inlined by compiler.\n\nChange-Id: I7a2fa41d566e36b30b1afd6a2f6b0c2f986dc46f\n"
    },
    {
      "commit": "e606010a5e5ea803736576b47740a2551e5d0dfc",
      "tree": "cc01184f0f2e086642bd741fd71cd447c7a1295f",
      "parents": [
        "c4ee12e73fc844f28a9812a9141985cf05143a57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 12:01:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 12:01:04 2013 -0700"
      },
      "message": "Increase logging around bad dex files.\n\nChange-Id: I294aecd401046537004c79dcd0041b61af962892\n"
    },
    {
      "commit": "c4ee12e73fc844f28a9812a9141985cf05143a57",
      "tree": "59ea9f105b39b05beea9ff17cda83f1122461629",
      "parents": [
        "d8274bcbc565fff1254574b3cbf46dc4e7b52812"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 11:19:53 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 11:26:24 2013 -0700"
      },
      "message": "Avoid recursion if logging lock is corrupt.\n\nIf the logging lock is corrupt then using LOG fails and recursive death ensues.\nMake Mutex a friend of LogMessage so that it can do raw logging in this special\nsituation.\nOpportunistically also make fields of LogMessage and LogMessageData that can be\nconst, const.\n\nChange-Id: I9e0d07c3224096bcf03d6410cd64bb8b5c831fac\n"
    },
    {
      "commit": "d8274bcbc565fff1254574b3cbf46dc4e7b52812",
      "tree": "f3435a06f129a1620212b0253074df2292c976cb",
      "parents": [
        "fa46d3ee8cba2985c5c8bdfe47d15daf0613ebdc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 15:54:45 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 15:54:45 2013 -0700"
      },
      "message": "Fix clang build issues.\n\nAlso add PREAMBLE macro to allow head of interpreter loop to be simply hoisted.\n\nChange-Id: Id4a3f81d56b5981e1a497cf2bc72f1c263364fe5\n"
    },
    {
      "commit": "fa46d3ee8cba2985c5c8bdfe47d15daf0613ebdc",
      "tree": "2743be5358aef17e9ae21b0626409feeea919771",
      "parents": [
        "9cec247849c248f6c45a14eae5414b69eb8fc67d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 00:16:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 11:03:44 2013 -0700"
      },
      "message": "Interpreter tweaks\n\nIncrease the amount of inlining and hot function hints in the interpreter\nto encourage the hot Execute function to be faster.\nPerformance is 3x slower than Dalvik+JIT on FibonacciFast and similar\nmicrobenchmarks.\n\nChange-Id: I2b1a0c7545f86036b9b1b5ccac881d06292356d8\n"
    },
    {
      "commit": "9cec247849c248f6c45a14eae5414b69eb8fc67d",
      "tree": "844d6fe7a5551356223c30be1955664bd0c802cd",
      "parents": [
        "e652cdd8f64d8479c9b7558f177dcee0bf6d026c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 18:17:06 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 18:17:06 2013 -0700"
      },
      "message": "Various improvements to interpreter.\n\n- Created separate Next_xxx methods to get the next instruction to\n  avoid having to look up the size based on the opcode.\n- Moved exception handling to after throwing instructions only.\n- Added a test of all thread flags before checking for suspend during\n  the interpreter execute loop.\n- Made it unlikely that instrumentation has dex pc listeners for\n  DexPcMovedEvent.\n\nChange-Id: I88afc98cf42f2e36c747582df8e74669d24ef864\n"
    },
    {
      "commit": "e652cdd8f64d8479c9b7558f177dcee0bf6d026c",
      "tree": "d648d2a56872c5b0c17b3a8a31407532eaaf9f97",
      "parents": [
        "27297b1bc653e82944a70ce1aeddbc5d4d4a2980",
        "6613519990bdb5616f2858c146f162ef760f03d2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 19:01:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 14 19:01:18 2013 +0000"
      },
      "message": "Merge \"Allocate shadow frames in interpreter on stack instead of on heap.\" into dalvik-dev"
    },
    {
      "commit": "27297b1bc653e82944a70ce1aeddbc5d4d4a2980",
      "tree": "e2b24d6ca902b8ae61d14b7bf26763b458a580ca",
      "parents": [
        "807a25640d4f4de8143b160b3bb8f552ffbf6f4a",
        "bddf97641c9371ec74c63bca52fff62fecd73750"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 14 18:38:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 14 18:38:33 2013 +0000"
      },
      "message": "Merge \"Fix JNI_CreateJavaVM signature to match jni.h\" into dalvik-dev"
    },
    {
      "commit": "6613519990bdb5616f2858c146f162ef760f03d2",
      "tree": "9ea428594c2062b9e97a7735f0cdadc1e8e85d5a",
      "parents": [
        "807a25640d4f4de8143b160b3bb8f552ffbf6f4a"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 11:02:41 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 11:37:40 2013 -0700"
      },
      "message": "Allocate shadow frames in interpreter on stack instead of on heap.\n\nInstead of using new, the shadow frames are allocated using alloca.\n\nChange-Id: Idc92fbccf1fe7589ace7b97811b21a5c67c97fd2\n"
    },
    {
      "commit": "bddf97641c9371ec74c63bca52fff62fecd73750",
      "tree": "f5405e66371d550094c098c67174a1fac420ead1",
      "parents": [
        "cf479b20dc78d08af75fac7192a92f7c4b259d54"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 14 11:35:37 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 14 11:36:45 2013 -0700"
      },
      "message": "Fix JNI_CreateJavaVM signature to match jni.h\n\nChange-Id: I208bd916d85b24864f686eab9d23e104a2cb35b3\n"
    },
    {
      "commit": "807a25640d4f4de8143b160b3bb8f552ffbf6f4a",
      "tree": "3972b74f95282a292f9fa8bfca82bd8bbe736cfc",
      "parents": [
        "cf479b20dc78d08af75fac7192a92f7c4b259d54"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 15 09:33:39 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 14 17:48:52 2013 +0200"
      },
      "message": "Improve interpreter performance.\n\nBug: 8196227\n\nThis CL removes the use of DecodedInstruction to read instruction opcode and\noperands. It now directly access to each operand according to instruction\nformat (like VRegA_11x for accessing register vA with format 11x).\n\nIt also caches some information used for instrumentation like \u0027this\u0027 object\nand current method and add missing check about pending exception.\n\nChange-Id: I8c03c0aea9d75068b89e3cb2c8c12383d7928281\n"
    },
    {
      "commit": "cf479b20dc78d08af75fac7192a92f7c4b259d54",
      "tree": "b2faca51805dea67ea0a4a430a1bbbbda7e29e9f",
      "parents": [
        "a55e10d93d439795c135eef316ac201348274f67",
        "aa4a793d7175ceeb1efa215c2af5e52e42b22f0a"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 20:14:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 13 20:14:50 2013 +0000"
      },
      "message": "Merge \"Rename abstract method code_ to entry_point_from_compiled_code_.\" into dalvik-dev"
    },
    {
      "commit": "aa4a793d7175ceeb1efa215c2af5e52e42b22f0a",
      "tree": "9c3db54a108d4327471c6d4890d28cdfe1f030ff",
      "parents": [
        "167436311a08a65dea28dda079a137893821c9c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 11:28:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 13:14:19 2013 -0700"
      },
      "message": "Rename abstract method code_ to entry_point_from_compiled_code_.\n\nChange-Id: I9b02d2df95bbeafa6e6387b461f574c57337a61e\n"
    },
    {
      "commit": "a55e10d93d439795c135eef316ac201348274f67",
      "tree": "9d76ad9ea314cfc4389e7d53e437b65e6fe53aa8",
      "parents": [
        "167436311a08a65dea28dda079a137893821c9c7",
        "a5abf7091711eed1e9f1d0e1538fe9963ebdf31c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon May 13 19:35:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 13 19:35:19 2013 +0000"
      },
      "message": "Merge \"Compiler: replace DOM traversal computation\" into dalvik-dev"
    },
    {
      "commit": "a5abf7091711eed1e9f1d0e1538fe9963ebdf31c",
      "tree": "e256df83ca632744d144854403a326d90cb683a7",
      "parents": [
        "bf47e5f28b1aa39748dce8ac5abbabca1baee093"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Apr 12 14:39:29 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon May 13 12:34:28 2013 -0700"
      },
      "message": "Compiler: replace DOM traversal computation\n\nOriginally the old trace JIT used a few recursive graph walking\nalgorithms - which was perfectly reasonable given that the graph\nsize was capped at a few dozen nodes at most.  These were replaced\nwith iterative walk order computations  - or at least I thought\nthey all were.  Missed one of them, which caused a stack overflow\non a pathologically large method compilation.\n\nRenaming of some arena_allocator items for consistency and clarity.\nMore detailed memory usage logging.  Reworked the allocator to waste\nless space when an allocation doesn\u0027t fit and a new block must be\nallocated.\n\nChange-Id: I4d84dded3c47819eefa0de90ebb821dd12eb8be8\n"
    },
    {
      "commit": "167436311a08a65dea28dda079a137893821c9c7",
      "tree": "4754f47306a0ffa0ad97635015d9596b427dd425",
      "parents": [
        "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 08 10:59:04 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 10 17:16:00 2013 -0700"
      },
      "message": "Improve interpreter to interpreter invokes.\n\nThe interpreter constructs a shadow frame instead of arg array to make\ninterpreter to interpreter transitions faster. This adds a pointer to\nan entry for the interpreter to each method.\n\nChange-Id: If48911d3aa3470847b8548a9e92090b829f4f254\n"
    },
    {
      "commit": "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08",
      "tree": "fc4ac69b301b7461d285f440730909555fca1809",
      "parents": [
        "2c6de22d6dcdc6fe1a065480582989e15a47fcb5"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 10 13:24:54 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 10 13:24:54 2013 -0700"
      },
      "message": "Fixed Android.common.mk #define setting for small art\n\nWe were seeing things compile when they shouldn\u0027t have. This fixes it.  Plus added\na bit more documentation to options, set default values for the two small art related\nthresholds to zero.\n\nChange-Id: Id5db11962f3e30d8d4ee6b85d4cf7d6e66323adb\n"
    },
    {
      "commit": "2c6de22d6dcdc6fe1a065480582989e15a47fcb5",
      "tree": "a1c248a80352e66951681cfc7dbe94f5afc88d4b",
      "parents": [
        "8a01a3a8caee37d4c4cf1a8c673f897c74aaf785"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu May 02 17:38:59 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 06 23:04:06 2013 -0700"
      },
      "message": "Improve verifier speed.\n\nMain improvement is in the RegTypeCache::From() Class lookup, the cache is first\nlooked up for the passed descriptor instead of trying to resolve the class.\nFor cases when the descriptor is not found it is resolved to a class and a new type is\ncreated and added to the cache.\n\nChange-Id: I594a4c00b351843dd576b5af29e9dcaed18e04e8\n"
    },
    {
      "commit": "8a01a3a8caee37d4c4cf1a8c673f897c74aaf785",
      "tree": "2abfaf7d42e5aaabdc1faaeeda01f5a904fd64ed",
      "parents": [
        "bf47e5f28b1aa39748dce8ac5abbabca1baee093"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 06 13:25:44 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 06 16:04:04 2013 -0700"
      },
      "message": "Make ShadowFrame fields const when not in portable.\n\nShadowFrames in quick don\u0027t need the HasReferenceArray test as they always have\na reference array. Make the method_ and number_of_vregs_ fields const to aid\nG++\u0027s optimization of the interpreter.\n\nModify the OFFSETOF_MEMBER macro to handle const fields.\n\nChange-Id: I696480789190f7c5190449b9c278d37853903a5e\n"
    },
    {
      "commit": "bf47e5f28b1aa39748dce8ac5abbabca1baee093",
      "tree": "29b10c5d1ae32fc93ab02332c16ed76d469de78e",
      "parents": [
        "ff9c9950ffd12a8904aecfc71f7a1c590001d4fb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat May 04 16:06:09 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat May 04 18:13:28 2013 -0700"
      },
      "message": "Tracking merge of JWR32E (#656244) to dalvik-dev\n\nChange-Id: I2c7baf8e3ccb7a0f05f767628917caed83720a2a\n"
    },
    {
      "commit": "ff9c9950ffd12a8904aecfc71f7a1c590001d4fb",
      "tree": "7e8ca1fa2fd5c0431f24b62a91b439534614d067",
      "parents": [
        "862cedbd0d5d7e1ac8848679aa930878c03c212f",
        "02c42237741b5573f9d790a5a0f17f408dceb543"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 23:47:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 02 23:47:48 2013 +0000"
      },
      "message": "Merge \"Supporting de-virtualization for precise types.\" into dalvik-dev"
    },
    {
      "commit": "862cedbd0d5d7e1ac8848679aa930878c03c212f",
      "tree": "e3022faa835c9b513f64fafb0ab56bd7e5c92a0a",
      "parents": [
        "cf9773a7adff883012dbd519a66e85f1f7aaaa11",
        "b3eb9eb86370791735ca4e9c1bd5bb4f3ff62069"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 23:22:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 02 23:22:20 2013 +0000"
      },
      "message": "Merge \"Fixing Small_Art Default\" into dalvik-dev"
    },
    {
      "commit": "b3eb9eb86370791735ca4e9c1bd5bb4f3ff62069",
      "tree": "2754b4cd1fabf4e145e0e33e849b21a1082c23ab",
      "parents": [
        "8447d84d847d4562d7a7bce62768c27e7d20a9aa"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 16:17:45 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu May 02 16:17:45 2013 -0700"
      },
      "message": "Fixing Small_Art Default\n\nSmall ART mode was turned on by default.  It should be off by default as there\u0027s otherwise no option to\nturn it off.\n\nChange-Id: I9b723f7c5d9c95c210722861fc1e0cd08560a371\n"
    },
    {
      "commit": "02c42237741b5573f9d790a5a0f17f408dceb543",
      "tree": "293d72039e2e1a0e56fbcb572c6d92ccedc5581a",
      "parents": [
        "cf9773a7adff883012dbd519a66e85f1f7aaaa11"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Apr 30 12:09:45 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu May 02 14:19:17 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nFixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.\n\nSharpening only takes place for cases where no soft failures happen at verification time.\n\nChange-Id: Ic027d0226d6f95260c1918014cb6313f2e0ca455\n"
    },
    {
      "commit": "cf9773a7adff883012dbd519a66e85f1f7aaaa11",
      "tree": "2202662f22597850bf03c5dbbb0305bfe46816a5",
      "parents": [
        "654d91957edb4d1f7534ed5d743cf914db763448",
        "8447d84d847d4562d7a7bce62768c27e7d20a9aa"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed May 01 17:03:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 01 17:03:06 2013 +0000"
      },
      "message": "Merge \"Compile filter for small applications and methods\" into dalvik-dev"
    },
    {
      "commit": "8447d84d847d4562d7a7bce62768c27e7d20a9aa",
      "tree": "46aad5bf1bc3d3ce28b24ef1fcc5463224083991",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 17:27:40 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 20:32:59 2013 -0700"
      },
      "message": "Compile filter for small applications and methods\n\nAdds a filter per method and program size (in method count). Right now, options are treated\nas runtime options...but we might want to change this and separate options for compilers and\nruntime.\n\nChange-Id: I8c3e925116119af8ffa95ff09f77bcfdd173767b\n"
    },
    {
      "commit": "654d91957edb4d1f7534ed5d743cf914db763448",
      "tree": "f87cb1349f2eff97cd4f5edd4b015b4b2a4ff072",
      "parents": [
        "10c35dc16aea5b77f201f42fac4b39523e6ceed7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 18:35:32 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 18:37:22 2013 -0700"
      },
      "message": "Add conscrypt to art tests\n\nChange-Id: I26694517d398b0f84f48c7496c3159b7863fa833\n"
    },
    {
      "commit": "10c35dc16aea5b77f201f42fac4b39523e6ceed7",
      "tree": "18bb7dd508043edfe27466c16168426a442cff19",
      "parents": [
        "e40f302f539dbca0a4b2cd7ee9eba6d37095b584",
        "1f3bc2f0f9366594379249027622ab63673b0d3b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 01 00:23:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 01 00:23:01 2013 +0000"
      },
      "message": "Merge \"Fix MIPS jni stub and save gp as part of ref only saves.\" into dalvik-dev"
    },
    {
      "commit": "e40f302f539dbca0a4b2cd7ee9eba6d37095b584",
      "tree": "661dcca0d82ce0598196ead391590fad291fb17f",
      "parents": [
        "302a72d6e0e99208db629053dd77dda85896f707"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 30 16:13:40 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 30 16:13:40 2013 -0700"
      },
      "message": "Track rename of JSSE\n\nChange-Id: I1e038e63ccad098a5812bbb1532ca4dd839d4be0\n"
    },
    {
      "commit": "1f3bc2f0f9366594379249027622ab63673b0d3b",
      "tree": "473b78adefbb64038cf897e2500982a964c5fe14",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 30 15:17:19 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 30 15:23:06 2013 -0700"
      },
      "message": "Fix MIPS jni stub and save gp as part of ref only saves.\n\nFor the jni stub, the code pointer move can\u0027t be in the delay slot\nbecause it jumps to the wrong place.\n\nThe gp register needs to be saved in the ref only frame in case an\nexception needs to be delivered afterwards.\n\nChange-Id: I71fb13e0e268aeaf50e8f1c093eb3262ea88cee8\n"
    },
    {
      "commit": "302a72d6e0e99208db629053dd77dda85896f707",
      "tree": "932d35c7dc03161f81f87dd1654b0330f942668c",
      "parents": [
        "31d4b8e0058b33e2c5ce792a69e5e897583652e2"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit 31d4b8e0058b33e2c5ce792a69e5e897583652e2.\n"
    },
    {
      "commit": "31d4b8e0058b33e2c5ce792a69e5e897583652e2",
      "tree": "8b981aa8c0dcb2e540f5ba26951302f720299f8e",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 11:31:03 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 13:06:07 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nFixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.\n\nChange-Id: I0626d5cd1bc70a685db71abec067370ebdaf6edc\n"
    },
    {
      "commit": "88fc036842eb3c48acd5d3b01e75b3012c996d90",
      "tree": "932d35c7dc03161f81f87dd1654b0330f942668c",
      "parents": [
        "5d29a81465a973c66e479f8edf2a55f09a83fc9c",
        "f4da60751631f8bc098fbd04517f305bf7f20ae3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:57:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:57:41 2013 +0000"
      },
      "message": "Merge \"Revert \"Supporting de-virtualization for precise types.\"\" into dalvik-dev"
    },
    {
      "commit": "f4da60751631f8bc098fbd04517f305bf7f20ae3",
      "tree": "5a359b033ee308154ffbdcfea47708bacd1c9cb3",
      "parents": [
        "b0682d5f7970470130f43d35f37ae7605a8a9bb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit b0682d5f7970470130f43d35f37ae7605a8a9bb8\n\nChange-Id: I2b0dc3e716ee5c23b89d9fa6eb0ef05c24784b3e\n"
    },
    {
      "commit": "5d29a81465a973c66e479f8edf2a55f09a83fc9c",
      "tree": "118352977f1507c209d075478b0ae5d7b5c64265",
      "parents": [
        "dfe0a24ff341e1758d00f2d51ca38eda8e58c705",
        "6ed90ad082b41b8e9665ef9c647fa4353f1269cd"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 26 22:05:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:05:19 2013 +0000"
      },
      "message": "Merge \"Changed image file to no longer be executable.\" into dalvik-dev"
    }
  ],
  "next": "dfe0a24ff341e1758d00f2d51ca38eda8e58c705"
}
