)]}'
{
  "log": [
    {
      "commit": "dc151b2346bb8a4fdeed0c06e54c2fca21d59b5d",
      "tree": "391d8ccb44ff9e6fc1c8fa8975e534e20cc002ff",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 15 18:02:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 23 14:45:32 2015 +0100"
      },
      "message": "Optimizing: Determine invoke-static/-direct dispatch early.\n\nDetermine the dispatch type of invoke-static/-direct in a\nspecial pass right after the type inference. This allows the\ninliner to pass the \"needs dex cache\" check and inline more.\nIt also allows the code generator to avoid requesting a\nregister location for the ArtMethod* for kDexCachePcRelative\nand direct methods.\n\nThe supported dispatch check handles also situations that\nthe CompilerDriver currently doesn\u0027t allow. The cleanup of\nthe CompilerDriver and required changes to Quick will come\nin a separate change.\n\nChange-Id: I3f8e903a119949e95871d8ab0a995f4731a13a07\n"
    },
    {
      "commit": "f652cecb984c104d44a0223c3c98400ef8ed8ce2",
      "tree": "ec0cc193eccdd11a79f42f957a856d2ba57699e1",
      "parents": [
        "b8b44983f861cfeeca66c624dd0f2a3fa71b4992"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Aug 25 16:11:42 2015 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Oct 22 18:51:13 2015 +0200"
      },
      "message": "MIPS: Initial version of optimizing compiler for MIPS32\n\nChange-Id: I370388e8d5de52c7001552b513877ef5833aa621\n"
    },
    {
      "commit": "66e33f1906be899f140d5fe2a657db4e3993106e",
      "tree": "eaef317e550fb4aa0612ba5d7a56ea42bc32f227",
      "parents": [
        "31e913fbea3d669b2067248f2163332940d8ec45",
        "0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 10:00:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 21 10:00:34 2015 +0000"
      },
      "message": "Merge \"Use DlMallocSpace for the JIT code cache.\""
    },
    {
      "commit": "0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4",
      "tree": "92e8e49ed1b4d5442f20721858c476ed5769d0ea",
      "parents": [
        "7edef7441d28db1403fbc5641b56a26ecf355879"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 13:53:04 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 10:59:27 2015 +0100"
      },
      "message": "Use DlMallocSpace for the JIT code cache.\n\n- Also tidy up some code in the JIT compiler.\n- And mprotect code space to be writable only when allocating.\n\nChange-Id: I46ea5c029aec489f2af63452de31db3736aebc20\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "8030c4100d2586fac39ed4007c61ee91d4ea4f25",
      "tree": "9d16c721b449e84aa04681440a79b85d86fa2aa2",
      "parents": [
        "589dac7f0ce078d19aad7e35bb0195c47ddf01d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "message": "Revert \"load store elimination.\"\n\nBreaks libcore tests:\n\n  libcore.java.lang.ref.FinalizeTest#testWatchdogDoesNotFailForObjectsThatAreNearTheDeadline\n  libcore.java.util.ResourceLeakageDetectorTest#testDetectsUnclosedCloseGuard\n  org.apache.harmony.tests.java.lang.ref.ReferenceTest#test_finalizeReferenceInteraction\n\nThis reverts commit 589dac7f0ce078d19aad7e35bb0195c47ddf01d2.\n\nChange-Id: I55115765c10762d5bc152d3425e4622560d8b9f4\n"
    },
    {
      "commit": "589dac7f0ce078d19aad7e35bb0195c47ddf01d2",
      "tree": "5c77fb845997b21ce1aa97b1fa176c64a76e14f1",
      "parents": [
        "d2e0dd179fd2e8c6c820194e187fc5e9164154ff"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 24 11:21:42 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 15 01:36:34 2015 -0700"
      },
      "message": "load store elimination.\n\nThis adds a pass to eliminate some unnecessary heap loads/stores. It\nfirst collects heap locations and then tracks values stored to those heap\nlocations. Alias analysis is done based on offset, type, singleton,\npre-existence, etc.\n\nChange-Id: I11a9d8ef20d1b2f245607eb25118e9aff9be472a\n"
    },
    {
      "commit": "655e585073ac271cc9afa7c9d6ff5ab4dbe4b72e",
      "tree": "f02b64d048ae4cd7fa51774f220192ddeef42e1e",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 10:38:28 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 13:24:31 2015 +0100"
      },
      "message": "Optimizing: Move GraphChecker memory allocations to arena.\n\nBug: 18120045\nChange-Id: I3934158e6ea4868d9baa1dfcc53b603ca6c521e2\n"
    },
    {
      "commit": "cff8cc7818dd901d3667025ad0ff654100bbb629",
      "tree": "e2cd65b83b008ecc9fa3c06584625851bbcf1fe8",
      "parents": [
        "80d3f4f00e2494f0311f04e8379497ec75376d46"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 09 12:03:24 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 09 14:34:02 2015 +0100"
      },
      "message": "Don\u0027t check for optimizing test marker on unsupported ISAs.\n\nChange-Id: I39b31e770f4a9f1f5806cc4b28009e2f1908ad43\n"
    },
    {
      "commit": "09b1d6f749437bdd47f61e7c4f924f6d16b59536",
      "tree": "0a7d18299e5adf735a1a23dd0b21cec6df814ff6",
      "parents": [
        "9be16fe2cd19a555092512c16afde50f79e80e3d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 07 12:08:54 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 07 19:13:12 2015 +0100"
      },
      "message": "Enforce optimizing test marker for verification errors.\n\nChange-Id: Ie7babf162729fa02d285572ee043fa9e588d73cc\n"
    },
    {
      "commit": "c90d7c7cd3103a7b7ce62b40873d2dfcf306ca74",
      "tree": "661e5ef28a81124de7092ff05fd7f774a45481d4",
      "parents": [
        "8c812b71552a8a1b2bf06e430d355b12b7084807"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 17:30:45 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 18:33:29 2015 +0100"
      },
      "message": "Revert \"Optimizing: Disable -Wframe-larger-than\u003d for CompileOptimized().\"\n\nInstead, prevent inlining of AllocateRegisters() that uses\nhuge stack-allocated objects.\n\nBug: 24698147\n\nThis reverts commit 67f784e63343db5ecd6e584343484684ea60d1f8.\n\nChange-Id: I94c408f7acf6e43897a248d9ea0761b979ed00c8\n"
    },
    {
      "commit": "67f784e63343db5ecd6e584343484684ea60d1f8",
      "tree": "4dd3900c5d6c705635933b391c86bc7761b665cb",
      "parents": [
        "72305e26c8cecea0d2259278c950b96541c3f8ce"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 15:52:34 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 16:03:53 2015 +0100"
      },
      "message": "Optimizing: Disable -Wframe-larger-than\u003d for CompileOptimized().\n\nBug: 24698147\nChange-Id: I360e9412d85afa83ef2152e4c16bcd3139b34f75\n"
    },
    {
      "commit": "da3a55bd07e1907d4286dd1b6de77ff42d861e16",
      "tree": "125135f710b61b26f586f863f6cbc88f61b2fbb3",
      "parents": [
        "00f24284fd4bd12a7fc1865da4984dd6a7c71a94"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 02 11:56:50 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 02 12:55:56 2015 +0100"
      },
      "message": "Don\u0027t delegate to Quick anymore.\n\nChange-Id: I81ffd83daec7be03a796903f40b8bbdcd63c34c7\n"
    },
    {
      "commit": "07380a2d6cb9feee02facc81f699eed5cb670cd5",
      "tree": "95667e028ef49ad15e6a0d4ce38074573d414dd4",
      "parents": [
        "e460d1df1f789c7c8bb97024a8efbd713ac175e9"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:15:12 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:25 2015 +0100"
      },
      "message": "Enable compilation of members with access check failures.\n\nChange-Id: I0de73099b53612072c3e6f1235c22f96339fe440\n"
    },
    {
      "commit": "1920c1036ebe6dcdc93959714c9fdcedc199baf0",
      "tree": "e36976aea8f789ceb037b66308d1ec84a0421772",
      "parents": [
        "0766e3ff5638b14d6b3ea6157c800eed11be5b98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 18:00:03 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 30 09:05:15 2015 +0100"
      },
      "message": "Revert \"Revert \"Enable optimizations with --debuggable.\"\"\n\nThis reverts commit b7d27a53cb280a943c0a63a9e0806cf8e3ae4cde.\n\nChange-Id: I398c23863e4fd86a3112076417378d22efd08306\n"
    },
    {
      "commit": "b7d27a53cb280a943c0a63a9e0806cf8e3ae4cde",
      "tree": "fdf0c3bb7630ed0d5598365059fca4c04cccb1bf",
      "parents": [
        "43855ccb01703b188777fe59e1110e6a23803171"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 17:30:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 17:30:10 2015 +0000"
      },
      "message": "Revert \"Enable optimizations with --debuggable.\"\n\nBuild error with gcc.\n\nThis reverts commit 43855ccb01703b188777fe59e1110e6a23803171.\n\nChange-Id: I45abc7ee0943b2ad7bd644c88858891fc7a38ead\n"
    },
    {
      "commit": "43855ccb01703b188777fe59e1110e6a23803171",
      "tree": "7cd613dacd58258af4684595c41e4c118250b528",
      "parents": [
        "3f4b39dec9ec6b8948ed18b9d65ba49db2465004"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 15:43:06 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 16:57:52 2015 +0100"
      },
      "message": "Enable optimizations with --debuggable.\n\nChange-Id: I8979e59ee081222687fda1c93ac0bf3acbbad936\n"
    },
    {
      "commit": "175dc732c80e6f2afd83209348124df349290ba8",
      "tree": "6a5f45136832f73138ced75fcd3c6110b74116ea",
      "parents": [
        "5d01db1aa7634a012109d43e6403451b76de1daa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 25 15:42:32 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:29:51 2015 +0100"
      },
      "message": "Support unresolved methods in Optimizing\n\nChange-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1\n"
    },
    {
      "commit": "831904f6fb678354bdf8e7736723a9d87a2cde31",
      "tree": "49fd12aaad3102b397803f8eebc99a866edbf111",
      "parents": [
        "fe157012b6d760c275d944ff83e8bea371c59b09",
        "87000a948524cba7538ccc5438f6a9ecbd4e347e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Sep 16 14:34:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 16 14:34:41 2015 +0000"
      },
      "message": "Merge \"Add option to append to the cfg dump.\""
    },
    {
      "commit": "22af3bee34d0ab1a4bd186c71ccab00366882259",
      "tree": "793f358d498142a2e60d7d5131c347b0fd668cbd",
      "parents": [
        "fe9a1b05ea5a21b6d9a2e9e5081f5e80ff8a1ba2"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Sep 10 12:50:58 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Sep 15 17:03:13 2015 -0700"
      },
      "message": "Use induction variable range analysis in BCE (statically).\n\nRationale: Finally! After lots of very large CLs, now a small CL\n           that uses the new induction variable analysis in BCE\n           (statically, using this dynamically with de-opt is TBD).\n           Despite its relative small size, be aware though,\n           since the CL introduces a new phase to the compiler.\n\nChange-Id: If5555a173fd5d55d147c63138ef51fc296fa1414\n"
    },
    {
      "commit": "87000a948524cba7538ccc5438f6a9ecbd4e347e",
      "tree": "3cf06ec6a939c31540ed5d7028aa0c0838329cc2",
      "parents": [
        "b505997b2176bd29a108cb6c33d06d4ef29ba001"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Aug 24 15:34:44 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 15 15:02:18 2015 +0100"
      },
      "message": "Add option to append to the cfg dump.\n\nThis makes life easier when verifying tests with unresolved classes\n(which call dex2oat at rutime).\n\nChange-Id: I7985b2b7c0f343462e03a26b8395297c810b1d95\n"
    },
    {
      "commit": "b505997b2176bd29a108cb6c33d06d4ef29ba001",
      "tree": "05316a1837f77729f87b4fe25bfa7eb2b9e9549c",
      "parents": [
        "5c1a3374adff0d5c6c8e2248fffd7549eb3a6bae",
        "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 15 12:34:35 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\""
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "94ca9afd15e5b151860f6ce305ad4d8662fa95b7",
      "tree": "a0d9187aa84d1f62b65db822feff36f3901896e2",
      "parents": [
        "329d1b5a5afd1f1520c3fd2e723f1245d953074d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 15 11:01:01 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 15 11:03:24 2015 +0100"
      },
      "message": "Temporarly disable SSA creation in try/catch/debuggable.\n\nThis is to enable optimizations when the debuggable flag is set.\n\nbug:24054676\n\nChange-Id: I34eef2481ae44ad3550e04ec6f796d421d03adc0\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\n"
    },
    {
      "commit": "0616ae081e648f4b9b64b33e2624a943c5fce977",
      "tree": "20db99d802277cce68f88eda918ae7646383ff14",
      "parents": [
        "e6576390f957c82c2aede438834d028066757368"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 17 12:49:27 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Sep 08 17:01:05 2015 -0400"
      },
      "message": "[optimizing] Add support for x86 constant area\n\nUse the Quick trick of finding the address of the method by calling the\nnext instruction and popping the return address into a register.  This\ntrick is used because of the lack of PC-relative addressing in 32 bit\nmode on the X86.\n\nAdd a HX86ComputeBaseMethodAddress instruction to trigger generation\nof the method address, which is referenced by instructions needing\naccess to the constant area.\n\nAdd a HX86LoadFromConstantTable instruction that takes a\nHX86ComputeBaseMethodAddress and a HConstant that will be used to load\nthe value when needed.\n\nChange Add/Sub/Mul/Div to detect a HX86LoadFromConstantTable right hand\nside, and generate code that directly references the constant area.\nOther uses will be added later.\n\nChange the inputs to HReturn and HInvoke(s), replacing the FP constants\nwith HX86LoadFromConstantTable instead.  This allows values to be\nloaded from the constant area into the right location.\n\nPort the X86_64 assembler constant area handling to the X86.\n\nUse the new per-backend optimization framework to do this conversion.\n\nChange-Id: I6d235a72238262e4f9ec0f3c88319a187f865932\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "897ce64153e4758663e464fb5fb339f9a7b496c8",
      "tree": "5685e4df884ac806e2b5cdfeabed4420015548c4",
      "parents": [
        "0526f5af91cc6b986e0b439577de0b93f9e5354c",
        "736b560f2d2c89b63dc895888c671b5519afa4c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 22:11:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 03 22:11:02 2015 +0000"
      },
      "message": "Merge \"Reduce how often we call FindDexCache\""
    },
    {
      "commit": "736b560f2d2c89b63dc895888c671b5519afa4c8",
      "tree": "d5aee7ac36f458a5f6e6d75fceb19f8963a71db5",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 14:54:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 13:27:19 2015 -0700"
      },
      "message": "Reduce how often we call FindDexCache\n\nBefore host boot.oat -j4 optimizing compile:\nreal  1m17.792s\nuser  3m26.140s\nsys 0m8.340s\n\nAfter:\nreal  1m12.324s\nuser  3m22.718s\nsys 0m8.320s\n\nChange-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3\n"
    },
    {
      "commit": "2a7c1ef95c850abae915b3a59fbafa87e6833967",
      "tree": "7b83b227bbaa36465f313542bba9206ac631a8fd",
      "parents": [
        "6d889e0e5004ae4d548e6c623a1218f010d1e89b"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Wed Jul 22 18:36:24 2015 +0600"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 03 10:38:41 2015 +0100"
      },
      "message": "Add more dwarf debug line info for Optimized methods.\n\nOptimizing compiler generates minimum debug line info that\nis built using the dex_pc information about suspend points.\nThis is not enough for performance and debugging needs.\n\nThis CL generates additional debug line information for\ninstructions which have known dex_pc and it ensures that\nwhole call sites are mapped (as opposed to suspend points\nwhich map only one instruction past the function call).\n\nBug: 23157336\nChange-Id: I9f2b1c2038e3560847c175b8121cf9496b8b58fa\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\n"
    },
    {
      "commit": "f9f6441c665b5ff9004d3ed55014f46d416fb1bb",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 14:05:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 20:16:58 2015 +0100"
      },
      "message": "Optimizing: Tag Arena allocations with their source.\n\nThis adds the ability to track where we allocate memory\nwhen the kArenaAllocatorCountAllocations flag is turned on.\n\nAlso move some allocations from native heap to the Arena\nand remove some unnecessary utilities.\n\nBug: 23736311\nChange-Id: I1aaef3fd405d1de444fe9e618b1ce7ecef07ade3\n"
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "ed15000a5099f5e230c8ded5ac75692bae272650",
      "tree": "be78bce04c0c9611abc221fd71d9251d05e35d2b",
      "parents": [
        "12b7025d0393a2ce15410df6019844e59b77314d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 11:16:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 13:31:51 2015 -0700"
      },
      "message": "Fix some HandleScope bugs and add corresponding checks\n\nSome places were creating or destroying handle scopes without holding\nthe mutator lock. This can cause GC crashes if thread roots are being\nmarked or hprof dumps to also fail.\n\nAlso added checks to catch some of these errors.\n\nBug: 23468617\nChange-Id: I1a2d615923484cfc25014967656775c445aa3f1f\n"
    },
    {
      "commit": "0760a81257fa427646c309500d603194009265ef",
      "tree": "9754389d2d488f41459c76d4568dd40dd41955ae",
      "parents": [
        "7d6c95a7e5d431fd1b9ad49823535073325c699a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 17:12:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 19:08:03 2015 -0700"
      },
      "message": "ART: Propagate verifier failure types to the compilers\n\nAdd a bit-set encoding of seen failure types to the verifier and\nmake it available. Store this in VerifiedMethod, so that compilers\ncan inspect it and make choices based on failures. Rewrite the\ncurrent punting of runtime-throw errors to be at the compiler-driver\nlevel.\n\nBug: 23502994\nChange-Id: I1cfc7cbdf2aec1f14ba18f0169e432ba4ae16883\n"
    },
    {
      "commit": "83f8b5bb9e9c52791a02a84d7b0889cab898efe4",
      "tree": "59de59bcd9f166fd892df1887019c846abd539ba",
      "parents": [
        "99429ae0610e8d67d417542942c4befb35950bd3",
        "bbd733e4ef277eff19bf9a6601032da081e9b68f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 19:02:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 19:02:45 2015 +0000"
      },
      "message": "Merge \"ART: Enable basic optimizations for try/catch\""
    },
    {
      "commit": "bbd733e4ef277eff19bf9a6601032da081e9b68f",
      "tree": "47c5e9624378d8705e8e448ed951617f680d021f",
      "parents": [
        "a35d4c9d66b372e7ae1014357c48ddfa6104085b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 18 17:48:17 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 19:55:43 2015 +0100"
      },
      "message": "ART: Enable basic optimizations for try/catch\n\nGenerating code for try/catch methods requires having run at least the\ninstruction simplifier to remove redundant suspend checks. This patch\nenables the first group of optimizations when try/catch is present.\n\nEnabled optimizations:\n1) IntrinsicsRecognizer\nDoes not modify the graph, only sets HInvoke::intrinsic_.\n\n2) ConstantFolding\nDoes not deal with throwing instructions.\n\n3) InstructionSimplifier\nMay remove a throwing instruction (e.g. LoadClass in VisitCheckCast),\nor may turn a throwing instruction into a non-throwing one (ArraySet).\nTheir corresponding catch phi inputs are not removed but correctness\nis preserved.\n\n4) ReferenceTypePropagation\nDoes not modify the graph, only sets type properties. Typing of\nLoadException from catch handler information was added.\n\n5) DeadCodeElimination\nRemoving individual instructions is fine (same as 3). Removal of dead\nblocks was disabled for try/catch.\n\nChange-Id: I2722c3229eb8aaf326391e07f522dbf5186774b8\n"
    },
    {
      "commit": "99429ae0610e8d67d417542942c4befb35950bd3",
      "tree": "707a048ce213083edcf370a0a021e66a709d157c",
      "parents": [
        "a35d4c9d66b372e7ae1014357c48ddfa6104085b",
        "581550137ee3a068a14224870e71aeee924a0646"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\""
    },
    {
      "commit": "581550137ee3a068a14224870e71aeee924a0646",
      "tree": "f62dd0d07c66a8ce4d7d994ee0e9c27bd8014bb1",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:49:41 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:54:36 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\n\nFixed kCallArtMethod to use correct callee location for\nkRecursive. This combination is used when compiling with\ndebuggable flag set.\n\nThis reverts commit b2c431e80e92eb6437788cc544cee6c88c3156df.\n\nChange-Id: Idee0f2a794199ebdf24892c60f8a5dcf057db01c\n"
    },
    {
      "commit": "44b9cf937836bb33139123e15ca8b586b5853268",
      "tree": "a4fe52cb53133522069f41083d118fb6abca9336",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 15:39:06 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 15:39:06 2015 +0100"
      },
      "message": "Put in place the ARM64 instruction simplification framework.\n\nThis commit introduces and runs the empty InstructionSimplifierArm64\npass. Further commits will introduce arm64-specific transformations in\nthat pass.\n\nChange-Id: I458f8a2b15470297b87fc1f7ff85bd52155d93ef\n"
    },
    {
      "commit": "b2c431e80e92eb6437788cc544cee6c88c3156df",
      "tree": "6c0ac5f843845e4b09829eb0fd9f1b3013cf4494",
      "parents": [
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "message": "Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\n\nReverting due to failing ndebug tests.\n\nThis reverts commit 9b688a095afbae21112df5d495487ac5231b12d0.\n\nChange-Id: Ie4f69da6609df3b7c8443412b6cf7f5c43c2c5d9\n"
    },
    {
      "commit": "9b688a095afbae21112df5d495487ac5231b12d0",
      "tree": "e5e881d4d124803e66f1e90c1e0a0e4c90d22e13",
      "parents": [
        "009c34cba875885d9540696f33255a9b355d6e15"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 06 14:12:42 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:23:37 2015 +0100"
      },
      "message": "Optimizing: Better invoke-static/-direct dispatch.\n\nAdd framework for different types of loading ArtMethod*\nand code pointer retrieval. Implement invoke-static and\ninvoke-direct calls the same way as Quick. Document the\ndispatch kinds in HInvokeStaticOrDirect\u0027s new enumerations\nMethodLoadKind and CodePtrLocation.\n\nPC-relative loads from dex cache arrays are used only for\nx86-64 and arm64. The implementation for other architectures\nwill be done in separate CLs.\n\nChange-Id: I468ca4d422dbd14748e1ba6b45289f0d31734d94\n"
    },
    {
      "commit": "ec74835a7e4f2660250a2f3f9508cbbe5269e49a",
      "tree": "4171854ca234b8f76e82baad7263878dd834b720",
      "parents": [
        "8c4113b81eda9b2eab3761583f0d9e678b0e6bdd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 13:52:12 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 18:29:39 2015 +0100"
      },
      "message": "Allow for fine tuning the inliner.\n\nBug: 21868508\n\nChange-Id: Ice7f1604ed65e3d4ed2a010ee431272b7d000cdb\n"
    },
    {
      "commit": "a5ae3c3f468ffe3a317b498d7fde1f8e9325346a",
      "tree": "0b4252128815c8520128a3dbc2dacac698634ba0",
      "parents": [
        "6df1d46a5d0d4d8f90ee94921657f5bd1420301e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 14:40:50 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 15:42:08 2015 +0100"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\"\"\n\nThis reverts commit e344a8070d4549d513413c06767abf8a2c5e9709.\n\nChange-Id: I400fab0e02ce3c11376cc1f3ae9c7cf2c82ffcc1\n"
    },
    {
      "commit": "e344a8070d4549d513413c06767abf8a2c5e9709",
      "tree": "69543b9e11746fe1e390651a972c1045864ad549",
      "parents": [
        "00e3b38be4b280d6d7a7e843cd336ffbd2ba4365"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 11:52:23 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 11:52:23 2015 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\"\n\nThis reverts commit 00e3b38be4b280d6d7a7e843cd336ffbd2ba4365.\n\nChange-Id: I4dbadb2d7312a410f1c56283f063dd82156cf702\n"
    },
    {
      "commit": "00e3b38be4b280d6d7a7e843cd336ffbd2ba4365",
      "tree": "a9a0a67143d5af9c375dbb9db9d874b61586f7e1",
      "parents": [
        "f7efc9ef90c38212f8c4fbece99080f784a53181"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 15 14:41:29 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 27 19:50:04 2015 +0100"
      },
      "message": "Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\n\nThis reverts commit 9b0096ba77e7e61bc2dcbbf954831dcae54a6c27.\n\nChange-Id: I824f16e800ca32e646577d5e1e0d593887ccead1\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "53fcd0f2637207ecad2fd57a6a0f1cf8392fcc40",
      "tree": "40f7775de7efe88e7b738f33839d5220fc830eeb",
      "parents": [
        "b203b332be18c7bf1e4b3be3e0ddd345174e0517"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 22 12:10:13 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 22 14:16:26 2015 -0700"
      },
      "message": "ART: Add VerboseMethods to optimizing compiler\n\nBring the optimizing compiler up to Quick levels for debuggability.\n\nChange-Id: Ib2adce7a31cc6a60c37c63d0df5cb6a35a85e790\n"
    },
    {
      "commit": "9523a3ed0ae6fa31cd978a3999fd88233218f98b",
      "tree": "f74eae1f98064e15ea6b239eb2548133423976fe",
      "parents": [
        "33e50d85a3e43072fad4f58369b71da73b8f966c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 11:51:28 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 12:58:00 2015 +0100"
      },
      "message": "Revert \"Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\"\n\nThis reverts commit 8ab9a9010f3929acbb6c671008b8885b762b01e1.\n\nChange-Id: I1e654d5010ea2112982c3055fcb8c8f9c10e9ac8\n"
    },
    {
      "commit": "33e50d85a3e43072fad4f58369b71da73b8f966c",
      "tree": "2f6807c6b9b6024baf076464e4ab24e9878a60e4",
      "parents": [
        "32f59e585a1f8932f2a4ab3f934a0a83e29b3d19",
        "432bf3d525dd0736c91238d69e29b4db6a2f7b80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:57:42 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 10:57:42 2015 +0000"
      },
      "message": "Merge \"Reduce space filter threshold to 128.\""
    },
    {
      "commit": "432bf3d525dd0736c91238d69e29b4db6a2f7b80",
      "tree": "ddb0d9e4fd9ccc3798ee2eaf511555f647e54bdf",
      "parents": [
        "c87c8939ea1bcfbddb954478d527cf1138f4f343"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 11:11:09 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 11:11:09 2015 +0100"
      },
      "message": "Reduce space filter threshold to 128.\n\nIn order to get closer to our code increase limit.\n\nBug:21868508\n\nChange-Id: I05f76bfd97f03bda3741eca4e6a678c536ad0702\n"
    },
    {
      "commit": "8ab9a9010f3929acbb6c671008b8885b762b01e1",
      "tree": "ed38799e9dcddb859158e013d1c5d840903789f6",
      "parents": [
        "4515a67434c9e3e1627586629a1f2aba1a99aa6a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "message": "Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\n\nBroke sdk build. Investigating.\n\nThis reverts commit 4515a67434c9e3e1627586629a1f2aba1a99aa6a.\n\nChange-Id: I6c1107ab626758570a59dc6bf3e4228c70a57196\n"
    },
    {
      "commit": "4515a67434c9e3e1627586629a1f2aba1a99aa6a",
      "tree": "94a31425ceac8234cce150588e5667fbedff6449",
      "parents": [
        "cced6ad152cf8ec13f38f2210c1b8445919232d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 14:58:58 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 18:36:05 2015 +0100"
      },
      "message": "Use the quickened metadata to compile -QUICK opcodes.\n\nChange-Id: I28a8d68921698bea81f54c95cc6e4c6d2c03f2b4\n"
    },
    {
      "commit": "ffee3d33f3ea39aa6031c3d2ff29c4806c8dcc51",
      "tree": "9b990552fbf7e0ba91954758b07e2a51d95da9cd",
      "parents": [
        "045da88bd0230ddf48aaf037b3d6c16fbb97ba65"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jul 06 11:48:53 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 15 17:20:30 2015 +0200"
      },
      "message": "ART: Build SSA form when try/catch is present\n\nThis patch implements support for try/catch in the SsaBuilder.\nValues of locals are propagated from throwing sites inside try\nblocks to their respective catch blocks and phis (\"catch phis\")\nare created when necessary.\n\nChange-Id: I0736565c2c4ff3f9f0924b6e3a785a50023f875a\n"
    },
    {
      "commit": "2e7cd752452d02499a2f5fbd604c5427aa372f00",
      "tree": "505527250317827f56378f4b786534793ccfbb61",
      "parents": [
        "f16b820fc18ff86e765a14176f05417305d689a0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 10 11:38:52 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 10 18:21:13 2015 +0100"
      },
      "message": "[optimizing] Don\u0027t rely on the verifier for String.\u003cinit\u003e.\n\nContinue work on cutting the dependency on the verifier.\n\nChange-Id: I0f95b1eb2e10fd8f6bf54817f1202bdf6dfdb0fe\n"
    },
    {
      "commit": "335005e2b3a179f26b7a8ae64ca60a1406b669bd",
      "tree": "7295902b386a8431cbf6c47596858a63add0281e",
      "parents": [
        "fdc9af0ed76aa1a6efa05b122c9bcfdbb7e1e991"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 25 10:01:47 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 25 10:21:35 2015 +0100"
      },
      "message": "Only do some checks when compiling against the core image.\n\nThis will avoid false negatives when running dex2oatd on apks.\n\nbug:21865473\n\nChange-Id: Id8eacaefae0bcf07a2ada8aedd7951854cdb5c4f\n"
    },
    {
      "commit": "4824c27988c8eeb302791624bb3ce1d557b0db6c",
      "tree": "c14f74d9cc4c93cab04bee5c723e420a87db9cb3",
      "parents": [
        "22c4edd865bfdea29e80a789cef70e8e51d2a3a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 15:53:03 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 17:01:08 2015 +0100"
      },
      "message": "Use a flag from the verifier to know if we should compile.\n\nOnly used for the lack of bottom type in the aget-object case\nfor now. Could be used for more.\n\nbug:21865466\n\nChange-Id: I64c2c84dfa1c0d259631e65e5f44b94e4139e6a7\n"
    },
    {
      "commit": "69ba7b7112c2277ac225615b37e6df74c055740d",
      "tree": "3177340740abfabd80f055b17ab92fb6e740bd87",
      "parents": [
        "b809daaffdd42dc01457ae06ae83f2d7ebdb5e65"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 23 18:27:30 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jun 24 15:02:15 2015 +0100"
      },
      "message": "ART: Run GraphChecker after Builder and SsaBuilder\n\nThis patch refactors the way GraphChecker is invoked, utilizing the\nsame scoping mechanism as pass timing and graph visualizer. Therefore,\nGraphChecker will now run not just after instances of HOptimization\nbut after the builders and reg alloc, too.\n\nChange-Id: I8173b98b79afa95e1fcbf3ac9630a873d7f6c1d4\n"
    },
    {
      "commit": "eb7b7399dbdb5e471b8ae00a567bf4f19edd3907",
      "tree": "a0a488040883c14cc6cbec3186654137459d44ff",
      "parents": [
        "8ec0e20347e13592539a8c0786b1db1735149800"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Jun 19 14:47:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 22 11:57:36 2015 +0100"
      },
      "message": "Opt compiler: Add disassembly to the \u0027.cfg\u0027 output.\n\nThis is automatically added to the \u0027.cfg\u0027 output when using the usual\n`--dump-cfg` option.\n\nChange-Id: I864bfc3a8299c042e72e451cc7730ad8271e4deb\n"
    },
    {
      "commit": "4dda3376b71209fae07f5c3c8ac3eb4b54207aa8",
      "tree": "0d96a327d1b3a7e09eff178a66c0b5fb946cfc85",
      "parents": [
        "71af6f7aab7491665fe2d6beb9af4c251a99ad56"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Mon Jun 01 18:31:49 2015 -0700"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jun 19 15:43:58 2015 +0100"
      },
      "message": "MIPS: Initial version of optimizing compiler for MIPS64R6.\n\nBug: 21555893\nChange-Id: I874dc356eee6ab061a32f8f3df5f8ac3a4ab7dcf\nSigned-off-by: Alexey Frunze \u003cAlexey.Frunze@imgtec.com\u003e\nSigned-off-by: Douglas Leung \u003cdouglas.leung@imgtec.com\u003e\n"
    },
    {
      "commit": "b2bdfce7f805b00668a2521b1c939a0aafb2be49",
      "tree": "0c8aba9022fe62a176254b8459b414e9703f890f",
      "parents": [
        "d4de42f6fd0f00c5b3ca01fed6a26d11e617c3b9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 18 15:46:47 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 18 15:53:02 2015 +0100"
      },
      "message": "Run a simplification pass before code generation.\n\nThe code generators assume things that only the instruction\nsimplier ensures. So it has to be run last in case previous\noptimiziations broke those assumptions.\n\nbug:21865464\n\nChange-Id: I1f84016017bf691c2a34982e202a505b269f609a\n"
    },
    {
      "commit": "18e6873c469b48aaed22148451523479eece98e3",
      "tree": "6df7efad2f7777bb0a4dbcbbe719750393eac531",
      "parents": [
        "edb83c606e034d76bed1331f34cdc435df47bb95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 23:09:05 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 23:11:39 2015 +0100"
      },
      "message": "Fix a bug in optimizing when the null constant has been DCE.\n\nIf it has been DCE, we should create a new one, instead of\nusing the old one.\n\nAlso move the first DCE to a place where it could actually\nbe useful.\n\nbug:21870788\n\nChange-Id: I28fc52ae481ef92cba45fc1b5abcf07c995f524c\n"
    },
    {
      "commit": "a3a3c5943522e7325d60cfcbdd17aff1e138f53d",
      "tree": "a6c3d098fda6134b8b6ed28d33a2a8fab73d2841",
      "parents": [
        "10176757836db987e11fb3723e4cb07bd9ea7e95"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 12 14:30:53 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 12 14:49:30 2015 +0100"
      },
      "message": "Optimizing: Move optimization objects to Arena.\n\nThis should reduce the stack size needed by the\nOptimizingCompiler::CompileOptimized() which was very\nclose to our limits for clang builds, causing repeated\nbuild breakages on otherwise healthy changes:\n    art/compiler/optimizing/optimizing_compiler.cc:395:37:\n    error: stack frame size of 1760 bytes in function\n    \u0027art::OptimizingCompiler::CompileOptimized\u0027\n    [-Werror,-Wframe-larger-than\u003d]\n\nChange-Id: I2f4ab0235f4eac61823a4a320bb4fe78942a23c2\n"
    },
    {
      "commit": "454a481d116ec4e6dc36fab23a073017b1436d7f",
      "tree": "9c603f9e2015a405ed1932f397df4f42930c23e2",
      "parents": [
        "bebf6bdf833ea9e090171303200bd8adc9321762"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 10:37:32 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 10 16:13:34 2015 +0100"
      },
      "message": "Revert \"Revert \"Support for inlining virtual and interface calls.\"\"\n\nIt now works thanks to:\n- https://android-review.googlesource.com/#/c/154016/ where\n  the invoke type is changed.\n- The new FindMethodIndexIn method in this change, that\n  locates the right method index relative to the caller\u0027s\n  dex file.\n\nThis reverts commit 6e4758615308bb525b6350c30468e33a2e1f2274.\n\nChange-Id: Iddba11664a9241e210fec211cd2aed9f4b90d118\n"
    },
    {
      "commit": "6e4758615308bb525b6350c30468e33a2e1f2274",
      "tree": "0a9fbb0f1f90dfe273d94659f077cc1e6b84966c",
      "parents": [
        "1d5006c34d75758752bf3499892e3d5beb11d5dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 08 15:52:23 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 08 15:54:14 2015 +0000"
      },
      "message": "Revert \"Support for inlining virtual and interface calls.\"\n\nFails for some apps.\n\nbug: 21674542\n\nThis reverts commit 1d5006c34d75758752bf3499892e3d5beb11d5dc.\n\nChange-Id: Ia74b5e54d59f8ffe9992591324a12f71efb67af4\n"
    },
    {
      "commit": "1d5006c34d75758752bf3499892e3d5beb11d5dc",
      "tree": "3540993b4bb05138e0a029c016384fd05b6ace57",
      "parents": [
        "6a0d5e7fe6dc0c9d3dd941ab991203f2d5d1c354"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 15:04:32 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 14:45:18 2015 +0100"
      },
      "message": "Support for inlining virtual and interface calls.\n\nAlso had to change the pass order to get reference type propagation\nbefore the inliner.\n\nChange-Id: I4bf3bbb2d17c7d9cab632cfdd96adad8368bdfea\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "8363c772581bf00ebcdc2e38391b4bfae51beb75",
      "tree": "c66a6da00fac8432293a6328eebee78995b53406",
      "parents": [
        "b4e2fbbed28c3bcdb8fd0fee5a201ba78e1edf28"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 28 16:12:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 28 17:50:28 2015 +0100"
      },
      "message": "Add --generate-debug-info flag and remove the other two flags.\n\nReplace the flags --include-debug-symbols and --include-cfi\nwith single flag called --generate-debug-info (with alias -g).\n\nThe name \"symbol\" was not ideal, since depending on context it\nmay be interpreted as \"ELF symbols\", or \"debugging information\".\n\nThis CL also means that we have only the options to include\neither all debugging information or none.  This should be fine,\nsince we can use standard tools to strip anything we do not want.\n\nChange-Id: I721fded56d755d7eed0ef36aa84e841a1f5747f8\n"
    },
    {
      "commit": "d5111bf05fc0a9974280a80eeb43db6d5227a81e",
      "tree": "cd119fb5d07f8347699ce7551e9471f2740b21ba",
      "parents": [
        "aa49c23d47e5fdfcf51380550ee864e9d30d082b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 15:37:09 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 15:37:09 2015 +0100"
      },
      "message": "Do not use dex_compilation_unit after inlining.\n\nIt\u0027s incompatible with inlining, as inlined invokes/load class/new\ncan be from another dex file.\n\nChange-Id: I8897b6a012942bc8e136f2bea70252d3fb3a7fa5\n"
    },
    {
      "commit": "b176d7c6c8c01a50317f837a78de5da57ee84fb2",
      "tree": "81ec0c16267c527bdc64923b374be915206e6af9",
      "parents": [
        "713c59e813daa92da3f1678add6c4c7e16dcff11"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 18:48:31 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:10:00 2015 +0100"
      },
      "message": "Also encode the InvokeType in an InlineInfo.\n\nThis will be needed to recover the call stack.\n\nChange-Id: I2fe10785eb1167939c8cce1862b2d7f4066e16ec\n"
    },
    {
      "commit": "3cd4fc8bbb40a57d2ffde85f543c124f53237c1d",
      "tree": "97eee6cc70206f605e251ad85f6f2941f4eb0383",
      "parents": [
        "2f9d1379fdebcdeeac52eaeff25ad5697c6b6ffb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 14 15:15:42 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 19 15:54:19 2015 +0100"
      },
      "message": "Eliminate redundant constructor barriers when inlining.\n\nBug: 20410297\nChange-Id: I2097743d00eb795d050d390b1918e38c7f41d506\n"
    },
    {
      "commit": "a4b8c21dae70ae34aee13628632c39a675c06022",
      "tree": "3a72a4fcb64d61b7913f6ee3599a46b3248437b6",
      "parents": [
        "faf935eb3a8565de98d9ec1f79c8c43c5c6eb2a7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 07 09:59:30 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 12 11:37:53 2015 +0100"
      },
      "message": "ART: Rediscover loops after deleting blocks in DCE\n\nThe way DCE currently updates loop information does not cover all\ncases. This patch removes the logic, resets loop information of live\nblocks to pre-SSA state and reanalyzes the affected loops.\n\nChange-Id: I0b996a70235b95a8db0de9a23a03f71db57a21b8\n"
    },
    {
      "commit": "0a23d74dc2751440822960eab218be4cb8843647",
      "tree": "39d69de5d812826c4065d0acd38a58cd983f21f0",
      "parents": [
        "cdeb0b5fede4c06488f43a212591e661d946bc78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 07 11:57:35 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 11 14:17:22 2015 +0100"
      },
      "message": "Add a parent environment to HEnvironment.\n\nThis code has no functionality change. It adds a placeholder\nfor chaining inlined frames.\n\nChange-Id: I5ec57335af76ee406052345b947aad98a6a4423a\n"
    },
    {
      "commit": "7bf9bc7854f5c8ccc2cb2ef4be4f728c5fbd3236",
      "tree": "f4a4caeb5c0682b15e68b4f47020ea0239987cb9",
      "parents": [
        "f16d7b3824b2777b95fb509c1d2a95bef89f65a4",
        "b2a58477e14e1b15cb9848d16015a49a854ee32c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "message": "Merge \"Minor improvements to 458-checker-instruction-simplification.\""
    },
    {
      "commit": "917f9ab1eaaafdab25b4fd24ca1f49a76182a794",
      "tree": "63f9ba9a84c1a94251346e4602626da9433daebb",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 15:13:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 23 17:46:36 2015 +0100"
      },
      "message": "ART: Run BooleanSimplifier after inlining\n\nInlined methods are currently not simplified.\n\nChange-Id: I075130c9df55e2f55032a2c81b08d42cb2cc01f6\n"
    },
    {
      "commit": "862aaefdd63d8058b54a7d956a0229eec9dcbde6",
      "tree": "6d579c0563c9a62f42ae8b34e79fd4ba3e7c7dbe",
      "parents": [
        "8f20bdb9d3b7516e75a7845e610105d87ce25ae6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 13:31:47 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 13:35:53 2015 +0100"
      },
      "message": "[optimizing] Name the last DCE pass.\n\nThis will allow Checker to differentiate between them.\n\nChange-Id: I972d452a64f1c19d370567b9ef3d620f9b835a9a\n"
    },
    {
      "commit": "8f20bdb9d3b7516e75a7845e610105d87ce25ae6",
      "tree": "b55e5b7695e482dc66dda6a0175bb56251294baf",
      "parents": [
        "641547a5f18ca2ea54469cceadcfef64f132e5e0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:07:50 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 12:13:44 2015 +0100"
      },
      "message": "Run DCE again after all the other optimizations have run.\n\nOn docs this doubles the amount of instructions removed.\n"
    },
    {
      "commit": "0cdf6d31b6e8b39b56deba92336383f43fba9c0f",
      "tree": "21bea01160e2470609405a72e8df8b186456a13d",
      "parents": [
        "7a9c885684c965fe84f91d8ad74f54f869e2a448"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 16:04:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 16:04:32 2015 +0000"
      },
      "message": "Revert \"Run DCE again after all the other optimizations have run.\"\n\nReverting because of libcore failures.\n\nThis reverts commit 7a9c885684c965fe84f91d8ad74f54f869e2a448.\n\nChange-Id: Iafe59b02fe7617243d81533d66e609a3528e7a58\n"
    },
    {
      "commit": "7a9c885684c965fe84f91d8ad74f54f869e2a448",
      "tree": "9323e6b4c6a3391f279d1b4837647fcaedc3218f",
      "parents": [
        "2be39e05ea8c4475278fe6a6573c3c8f04e075d4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:07:50 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 15:44:29 2015 +0100"
      },
      "message": "Run DCE again after all the other optimizations have run.\n\nOn docs this doubles the amount of instructions removed.\n\nChange-Id: I1712a92c0c0b3b32b111d194b64d8ea81d652822\n"
    },
    {
      "commit": "2be39e05ea8c4475278fe6a6573c3c8f04e075d4",
      "tree": "21bea01160e2470609405a72e8df8b186456a13d",
      "parents": [
        "b3306642f42d47ddb4d021a2f48ce9b1bd235857"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:56:34 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:10:35 2015 +0100"
      },
      "message": "Use --dump-stats to dump optimizing compiler stats.\n\nVLOG(compiler) produces too much output and it takes a long time if you\nonly need to see how an analysis performs.\n\nChange-Id: Ic17c2b2b5fec431d356cecd37289fb96985d4d7f\n"
    },
    {
      "commit": "b2a58477e14e1b15cb9848d16015a49a854ee32c",
      "tree": "4d99998bb80bbe373a3b5627edad24e0be35ddbe",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Apr 17 14:35:18 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 14:46:22 2015 +0100"
      },
      "message": "Minor improvements to 458-checker-instruction-simplification.\n\nThis follows earlier comments from Roland:\nhttps://android-review.googlesource.com/#/c/140446\n  /2/test/458-checker-instruction-simplification/src/Main.java@337\n  /2/test/458-checker-instruction-simplification/src/Main.java@465\n\nChange-Id: I255ab74b8885dd8e86bb2c11bba4075fa0eaa183\n"
    },
    {
      "commit": "8aec061f5e58876bcc892d8c0309bc13b5349f5c",
      "tree": "468528f9081cc33299317a3fa62cfc6d84c224e8",
      "parents": [
        "f90b8548e91392dfc24e8b0f7d3000f4f121c19d",
        "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 15:41:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:41:03 2015 +0000"
      },
      "message": "Merge \"Fallback to quick in case of soft verification errors\""
    },
    {
      "commit": "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872",
      "tree": "45ad9f5bb52eb0db3857e344ab67b5aab2309472",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 18:42:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 16:28:11 2015 +0100"
      },
      "message": "Fallback to quick in case of soft verification errors\n\nAdd a regression test: using uninitialized values triggers a soft\nverification error and optimizing should not crash.\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.\n\nBug: 19988704\nChange-Id: I67174538eed853baff735694b3ae8eb34afe2a39\n"
    },
    {
      "commit": "0d9f17de8f21a10702de1510b73e89d07b3b9bbf",
      "tree": "3d58a2a165ee2bc5af0e813b1ffa893fba72ed6d",
      "parents": [
        "9bb3e8e10d7d9230a323511094a9e260062a1473"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 14:17:44 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 14:17:44 2015 +0100"
      },
      "message": "Move the linear order to the HGraph.\n\nBug found by Zheng Xu: SsaLivenessAnalysis being a stack allocated\nobject, we should not refer to it in later phases of the compiler.\nSpecifically, the code generator was using the linear order, which\nwas stored in the liveness analysis object.\n\nChange-Id: I574641f522b7b86fc43f3914166108efc72edb3b\n"
    },
    {
      "commit": "8dc7324da5bd0f2afd2ab558ab04882329a61fe8",
      "tree": "245ce4265cc31990fa6d2f6e792ccd9d44af1dc1",
      "parents": [
        "4af290af4e89cfbc3a4e1ada79909ccee353361a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 11:40:39 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 13 21:24:12 2015 +0100"
      },
      "message": "Add --include-cfi compiler option.\n\nDecouple generation of CFI from the rest of debug symbols.\nThis makes it possible to generate oat with CFI but without\nthe rest of debug symbols.\n\nThis is in line with intention of the .eh_frame section.\nThe section does not have the .debug_ prefix because it\nis considered somewhat different to the rest of debug symbols.\n\nChange-Id: I32816ecd4f30ac4e0dc69d69a4993e349c737f96\n"
    },
    {
      "commit": "fc4fb0fdb1d18db2ba8d98e9f41211466ac86fd8",
      "tree": "b25d5be5b8e7320d05f42da549c11cc82d7dbc51",
      "parents": [
        "9134a1a405d471b0dfbf299ab0d4c2d629778632",
        "031af41d1debbdbd8964d7c504a789068dfe6029"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:26:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 14:26:19 2015 +0000"
      },
      "message": "Merge \"Revert \"Fallback to quick in case of soft verification errors\"\""
    },
    {
      "commit": "031af41d1debbdbd8964d7c504a789068dfe6029",
      "tree": "a480bdc4a80f63d46abcde2ef7a36e1ad072d624",
      "parents": [
        "c751d37e692d89b360f3c09421401f581b5c6d06"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:25:53 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:25:53 2015 +0000"
      },
      "message": "Revert \"Fallback to quick in case of soft verification errors\"\n\nThis reverts commit c751d37e692d89b360f3c09421401f581b5c6d06.\n\nChange-Id: I2183df8e856410989bc019f6a1f58af37d5d7eab\n"
    },
    {
      "commit": "9134a1a405d471b0dfbf299ab0d4c2d629778632",
      "tree": "cb943d6a8a0f73d98c5ea58e428e25331b97cd30",
      "parents": [
        "e4e88d7b37c977b4c755485174a54c04aa3de951",
        "c751d37e692d89b360f3c09421401f581b5c6d06"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 13:10:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 13:10:38 2015 +0000"
      },
      "message": "Merge \"Fallback to quick in case of soft verification errors\""
    },
    {
      "commit": "a29d93b380c9aeb8270e281aefbdd0c77a430d43",
      "tree": "22fb9344bd5495cf6a093913e9cf71967b42ab4f",
      "parents": [
        "1e7e85a40744ddd0c36b206d0960fc3cf24a7e62",
        "c2bcafe225d672611284ef247b777b9b19817c7d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 19:14:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 19:14:25 2015 +0000"
      },
      "message": "Merge \"ART: Refactor CompileOptimized\""
    },
    {
      "commit": "c2bcafe225d672611284ef247b777b9b19817c7d",
      "tree": "c9414f0b526523df2e380bff2165e7f0cc1009ed",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 10:49:32 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 11:06:16 2015 -0700"
      },
      "message": "ART: Refactor CompileOptimized\n\nFactor out register allocation. Both Clang and GCC inline the\nfunction, but it changes how Clang stack-allocates enough so\nthat the resulting frame size is below our limit.\n\nBug: 20139216\nChange-Id: I2cf393aed70f2ce0556252b61ae639aacab6f3a7\n"
    },
    {
      "commit": "c751d37e692d89b360f3c09421401f581b5c6d06",
      "tree": "e8291a99d7b407ac2dbf0680df0876384821812c",
      "parents": [
        "8e5fc53bd2f9ab5a46547959a176eba176ee115f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 01 20:27:28 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 10 18:14:42 2015 +0100"
      },
      "message": "Fallback to quick in case of soft verification errors\n\nAdd a regression test: using uninitialized values triggers a soft\nverification error and optimizing should not crash.\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.\n\nBug: 19988704\n\nChange-Id: I2493f737efd3fad72f6b41fb60eff1d3731613fb\n"
    },
    {
      "commit": "3773cd046b1c34569f4711666788bf8a389c7857",
      "tree": "4fda463949679cfe434e0d5559919a5f01b4d1ac",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "message": "ART: Remove WriteElf from Compiler\n\nAs Portable is gone, we only have one elf_writer left. It also\nallows to put the decision for 32b vs 64b ELF into a central\npoint.\n\nChange-Id: Iae67d06df85268b3f0ee5725abc65edd23eb2499\n"
    },
    {
      "commit": "691184dd9667b2dbb49b36b6d71053161983ecd0",
      "tree": "5a93a9b39753ad94a7b339e698340cc1de9dd760",
      "parents": [
        "b952ac3874ec19e6d4278795e86aa0e2161857c5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 21:00:58 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 21:00:58 2015 +0100"
      },
      "message": "Fix build - the stack frame is too large.\n\nChange-Id: Icabad2e3ccbaa4783df6c18c60a206357398edc5\n"
    },
    {
      "commit": "c6b4dd8980350aaf250f0185f73e9c42ec17cd57",
      "tree": "ef8d73e37abc04aecb430072a8bc463c73398fee",
      "parents": [
        "dd97393aca1a3ff2abec4dc4f78d7724300971bc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 07 20:32:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 16:47:50 2015 +0100"
      },
      "message": "Implement CFI for Optimizing.\n\nCFI is necessary for stack unwinding in gdb, lldb, and libunwind.\n\nChange-Id: I1a3480e3a4a99f48bf7e6e63c4e83a80cfee40a2\n"
    },
    {
      "commit": "40f65560b5ecd79aeaadc16b03834d11aea1e0a5",
      "tree": "b93fb2f045a4f47f8b6e3c8541a07781dcce2c77",
      "parents": [
        "d2b9c0ca73a01cc31482a54cbcae1b3ac85379b8",
        "3c54b0023fca579aae006dfa607fb14de5846c42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 08 00:37:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 08 00:37:25 2015 +0000"
      },
      "message": "Merge \"ART: Fix 64-bit ELF file support\""
    },
    {
      "commit": "3c54b0023fca579aae006dfa607fb14de5846c42",
      "tree": "7b996231875fdfd54855a9aa86fe2494cdee1ec5",
      "parents": [
        "425ee0e1103b52bb72132df64f503725d1a15300"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:09:30 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:43:08 2015 -0700"
      },
      "message": "ART: Fix 64-bit ELF file support\n\nThe API wasn\u0027t cross-compile-safe, 32-bit patchoat would fail for\nnegative delta applied to a 64-bit ELF file.\n\nAdd 64-bit ELF file output to the compilers, behind a flag, currently\noff by default (preserving current behavior).\n\nBug: 20095017\nChange-Id: I2cde7b4c7cc83413c76692d7b745868d644a604c\n"
    },
    {
      "commit": "62e074f0d1a18f0f5aa6716f000825704f55e81b",
      "tree": "bad5f57aad20c4303c717240f2dc879d14c19453",
      "parents": [
        "1b8e8cac2c96f6d2af8e7217f997a30e11c098b5"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 07 18:09:37 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 07 18:22:40 2015 +0100"
      },
      "message": "ART: Print C1vis header only if visualizer enabled\n\nSetting kStringFilter currently suppresses graph dumps of non-matching\nmethods but their headers are still printed. This fixes the issue.\n\nChange-Id: Ib33fb20fcca2bf409534a824e7f76f1feb85724d\n"
    },
    {
      "commit": "f93c6fe65c4c5e601cce467e87bbe71a87c5bac0",
      "tree": "cc80db464fa34c9b10e5f3fceee8596c0fe68a36",
      "parents": [
        "1f940310658cd5a15e12305463fb6d2d508bbd26",
        "20f85597828194c12be10d3a927999def066555e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 31 18:48:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 31 18:48:29 2015 +0000"
      },
      "message": "Merge \"Fixed layout for dex caches in boot image.\""
    },
    {
      "commit": "20f85597828194c12be10d3a927999def066555e",
      "tree": "486c10dca0811b036a0cd5f80c02650ac43b11a5",
      "parents": [
        "7d8c6776d7bdcc04411154aa215ba5909939192a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 19 10:07:02 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 31 08:56:17 2015 +0100"
      },
      "message": "Fixed layout for dex caches in boot image.\n\nDefine a fixed layout for dex cache arrays (type, method,\nstring and field arrays) for dex caches in the boot image.\nThis gives those arrays fixed offsets from the boot image\ncode and allows PC-relative addressing of their elements.\n\nUse the PC-relative load on arm64 for relevant instructions,\ni.e. invoke-static, invoke-direct, const-string,\nconst-class, check-cast and instance-of. This reduces the\narm64 boot.oat on Nexus 9 by 1.1MiB.\n\nThis CL provides the infrastructure and shows on the arm64\nthe gains that we can achieve by having fixed dex cache\narrays\u0027 layout. To fully use this for the boot images, we\nneed to implement the PC-relative addressing for other\narchitectures. To achieve similar gains for apps, we need\nto move the dex cache arrays to a .bss section of the oat\nfile. These changes will be implemented in subsequent CLs.\n\n(Also remove some compiler_driver.h dependencies to reduce\nincremental build times.)\n\nChange-Id: Ib1859fa4452d01d983fd92ae22b611f45a85d69b\n"
    },
    {
      "commit": "12be74e37b587ef2dea838d480018f4658b95ad7",
      "tree": "26d1bcbb5b7cf5c60f8c18f77aa321986ff599b6",
      "parents": [
        "fcee9d4ad44b70cb85aafa9056c08a194c5582e6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 30 13:29:08 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 30 15:07:43 2015 +0100"
      },
      "message": "[optimizing] Only print full stats in VLOG(compiler)\n\nAlso add a kCompiledQuick stat.\n\nbug:19956318\n\nChange-Id: I0c6c0ac256362824eb9f1418216ab7e2c289a17b\n"
    },
    {
      "commit": "9437b78780f9e6ffa5797ebe82de8e8d7f3a5ed6",
      "tree": "d99027ae9295f162865c01f9a8795ac8cda09b84",
      "parents": [
        "11e99b19f48576f1bb6d0993635b34b6e09c9832"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 25 10:08:51 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 25 17:13:54 2015 +0000"
      },
      "message": "Revert \"Revert \"Inline across dex files.\"\"\n\nThis reverts commit 6a816cf624ba56bf2872916d7b65b18fd9a411ef.\n\nChange-Id: I36cb524108786dd7996f2aea0443675be1f1b859\n"
    }
  ],
  "next": "3e690d11d26b3ae3891a03cdef88e7c2272109f5"
}
