)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "3e690d11d26b3ae3891a03cdef88e7c2272109f5",
      "tree": "77e095dfb985ef472bf6acf36864d90466ed7f4e",
      "parents": [
        "b64b782f9ae7a94ecbbf64c83cbcdc7d716ba560",
        "579ea7d0d89a1d7f02c35ef1beb6328a37259735"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 17:45:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 17:45:19 2015 +0000"
      },
      "message": "Merge \"Share the runtime arena for faster compile times.\""
    },
    {
      "commit": "579ea7d0d89a1d7f02c35ef1beb6328a37259735",
      "tree": "c6f8d46af8b5e8f3e8f5f0ddaf43480fa53237d1",
      "parents": [
        "94ead7673f90a8199d926fe161d7d021202f0aa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 17:28:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 17:28:38 2015 +0000"
      },
      "message": "Share the runtime arena for faster compile times.\n\nUsing a shared arena has the downside of getting more contentions\nwhen requesting memory, but saves on compilation times because\nwe don\u0027t free the memory it allocated util the end of dex2oat.\n\nChange-Id: I353ced1db34539850ec639b6b228451b455a48ec\n"
    },
    {
      "commit": "46e2a3915aa68c77426b71e95b9f3658250646b7",
      "tree": "2b0a4470b05291894db73c631fe94f0fdff8c46b",
      "parents": [
        "bce0855ca1dbb1fa226c5b6a81760272ce0b64ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 16 17:31:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 17:28:37 2015 +0000"
      },
      "message": "ART: Boolean simplifier\n\nThe optimization recognizes the negation pattern generated by \u0027javac\u0027\nand replaces it with a single condition. To this end, boolean values\nare now consistently assumed to be represented by an integer.\n\nThis is a first optimization which deletes blocks from the HGraph and\ndoes so by replacing the corresponding entries with null. Hence,\nexisting code can continue indexing the list of blocks with the block\nID, but must check for null when iterating over the list.\n\nChange-Id: I7779da69cfa925c6521938ad0bcc11bc52335583\n"
    },
    {
      "commit": "36540cb4d549c706cc7cd23086684f1548a91042",
      "tree": "2c96f65e657ea190e20bd311dab4ba0a35f4040e",
      "parents": [
        "476448128d0ebf3328e96548de34f19bc55fa5c8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 14:45:53 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 14:47:12 2015 +0000"
      },
      "message": "Implement a space filter for optimizing.\n\nHeuristic-based. Currently only for enabling fugu user build.\n\nChange-Id: I76e652bd3f00ed84a2a8ad69c7c2c0e24d74cd68\n"
    },
    {
      "commit": "216eaa2927f424821a03d7c4c6bf701fdb48e865",
      "tree": "0c4d0e5302723c4955eb22f260af8500c31768d2",
      "parents": [
        "a67f4b37b216d3bf84d3e204a0d71d8d4660fab4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 17:09:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 18:10:19 2015 +0000"
      },
      "message": "Fall back to Quick when Optimizing cannot compile.\n\nCurrently applies when seeing unresolved types/methods/fields,\nand methods with try/catch.\n\nChange-Id: I93b12d440b39f0b9faf98f08f2bfddedfeff7182\n"
    },
    {
      "commit": "a3d90fb449e2fba87211a7de323faff63cba41fc",
      "tree": "b78d4ac59c95d5cc8d26f6c27a800af2125807b3",
      "parents": [
        "24ce79ebb11b7ea2947a35d447e0df1ab39b24bf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 16 13:55:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 16 17:03:33 2015 +0000"
      },
      "message": "[optimizing] Use baseline when debuggable is set.\n\nSSA form conflicts with JDWP\u0027s SetValue functionality. Because\nwe do not deopt all the call stack, we may call SetValue on a\ncompiled frame, which doesn\u0027t work with optimizing. Simplest\nsolution for now is to just use baseline.\n\nChange-Id: I91738b363eec8fef145486bd96681aea73a1baa8\n"
    },
    {
      "commit": "234d69d075d1608f80adb647f7935077b62b6376",
      "tree": "f6b68ff38722dc91bd0de2387609ee0ce950e0ce",
      "parents": [
        "31df246d330c45f5691e226d176d0c59450f8435"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:28:50 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 14:23:38 2015 +0000"
      },
      "message": "Revert \"Revert \"[optimizing] Enable x86 long support.\"\"\n\nThis reverts commit 154552e666347d41d95d7619c6ee56249ff4feca.\n\nChange-Id: Idc726551c249a888b7ff5fde8508ae50e81b2e13\n"
    },
    {
      "commit": "e0fe7ae36180863e45cbb9d1e6e9c30b1b1a949c",
      "tree": "26269a55f16d8bee5b5898318fa18491fd72061c",
      "parents": [
        "3dd536ffd7e8f82e4587964545b272acbd61d68e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:02:49 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 16:20:35 2015 +0000"
      },
      "message": "Make the SSA builder honor the debuggable flag.\n\nThis requires to properly type phis that are only\nused by environments, and discard phis with incomptable types.\nThe code generators do not handle these conflicting types. In\nthe process, ensure a phi has a type that does not depend\non the order of the inputs (for example (char, short) -\u003e short),\nand set int for int-like types. We can refine this later.\n\nChange-Id: I60ab601d6d00b1cbf18623ee4ff1795aa28f84a1\n"
    },
    {
      "commit": "154552e666347d41d95d7619c6ee56249ff4feca",
      "tree": "b8bdb820be33317f23ef1d3e43d13b2b6bfb3ba5",
      "parents": [
        "b4ba354cf8d22b261205494875cc014f18587b50"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 06 16:10:14 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 06 16:10:14 2015 +0000"
      },
      "message": "Revert \"[optimizing] Enable x86 long support.\"\n\nFew libcore failures.\n\nThis reverts commit b4ba354cf8d22b261205494875cc014f18587b50.\n\nChange-Id: I4a28d853e730dff9b69aec9555505803cf2fcd63\n"
    },
    {
      "commit": "b4ba354cf8d22b261205494875cc014f18587b50",
      "tree": "b6ce1e89f56f4d5adf238188df5b02fd7e2c23ac",
      "parents": [
        "af8db2ea18135588b267fe9a0b2f7af734b906cc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 11:28:58 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 06 11:37:33 2015 +0000"
      },
      "message": "[optimizing] Enable x86 long support.\n\nChange-Id: I9006972a65a1f191c45691104a960366747f9d16\n"
    },
    {
      "commit": "7c3952f423b8213083d60596a5f0bf4237ca3f7b",
      "tree": "40cbc6d30e02ab5edd8598d0f811b62f5c6045ba",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 19 18:21:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 15:57:15 2015 -0800"
      },
      "message": "ART: Add -Wunused\n\nUntil the global CFLAGS are fixed, add Wunused. Fix declarations\nin the optimizing compiler.\n\nChange-Id: Ic4553f08e809dc54f3d82af57ac592622c98e000\n"
    },
    {
      "commit": "4fe292e2b6ba3980605373f183055a374084c65b",
      "tree": "cc689a549944d5302400aa155722e4e8715211b6",
      "parents": [
        "76f82fc75f245101828e2fdbbdec676af1717f0b",
        "acf735c13998ad2a175f5a17e7bfce220073279d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 20 10:40:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 20 10:40:51 2015 +0000"
      },
      "message": "Merge \"Reference type propagation\""
    },
    {
      "commit": "b666f4805c8ae707ea6fd7f6c7f375e0b000dba8",
      "tree": "a61439a9bcb555dc575286f3e0bb5e50ce185982",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 18 14:33:14 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 19 09:59:50 2015 -0800"
      },
      "message": "Move arenas into runtime\n\nMoved arena pool into the runtime.\n\nMotivation:\nAllow GC to use arena allocators, recycle arena pool for linear alloc.\n\nBug: 19264997\nChange-Id: I8ddbb6d55ee923a980b28fb656c758c5d7697c2f\n"
    },
    {
      "commit": "acf735c13998ad2a175f5a17e7bfce220073279d",
      "tree": "94969f2387f0e6dad8c7e5712aa8187c9de2be56",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 12 15:25:22 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 19 17:07:52 2015 +0000"
      },
      "message": "Reference type propagation\n\n- propagate reference types between instructions\n- remove checked casts when possible\n- add StackHandleScopeCollection to manage an arbitrary number of stack\nhandles (see comments)\n\nChange-Id: I31200067c5e7375a5ea8e2f873c4374ebdb5ee60\n"
    },
    {
      "commit": "aa9b7c48069699e2aabedc6c0f62cb131fee0c73",
      "tree": "dafc6b514825490e65ecee4385f08f066add8c95",
      "parents": [
        "cf3fb94a90d74361b13e7bae5aa6e0e4ae58479d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 17 15:40:09 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 19 12:13:09 2015 +0000"
      },
      "message": "Have the opt. compiler set the size of \"empty\" frames to zero.\n\nThis is to mimic Quick\u0027s behavior and honor stack frame\nalignment constraints after changes introduced by Change-Id\nI0fdb31e8c631e99091b818874a558c9aa04b1628.\n\nThis issue use to make oatdump crash on oat files produced by\nthe optimized compiler (e.g.\nout/host/linux-x86/framework/x86_64/core-optimizing.oat).\n\nChange-Id: I8ba52601edb0a0993eaf8923eba55aafdce5043e\n"
    },
    {
      "commit": "809658ec5c5515ae9eb87d32012ec5e088612949",
      "tree": "14979b160f2bc5439a462daeee93e91bfce86185",
      "parents": [
        "24898d447640c3a45e6fc9f404b049eddc5a2709"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 05 11:34:02 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 05 18:07:42 2015 +0000"
      },
      "message": "ART: Fix crash when timing method failing to build\n\nPassInfoPrinter previously required that AfterPass is always called\nbefore the timing results are printed, which was not the case when\na method compilation failed either in Builder or SsaBuilder.\n\nChange-Id: I3686bba6869402a62eec884f59fd872d5674e5a5\n"
    },
    {
      "commit": "5e8b137d28c840b128e2488f954cccee3e86db14",
      "tree": "c56e4c709ce07d605ab4b754e89f7739264feb73",
      "parents": [
        "f9af19413333c271192c3b11425f865bd8054c0c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 23 14:39:08 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 04 13:47:49 2015 +0000"
      },
      "message": "Create HGraph outside Builder, print timings\n\nThis patch refactors the way HGraph objects are created, moving the\ninstantiation out of the Builder class and creating the CodeGenerator\nearlier. The patch uses this to build a single interface for printing\ntimings info and dumping the CFG.\n\nChange-Id: I2eb63eabf28e2d0f5cdc7affaa690c3a4b1bdd21\n"
    },
    {
      "commit": "82091dad38f3e5bfaf3b6984c9ab73069fb68310",
      "tree": "f66bd397f64a13ee102e45e0b6267c5d55e77505",
      "parents": [
        "28acb6feb50951645c37c077bd3897ea760ca322"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 10:02:45 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 30 09:34:25 2015 +0000"
      },
      "message": "Implement LICM in optimizing compiler.\n\nChange-Id: I9c8afb0a58ef45e568576015473cbfd5f011c242\n"
    },
    {
      "commit": "10e244f9e7f6d96a95c910a2bedef5bd3810c637",
      "tree": "bc2b90ce716129115c05f79e21c58fe13b01fd20",
      "parents": [
        "ab7f56d9b9838811cb01773e45999e2cda4aa03a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 26 18:54:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 29 12:01:26 2015 +0000"
      },
      "message": "optimizing: NullCheck elimination\n\nHow it works:\n- run a type analysis to propagate null information on instructions\n- during the last instruction simplifier remove null checks for which\nthe input is known to be not null\n\nThe current type analysis is actually a nullability analysis but it will\nbe reused in follow up CLs to propagate type information: so it keeps\nthe more convenient name.\n\nChange-Id: I54bb1d32ab24604b4d677d1ecdaf8d60a5ff5ce9\n"
    },
    {
      "commit": "9c462086269324350516b3394d478f1d71a4b5d1",
      "tree": "4b2a29b0cda0ba50dfb09a6bcc83a4cfecf3769e",
      "parents": [
        "04a77807a657e86495e7ececf7dc530fa5003c4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 27 14:31:40 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 27 15:23:06 2015 -0800"
      },
      "message": "ART: Even more Quick cleanup\n\nRemove Backend.\n\nChange-Id: I247cc65ccda6a362ba1a8f5e73e7f12ecd980a87\n"
    },
    {
      "commit": "827eedbfa882496407375f22b08243a38a5bd53b",
      "tree": "aa4ff781982ffd2f8a95d9a6cdeb1aa28a1f671a",
      "parents": [
        "f90eec005997f98c1a9f874fbbf68414e5f9c766"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 15:18:36 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 16:02:35 2015 +0000"
      },
      "message": "Move code around and address growable_array comment.\n\n- Move SideEffectsAnalysis to its own file.\n- Move most of gvn.h to gvn.cc.\n- Don\u0027t call Resize in GrowableArray constructor, but just set num_used\n  directly.\n\nChange-Id: I1f1291207945d678d3c99cc0ec1ec155bcae82f6\n"
    },
    {
      "commit": "86dde1658a1951c251dd5c6ff21ecc5c281879a6",
      "tree": "ac28ec3a686fb4e9809123d8bfcdd0096b2426fb",
      "parents": [
        "2dadc9df0ffb822870a150f81257792b83241c77"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 12:54:33 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 14:44:57 2015 +0000"
      },
      "message": "Introduce a SideEffectsAnalysis class.\n\nLICM also needs the side effects information of loops, so move\nthe GVN::ComputeSideEffects method into its own analysis class.\n\nChange-Id: I810c8230a0eb6b9b536e8f808e17a3a4ad72f7db\n"
    },
    {
      "commit": "d97dc40d186aec46bfd318b6a2026a98241d7e9c",
      "tree": "5cf0257eda25e2722a1adafb9de22690c06a56d8",
      "parents": [
        "c698b78a17043d8898deb817098181595fbe734e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 22 13:50:01 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 23 09:20:42 2015 +0000"
      },
      "message": "Support callee save floating point registers on x64.\n\n- Share the computation of core_spill_mask and fpu_spill_mask\n  between backends.\n- Remove explicit stack overflow check support: we need to adjust\n  them and since they are not tested, they will easily bitrot.\n\nChange-Id: I0b619b8de4e1bdb169ea1ae7c6ede8df0d65837a\n"
    },
    {
      "commit": "e7fd3e3a8e7f10048b7ea558cc525331c97bbefa",
      "tree": "a5d1a942460fe34c82f3dce7846d004b90ebd08d",
      "parents": [
        "606a81aab3b9289d37d828375793020b93718c6a",
        "cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 20 12:28:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 20 12:28:11 2015 +0000"
      },
      "message": "Merge \"Add implicit null checks for the optimizing compiler\""
    },
    {
      "commit": "9ee66183d8e046ea661f642ba884626f16b46e06",
      "tree": "d400690c920b0857dafd06efd3db6336c9eeba5b",
      "parents": [
        "36740379b9b1c81b7eb06ea9c9df411d0a9a765e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 16 12:35:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 19 09:29:40 2015 +0000"
      },
      "message": "Constant fold after inlining.\n\n- Inlining opens up new opportunities for constant folding.\n- Fix a bug in constant folder where the result type was not\n  correctly set for the folding of a HCompare.\n- Improve graph checker\u0027s coverage.\n\nChange-Id: I0943bf8ff65505c4addc4a555a526b55e00b5268\n"
    },
    {
      "commit": "cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f",
      "tree": "0d83e9fdf65bded684d6e836078f253e63b7e11f",
      "parents": [
        "12c03ac7575db242a6f35739bb459e8277115da4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jan 08 17:35:35 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 16 17:27:03 2015 +0000"
      },
      "message": "Add implicit null checks for the optimizing compiler\n\n- for backends: arm, arm64, x86, x86_64\n- fixed parameter passing for CodeGenerator\n- 003-omnibus-opcodes test verifies that NullPointerExceptions work as\nexpected\n\nChange-Id: I1b302acd353342504716c9169a80706cf3aba2c8\n"
    },
    {
      "commit": "71fb52fee246b7d511f520febbd73dc7a9bbca79",
      "tree": "444d91e910433aaf887bbdada28dfaa3160bebc2",
      "parents": [
        "420457e6040184a6e1639a4c84fcc8e237bd8a3d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 29 17:43:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:21:11 2015 -0800"
      },
      "message": "ART: Optimizing compiler intrinsics\n\nAdd intrinsics infrastructure to the optimizing compiler.\n\nAdd almost all intrinsics supported by Quick to the x86-64 backend.\nFurther intrinsics require more assembler support.\n\nChange-Id: I48de9b44c82886bb298d16e74e12a9506b8e8807\n"
    },
    {
      "commit": "866c03125a3fcd74c9fff04da87865f5eb1767d9",
      "tree": "497bafc21358961524a6ef9bb045d522b91d8d27",
      "parents": [
        "07ab4ec97221d882322a1ce064557202150f44ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 13 21:21:31 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 13 21:21:31 2015 +0000"
      },
      "message": "ART: dex2oat flag for HGraphVisualizer dump file\n\nThis patch adds a new \u0027--dump-cfg\u003d\u003cfile\u003e\u0027 flag to dex2oat which\nspecifies the file that HGraphVisualizer will store its output into.\nUntil now the graph was dumped to \u0027art.cfg\u0027 in the current working\ndirectory. To make Checker work with run-test, the output directory\nneeds to be customizable.\n\nChange-Id: I4a940f7708b88deea5a0e51d13aed13e52199349\n"
    },
    {
      "commit": "6e73272f093e9dc045c08baae57eebb5dcd6e044",
      "tree": "bffd41529429f9b654ab6824c368191dd5e97719",
      "parents": [
        "54953dfdcb3bb8896d8af2d20adef84fb740ce77"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 13 19:11:14 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 13 19:11:14 2015 +0000"
      },
      "message": "Revert \"ART: dex2oat flag for HGraphVisualizer dump file\"\n\nBreaks compilation of tests.\n\nThis reverts commit 54953dfdcb3bb8896d8af2d20adef84fb740ce77.\n\nChange-Id: I868b876c3130be61f1169c5fccdffc0368bee11e\n"
    },
    {
      "commit": "54953dfdcb3bb8896d8af2d20adef84fb740ce77",
      "tree": "5ffa9718d1f20c27fceaff95a1da0558d5d20321",
      "parents": [
        "8fccea249b1a6f1469eeea42c2b2cca06ce1c70d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 13 18:07:00 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 13 18:07:00 2015 +0000"
      },
      "message": "ART: dex2oat flag for HGraphVisualizer dump file\n\nThis patch adds a new flag to dex2oat which allows to specify the\nname of the file that HGraphVisualizer will store its output into.\nUntil now the graph was dumped to \"art.cfg\" in the current working\ndirectory. To make Checker work with run-test, the output directory\nneeds to be customizable.\n\nChange-Id: I395c518b987e594e89e5e80f202a96befa41ac20\n"
    },
    {
      "commit": "12df9ebf72255544b0147c81b1dca6644a29764e",
      "tree": "93a47865d0c93922cfc036fba1f2490b64549912",
      "parents": [
        "4270e74152d8a7cd979ab5a92fe2a8f84adb8a42"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 09 14:53:50 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 12 08:49:25 2015 +0000"
      },
      "message": "Move code around in OptimizingCompiler::Compile to reduce stack space.\n\nAlso fix an (intentional) memory leak, by allocating the CodeGenerator\non the heap instead of the arena: they construct an Assembler object\nthat requires destruction.\n\nBUG:18787334\n\nChange-Id: I8cf0667cb70ce5b14d4ac334bd4487a562635f1b\n"
    },
    {
      "commit": "3416601a9e9be81bb7494864287fd3602d18ef13",
      "tree": "dd228519bfb9733aa7627b9cea81ecb28974a1ab",
      "parents": [
        "8558375377946aabbbda6ab584e13f754590bd89"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 19 17:22:29 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 05 16:25:59 2015 +0000"
      },
      "message": "Look at instruction set features when generating volatiles code\n\nChange-Id: Ia882405719fdd60b63e4102af7e085f7cbe0bb2a\n"
    },
    {
      "commit": "e21dc3db191df04c100620965bee4617b3b24397",
      "tree": "2ad762c6afb024bf95e1eced3d584649a4d57d23",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 08 16:59:43 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 22 10:01:27 2014 -0800"
      },
      "message": "ART: Swap-space in the compiler\n\nIntroduce a swap-space and corresponding allocator to transparently\nswitch native allocations to memory backed by a file.\n\nBug: 18596910\n\n(cherry picked from commit 62746d8d9c4400e4764f162b22bfb1a32be287a9)\n\nChange-Id: I131448f3907115054a592af73db86d2b9257ea33\n"
    },
    {
      "commit": "ee690a3dd364c025ebc1767d9f84097bb7473eec",
      "tree": "9fe546eba2c7be93017188b376789281f7b32aa9",
      "parents": [
        "3fea27b5f956a08b5b01f873b807fac98a5cc1f6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 01 17:04:16 2014 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 17 15:46:21 2014 +0000"
      },
      "message": "ART: Added Checker, a pattern matching test engine\n\nThis patch adds a Python script which implements a domain-specific\nmini-language similar to that of LLVM\u0027s FileCheck. It is primarily\nintended for writing tests for the optimizing compiler but could be\nconfigured for other use cases too. It is implemented from scratch in\norder to avoid dependency on LLVM.\n\nChecker tests are written in Java and dex2oat is invoked with a flag\nwhich dumps the CFG before and after each pass of the optimizing\ncompiler. The output is then compared against assertions in the\ntest\u0027s comments parsed by Checker. See comments in tools/checker.py\nfor more details about the currently supported language features.\n\nThis initial CL implements only one type of assertion - whether the\noutput contains lines matching a desired pattern in the given order -\nbut supports both plain text and regex matching and allows for\nequivalency testing by matching for the outcome of a previous match.\nSee the tests in compiler/optimizing/test/ConstantFolding.java for\nexamples.\n\nChange-Id: I1ad7431b399c38dc0391ccee74d2c643ba0b0675\n"
    },
    {
      "commit": "e53798a7e3267305f696bf658e418c92e63e0834",
      "tree": "8979bbed96b107a5a6bbae9285ff4e0c362dad95",
      "parents": [
        "e6c0cdd11097dd72275ac24f1e98217c299d973e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 01 10:31:54 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 15 22:52:27 2014 +0000"
      },
      "message": "Inlining support in optimizing.\n\nCurrently only inlines simple things that don\u0027t require an\nenvironment, such as:\n- Returning a constant.\n- Returning a parameter.\n- Returning an arithmetic operation.\n\nChange-Id: Ie844950cb44f69e104774a3cf7a8dea66bc85661\n"
    },
    {
      "commit": "37cbe23bf1d183b63ddae1ca5e4fe9a84d3f2061",
      "tree": "e934fa1ef20c2294d087a82fe1e8c85db6911c1d",
      "parents": [
        "4de14bbf154daeacafaa60b12a0b855adb0f3705",
        "48c2b03965830c73cdddeae8aea8030f08430137"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 15 16:05:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 15 16:05:53 2014 +0000"
      },
      "message": "Merge \"Add more compilation stats to optimizing\""
    },
    {
      "commit": "48c2b03965830c73cdddeae8aea8030f08430137",
      "tree": "56cf034739095c71a175fa97205ed6dc76efbe0d",
      "parents": [
        "d2ec87d84057174d4884ee16f652cbcfd31362e9"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 09 18:11:36 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Dec 10 16:27:08 2014 +0000"
      },
      "message": "Add more compilation stats to optimizing\n\nOptimizing is getting closer to have full coverage and this provides a\nnice overview on why certain methods are not compiled/optimized.\n\nAlso, clean up some of the builder methods.\n\nChange-Id: Id2f31441a788b797b0efea7ec78bee27bb654186\n"
    },
    {
      "commit": "376b2bbf7c39108223a7a01568a7b4b04d84eeac",
      "tree": "f6fdbe6180c3d330bc24aa35a7d9fa51f3eb1c55",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 14:26:32 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 14:49:02 2014 +0000"
      },
      "message": "Ensure stack maps are 4 byte aligned.\n\nWith the recent move to gcc 4.9, we are hitting alignment\nSIGBUS on ARM. The reason is that gcc will optimize two consecutive\n32bits loads into one 64bits load, and the instruction (ldrd)\nwill fail if the data is not aligned.\n\nAlso removed the emission of mapping table when a method is optimized.\nThe information can be found in the StackMap itself.\n\nChange-Id: Icf79406c18a3f4db3c05d52fc2c0dd2e35bf0f8f\n"
    },
    {
      "commit": "f384f88d4d1e89df82f47fbc7245a8acc9c2d49c",
      "tree": "11c1b7094ca95fda08feba3ee9f8622b096e327d",
      "parents": [
        "8b9a97e8b6ed97ff1991596cbd0f7ce78f004766"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Oct 22 16:08:18 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Dec 03 15:39:21 2014 -0800"
      },
      "message": "Bounds check elimination.\n\nChange-Id: Ia0d6a4226c1f9f1ff1dd35347a38db1dc4265319\n"
    },
    {
      "commit": "383993c1dc58c13f7570b9945037d6f83094785b",
      "tree": "c0c4c601964e4c37011f133ea70b3a7da7b00271",
      "parents": [
        "68af004aa1e8c82ddb503261c5e3080238e77b59",
        "43a539f780af20a1854bca81c3d4835a585f0620"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 02 12:41:26 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 02 12:41:26 2014 +0000"
      },
      "message": "Merge \"Add some heursitics for compiling, close to Quick\u0027s.\""
    },
    {
      "commit": "f537012ceb6cba8a78b36a5065beb9588451a250",
      "tree": "08851014d687b0e08accfdc2f1553a89789b4fd4",
      "parents": [
        "10a573a1f8708dbe2bcb7835341cbd8e9606af63"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 02 11:51:19 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 02 12:24:07 2014 +0000"
      },
      "message": "Treat SSA transformation special, as we may have to bailout.\n\nWe forgot to bailout when we found a non-natural loop (on which\nour optimizations don\u0027t work).\n\nChange-Id: I11976b5af4c98f4f29267a74c74d34b5ad81e20c\n"
    },
    {
      "commit": "43a539f780af20a1854bca81c3d4835a585f0620",
      "tree": "241042d7f40dab9fbf24560624b6e8ddfe9c066e",
      "parents": [
        "05d5810c2b20ac83da82cef9a9677884af81147d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 02 10:19:51 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 02 10:26:17 2014 +0000"
      },
      "message": "Add some heursitics for compiling, close to Quick\u0027s.\n\nQuick has more machinery to give up/not give up, but we can\nbackport them later.\n\nChange-Id: I5eb62c664246f4ce46f0400cf24ec34a72afb51e\n"
    },
    {
      "commit": "37b55ebd45a2f4514bee3e111bd49c06751da49d",
      "tree": "21dd1ccc835b0546e8526492f34b7b53d1812b0c",
      "parents": [
        "05d5810c2b20ac83da82cef9a9677884af81147d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 01 22:09:43 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 01 22:09:43 2014 +0000"
      },
      "message": "Don\u0027t run optimizations after baseline.\n\nWe have enough coverage now. This was also motivated\nby having to call RunOptimizations instead, which does invoke\nInstructionSimplifier, required by the code generators (for, e.g.\nremoving useless HTypeConversion nodes).\n\nChange-Id: I4e616dae771b8ced60e1f418e3da834f44edb717\n"
    },
    {
      "commit": "3159674c0863f53cfbc1913d493550221ac47f02",
      "tree": "5dc34e8da8dc695cf80040ba0dbc5312060c10c1",
      "parents": [
        "4d3ed1a6f34bd31ed30faaca0433cf2a4b19bb7b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 24 15:28:45 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 25 00:55:07 2014 +0000"
      },
      "message": "Fix a bug in the type analysis phase of optimizing.\n\nDex code can lead to the creation of a phi with one\nfloat input and one integer input. Since the SSA builder trusts\nthe verifier, it assumes that the integer input must be converted\nto float. However, when the register is not used afterwards, the\nverifier hasn\u0027t ensured that. Therefore, the compiler must remove\nthe phi prior to doing type propagation.\n\nChange-Id: Idcd51c4dccce827c59d1f2b253bc1c919bc07df5\n"
    },
    {
      "commit": "6a0ac5ccf160e158942d49168d819fb76f887fa3",
      "tree": "d65593edb2b304167b2356342c7aee4bc366af88",
      "parents": [
        "79cff5821816dd8aa0d5f0566346050493e82a61",
        "5e6916cea259897baaca019c5c7a5d05746306ed"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 19 14:41:15 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 19 14:41:16 2014 +0000"
      },
      "message": "Merge \"Use HOptimization abstraction for running optimizations.\""
    },
    {
      "commit": "5e6916cea259897baaca019c5c7a5d05746306ed",
      "tree": "0b4c73776c68e9ccbf4b49dbff5cdc9b3d7150f9",
      "parents": [
        "bf75c5cf32a47eecadcc5e4a324237c1f1d09cde"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 18 16:53:35 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 19 14:33:12 2014 +0000"
      },
      "message": "Use HOptimization abstraction for running optimizations.\n\nMove existing optimizations to it.\n\nChange-Id: I3b43f9997faf4ed8875162e3a3abdf99375478dd\n"
    },
    {
      "commit": "4179cc148734fbda4677846369ae4a4db68677bf",
      "tree": "9cc014188747288d60e7f695bb2210861b563bbc",
      "parents": [
        "255a5bde2f0014dc86a564555106a4291c0867b4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 19 08:35:17 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 19 08:35:17 2014 +0000"
      },
      "message": "Use cross-compilation helper.\n\nThe default method uses the current pointer size. We should\nuse the pointer size given to the compiler.\n\nChange-Id: I4d6bacad6c17ac715455cabfc89cc651368d07a5\n"
    },
    {
      "commit": "e2dc6fa7aa319ee892d6ed407c986c5a3ec3dcd7",
      "tree": "41d82c18b61d93fa49615aa27c31fdc78b34f920",
      "parents": [
        "610b21cc7f62c61fcb7d88c1ffcc74bfa9ca5ef8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 17 12:55:12 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 17 18:10:48 2014 +0000"
      },
      "message": "Don\u0027t fall back to Quick in optimizing.\n\nThe compiler can now have a life of its own.\n\nChange-Id: I804638c574d1a37299fa8427a3fd10d627d2844e\n"
    },
    {
      "commit": "af07bc121121d7bd7e8329c55dfe24782207b561",
      "tree": "51e93225aa77c3949a63104f8d48e4b6f6fb2b5b",
      "parents": [
        "d0d805bad888857fe974142cbf3292b9747daae3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 12 18:08:09 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 14 13:45:02 2014 +0000"
      },
      "message": "Minor object store optimizations.\n\n- Avoid emitting write barrier when the value is null.\n- Do not do a typecheck on an arraystore when storing something that\n  was loaded from the same array.\n\nChange-Id: I902492928692e4553b5af0fc99cce3c2186c442a\n"
    },
    {
      "commit": "de58ab2c03ff8112b07ab827c8fa38f670dfc656",
      "tree": "c872bfbcad1e90845008140bbddcc43e56dc19d2",
      "parents": [
        "3ed86e4e98dfe1b05c9a03aa2aee42c145a018c3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 05 12:46:03 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 06 16:49:52 2014 +0000"
      },
      "message": "Implement try/catch/throw in optimizing.\n\n- We currently don\u0027t run optimizations in the presence of a try/catch.\n- We therefore implement Quick\u0027s mapping table.\n- Also fix a missing null check on array-length.\n\nChange-Id: I6917dfcb868e75c1cf6eff32b7cbb60b6cfbd68f\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "b5f62b3dc5ac2731ba8ad53cdf3d9bdb14fbf86b",
      "tree": "fb2d33e43de1476af33112f263fd3c3a775917d0",
      "parents": [
        "29ce77f654412dbb5fb3d5949da4053952917101"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 30 10:58:41 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 31 12:21:53 2014 +0000"
      },
      "message": "Support for CONST_STRING in optimizing compiler.\n\nChange-Id: Iab8517bdadd1d15ffbe570010f093660be7c51aa\n"
    },
    {
      "commit": "1ba0f596e9e4ddd778ab431237d11baa85594eba",
      "tree": "c1d51616adf4d98aab3ebccf47ad5146635cb87f",
      "parents": [
        "1ef3495abfa2a858b3cc7a1844383c8e7dff0b60"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 27 15:14:55 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 27 17:20:35 2014 +0000"
      },
      "message": "Support hard float on arm in optimizing compiler.\n\nAlso bump oat version, needed after latest hard float switch.\n\nChange-Id: Idf5acfb36c07e74acff00edab998419a3c6b2965\n"
    },
    {
      "commit": "5667fdbb6e441dee7534ade18b628ed396daf593",
      "tree": "a06fe0a79b3465571556d13f509daf1f664fc614",
      "parents": [
        "b62ff579cd870b0bf213765b07d7b404d15ece7b"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Thu Oct 23 18:29:55 2014 +0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 16:27:22 2014 -0700"
      },
      "message": "ARM: Use hardfp calling convention between java to java call.\n\nThis patch default to use hardfp calling convention. Softfp can be enabled\nby setting kArm32QuickCodeUseSoftFloat to true.\n\nWe get about -1 ~ +5% performance improvement with different benchmark\ntests. Hopefully, we should be able to get more performance by address the left\nTODOs, as some part of the code takes the original assumption which is not\noptimal.\n\nDONE:\n1. Interpreter to quick code\n2. Quick code to interpreter\n3. Transition assembly and callee-saves\n4. Trampoline(generic jni, resolution, invoke with access check and etc.)\n5. Pass fp arg reg following aapcs(gpr and stack do not follow aapcs)\n6. Quick helper assembly routines to handle ABI differences\n7. Quick code method entry\n8. Quick code method invocation\n9. JNI compiler\n\nTODO:\n10. Rework ArgMap, FlushIn, GenDalvikArgs and affected common code.\n11. Rework CallRuntimeHelperXXX().\n\nChange-Id: I9965d8a007f4829f2560b63bcbbde271bdcf6ec2\n"
    },
    {
      "commit": "5319defdf502fc4569316473846b83180ec08035",
      "tree": "909c6b29f065c79c8368a283946947cbb582d1c7",
      "parents": [
        "37a7188810e865a1ee0a7bdc2d01d62c1f1ea49e"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Oct 23 10:03:10 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 23 13:44:42 2014 +0100"
      },
      "message": "ART: optimizing compiler: initial support for ARM64.\n\nThe ARM64 port uses VIXL for code generation, to which it defers work\nlike label binding and branch resolving, register type coherency\nchecking, and immediate values handling.\n\nChange-Id: I0a44508c0c991f472a63e67b3469cdd878fe1a68\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\nSigned-off-by: Alexandre Rames \u003calexandre.rames@arm.com\u003e\n"
    },
    {
      "commit": "75be28332b278cff9039b54bfb228ac72f539ccc",
      "tree": "a01829ba0412d0f6637a833b41694f0d757d8f43",
      "parents": [
        "ffb078ee815a38123581e706099a3bed65a6cb24"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 17 17:02:00 2014 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 17 17:11:43 2014 +0100"
      },
      "message": "Revert \"Revert \"Introduce a class to implement optimization passes.\"\"\n\nThis reverts commit 1ddbf6d4b37979a9f11a203c12befd5ae8b65df4.\n\nChange-Id: I110a14668d1564ee0604dc958b91394b40da89fc\n"
    },
    {
      "commit": "26a25ef62a13f409f941aa39825a51b4d6f0f047",
      "tree": "aa0ed991cfcea17297e85f74624a44e32e8913cf",
      "parents": [
        "17b1c174dddb1d83018740c2084ab42daa812fff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 30 13:54:09 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 06 18:52:56 2014 +0100"
      },
      "message": "Add a prepare for register allocation pass.\n\n- Currently the pass just changes the uses of checks to the\n  actual values.\n- Also optimize array access, now that inputs can be constants.\n- And fix another bug in the register allocator reveiled by\n  this change.\n\nChange-Id: I43be0dbde9330ee5c8f9d678de11361292d8bd98\n"
    },
    {
      "commit": "1ddbf6d4b37979a9f11a203c12befd5ae8b65df4",
      "tree": "2bc48925657e791441aa947d4d629994a0696e78",
      "parents": [
        "bf9cd7ba2118a75f5aa9b56241c4d5fa00dedeb8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 01 14:59:23 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 01 14:59:23 2014 +0000"
      },
      "message": "Revert \"Introduce a class to implement optimization passes.\"\n\nThis reverts commit bf9cd7ba2118a75f5aa9b56241c4d5fa00dedeb8.\n\nChange-Id: I0a483446666c9c24c45925a5fc199debdefd8b3e\n"
    },
    {
      "commit": "bf9cd7ba2118a75f5aa9b56241c4d5fa00dedeb8",
      "tree": "0bd049b173d23fcaed5c1b5cb4299e8faef840da",
      "parents": [
        "34bb808affbed7a1db177b9ef4ab5461c2b2106b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Sep 30 16:15:14 2014 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 01 11:52:58 2014 +0100"
      },
      "message": "Introduce a class to implement optimization passes.\n\n- Add art::HOptimization.\n- Rename art::ConstantPropagation to art::HConstantFolding in\n  compiler/optimizing/constant_folding.h to avoid name\n  clashes with a class of the same name in\n  compiler/dex/post_opt_passes.h.\n- Rename art::DeadCodeElimination to\n  art::HDeadCodeElimination for consistency reasons.\n- Have art::HDeadCodeElimination and art::HConstantFolding\n  derive from art::HOptimization.\n- Start to use these optimizations in\n  art:OptimizingCompiler::TryCompile.\n\nChange-Id: Iaab350c122d87b2333b3760312b15c0592d7e010\n"
    },
    {
      "commit": "3c04974a90b0e03f4b509010bff49f0b2a3da57f",
      "tree": "52649104e3e80272c3774793350f4d9f260ae732",
      "parents": [
        "c0d36abb12cdbb9469039c1dc153a586bd984015"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 24 18:10:46 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 25 12:23:40 2014 +0100"
      },
      "message": "Optimize suspend checks in optimizing compiler.\n\n- Remove the ones added during graph build (they were added\n  for the baseline code generator).\n- Emit them at loop back edges after phi moves, so that the test\n  can directly jump to the loop header.\n- Fix x86 and x86_64 suspend check by using cmpw instead of cmpl.\n\nChange-Id: I6fad5795a55705d86c9e1cb85bf5d63dadfafa2a\n"
    },
    {
      "commit": "d31cf3d55a0847c018c4eaa2b349b8eea509de64",
      "tree": "2594116391a59c1fce83c5cbd9058ba76534fec0",
      "parents": [
        "e07d111b9bff8b68b8d0ed44fb95805a5c6f47fb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 08 17:30:24 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 19 13:59:39 2014 +0100"
      },
      "message": "First optimization in new compiler: simple GVN.\n\nChange-Id: Ibe0efa4e84fd020a53ded310a92e0b4363f91b12\n"
    },
    {
      "commit": "ce71ae7daca2e9ae4eec42d7445013c37d96e385",
      "tree": "3f39c8f4a82cb4b6f2ee48c1e8ac04ec8f4f0256",
      "parents": [
        "d41491adb23764f28a80cbb7f2bd7af6491cd892"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 18 11:31:32 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 18 11:31:32 2014 +0100"
      },
      "message": "It can be that no method has been compiled.\n\nTherefore do not divide by 0, but log it.\n\nChange-Id: Iee7760ab7f31c73e90d62387e5fb6fb7aa2c56e2\n"
    },
    {
      "commit": "88157efc1e16707d4ae10775d4acb15121c50fe7",
      "tree": "37934ec3933ca89224a674b13f5dc3415a06786a",
      "parents": [
        "bace0378d720a1d2938ec7f6be17e2814671d20a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 12 10:29:53 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 17 11:02:37 2014 +0100"
      },
      "message": "Add the \"time\" compilation filter and output compilation stats.\n\nA \"time\" compiler filter means the compiler optimizes for\ncompile time.\n\nChange-Id: Id1a207ceb2d95f3548aae5e45d51b80695da2029\n"
    },
    {
      "commit": "3946844c34ad965515f677084b07d663d70ad1b8",
      "tree": "0d85bfba2ff69c34a2897351d1e50a1464509305",
      "parents": [
        "e2c23739c6395a83b30ece38f8a2e9e1bf7cf3ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 02 15:17:15 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 08 12:15:07 2014 +0100"
      },
      "message": "Runtime support for the new stack maps for the opt compiler.\n\nNow most of the methods supported by the compiler can be optimized,\ninstead of using the baseline.\n\nChange-Id: I80ab36a34913fa4e7dd576c7bf55af63594dc1fa\n"
    },
    {
      "commit": "53c913bb71b218714823c8c87a1f92830c336f61",
      "tree": "96aebfc9ae62eb1454b78286236567e2b6f3e5c7",
      "parents": [
        "e18aa4316eb9a15cd6b1051f27a1ce49967c170e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 12 23:19:23 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 21:20:08 2014 -0700"
      },
      "message": "ART: Clean up compiler\n\nClean up the compiler: less extern functions, dis-entangle\ncompilers, hide some compiler specifics, lower global includes.\n\nChange-Id: Ibaf88d02505d86994d7845cf0075be5041cc8438\n"
    },
    {
      "commit": "e3ea83811d47152c00abea24a9b420651a33b496",
      "tree": "dd3b8018176ada85d51b2f8ca46e515fbf55b50f",
      "parents": [
        "9dcf75c80187504ec88e7ef91d64a6a68279eb9d"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Fri Aug 08 16:29:38 2014 +0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Aug 15 15:04:12 2014 -0700"
      },
      "message": "ART source line debug info in OAT files\n\nOAT files have source line information enough for ART runtime needs like\njump to/from interpreter and thread suspension. But this information\nis not enough for finer grained source level debugging and low-level\nprofiling (VTune or perf).\n\nThis patch adds to OAT files two additional sections:\n.debug_line - DWARF formatted Elf32 section with detailed source line\n              information (mapping from native PC to Java source lines).\n\nIn addition to the debugging symbols added using the dex2oat option\n--include-debug-symbols, the source line information is added to\nthe section .debug_line.\n\nThe source line info can be read by many Elf reading tools like objdump,\nreadelf, dwarfdump, gdb, perf, VTune, ...\n\ngdb can use this debug line information in x86. In 64-bit mode\nthe information can be used if the oat file is mapped in the lower\naddress space (address has higher 32 bits zeroed). Relocation works.\n\nTesting:\n1. art/test/run-test --host --gdb [--64] 001-HelloWorld\n2. in gdb: break Main.java:19\n3. in gdb: break Runtime.java:111\n4. in gdb: run  - stops at void java.lang.Runtime.\u003cinit\u003e()\n5. in gdb: backtrace  - shows call stack down to main()\n6. in gdb: continue - stops at void Main.main() (only in 32-bit mode)\n7. in gdb: backtrace  - shows call stack down to main()\n8. objdump -W \u003coat-file\u003e - addresses are from VMA range of .text\n   section reported by objdump -h \u003cfile\u003e\n9. dwarfdump -ka \u003coat-file\u003e - no errors expected\n\nSize of aosp-x86-eng boot.oat increased by 11% from 80.5Mb to 89.2Mb\nwith two sections added .debug_line (7.2Mb) and .rel.debug (1.5Mb).\n\nChange-Id: Ib8828832686e49782a63d5529008ff4814ed9cda\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\n"
    },
    {
      "commit": "8d486731559ba0c5e12c27b4a507181333702b7e",
      "tree": "78d19970d33511d6a1c54560801d5c5dcc0c47af",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 16 16:23:40 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 16 17:55:38 2014 +0100"
      },
      "message": "Use the thumb2 assembler for the optimizing compiler.\n\nChange-Id: I2b058f4433504dc3299c06f5cb0b5ab12f34aa82\n"
    },
    {
      "commit": "7dc206a53a42a658f52d5cb0b7e79b47da370c9b",
      "tree": "f9940f60c132795d2f5865ba84b942916f076313",
      "parents": [
        "1cad41d900201422cedcbe7837935d17bbf28ed8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 11 09:49:49 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 14 12:35:21 2014 +0100"
      },
      "message": "Add two phi pruning phases.\n\nChange-Id: Ic4f05e3df96970d78a6938b27cdf9b58ef3849b9\n"
    },
    {
      "commit": "e50383288a75244255d3ecedcc79ffe9caf774cb",
      "tree": "8858489463a57c7b50f7db4d972abec21302b7a7",
      "parents": [
        "cf90ba7ebe00346651f3b7ce1e5b1f785f7caabd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 04 09:41:32 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 14 10:06:11 2014 +0100"
      },
      "message": "Support fields in optimizing compiler.\n\n- Required support for temporaries, to be only used by baseline compiler.\n- Also fixed a few invalid assumptions around locations and instructions\n  that don\u0027t need materialization. These instructions should not have an Out.\n\nChange-Id: Idc4a30dd95dd18015137300d36bec55fc024cf62\n"
    }
  ],
  "next": "8fb5ce3a7e1dec587642f900be86729c10224174"
}
