)]}'
{
  "log": [
    {
      "commit": "3ff386aafefd5282bb76c8a50506a70a4321e698",
      "tree": "5f6e990553daae150a168f581bac79e659f7f712",
      "parents": [
        "0307b5c91c287e08cd414ecc5de32befceb7e371"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 14:46:47 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 10 11:41:22 2014 +0000"
      },
      "message": "Add register support to the optimizing compiler.\n\nAlso make if take an input and build the use list for instructions.\n\nChange-Id: I1938cee7dce5bd4c66b259fa2b431d2c79b3cf82\n"
    },
    {
      "commit": "a03de6dbabbe857deae5b0f1e388fbd3a2420dc2",
      "tree": "2828105f52e2830842d4d62477bd1a613ae6b93f",
      "parents": [
        "d54f3a6219bca6ae018f4395fa0f1254bd4459be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 08 23:37:07 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 08 23:37:07 2014 +0000"
      },
      "message": "Revert \"Revert \"Make clang the default compiler on host.\"\"\n\nThis reverts commit d54f3a6219bca6ae018f4395fa0f1254bd4459be.\n\nChange-Id: Id96bb52a0d599f8848010d1589bdf0f70fc7124b\n"
    },
    {
      "commit": "d54f3a6219bca6ae018f4395fa0f1254bd4459be",
      "tree": "6d9e7470f3143917c932671edc5896ea5b354f57",
      "parents": [
        "87f8b4cf0c1d6aab3eb5d1e99cc4e7cf175ef772"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 08 07:50:13 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 08 07:50:13 2014 +0000"
      },
      "message": "Revert \"Make clang the default compiler on host.\"\n\nThis reverts commit 87f8b4cf0c1d6aab3eb5d1e99cc4e7cf175ef772.\n\nChange-Id: I91a513042f0f9cf66288a296ad4a3b5da7830c7b\n"
    },
    {
      "commit": "87f8b4cf0c1d6aab3eb5d1e99cc4e7cf175ef772",
      "tree": "2828105f52e2830842d4d62477bd1a613ae6b93f",
      "parents": [
        "a54ece27b9bfd651fc3173bf43ca030652306b6e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 07 14:49:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 07 22:30:41 2014 -0800"
      },
      "message": "Make clang the default compiler on host.\n\nMotivation, GCC\u0027s compiler warnings are inferior to clang\u0027s. -Wthread-safety is\nnot supported by GCC starting with version 4.7. As this change only effects the\nhost, performance issues are an impact on host building and testing alone.\nFix clang gtest building on host with BUILD_HOST_64bit.\nFix clang build regressions caused by unused fields.\nFix x86-64 regression caused by requirement to fire-up quick compiler even in an\ninterpret-only environment. Long-term this code doesn\u0027t belong in the quick\ncompiler.\n\nChange-Id: Ifc2b10177f40d0724cbbf8dab9653ac03cdd1cee\n"
    },
    {
      "commit": "39c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13",
      "tree": "fa777039b3f7c34f3dd322d04307766246526080",
      "parents": [
        "0918614b7434783477e8668df7850a7aaf8d5611"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 28 18:33:52 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 13:42:48 2014 -0800"
      },
      "message": "Make use of profiling information for dex2oat\n\nIf the profile file exists, the compiler driver will read it\nand store the data in an internal map.  Then, when we want to work\nout whether to compile a method or not, the map is consulted and if\nthe method shows up with a high enough percentage of use we compile it.\n\nThe profile file itself is created by installd and is writeable by the\napp.  The file is in /data/dalvik-cache/profiles and is named by\nthe package name.\n\nThis also modifies the profiler itself to:\n\n1. Only count runnable threads (not suspended threads) in the profile\n2. Use system properties to allow tuning of the profile parameters\n3. Merge profiles from multiple processes using file locking.\n\nBug: 12877748\nChange-Id: Iab2f3a327a2860db2a80d5724277d6c626227f2b\n\nConflicts:\n\tcompiler/dex/frontend.cc\n\tcompiler/dex/mir_analysis.cc\n\tcompiler/dex/verification_results.cc\n\tcompiler/driver/compiler_driver.cc\n\tdex2oat/dex2oat.cc\n\truntime/class_linker.cc\n\truntime/runtime.cc\n\truntime/runtime.h\n"
    },
    {
      "commit": "aa00fe010eb7b61c2de82611ce3f6fc0918a4f9e",
      "tree": "53a1769024151ecd756b20ec4fec5d2733d59c9f",
      "parents": [
        "de46ed1ceb8272e65f780f041b52e7bbc03421d8",
        "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 20:09:48 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 07 20:09:49 2014 +0000"
      },
      "message": "Merge \"Add more VerifyObject calls.\""
    },
    {
      "commit": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b",
      "tree": "de6141864c1c011216c19dd99a2c1e2bc442dd6d",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 18:11:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 12:09:04 2014 -0800"
      },
      "message": "Add more VerifyObject calls.\n\nAdded verify object calls to SirtRef, IndirectReferenceTable,\nReferenceTable.\n\nRemoved un-needed verify object in ScopedObjectAccess / DecodeJObject\nsince object sources are handled.\n\nBug: 12934910\nChange-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125\n"
    },
    {
      "commit": "bd9e9db27b6a38839f1d55fc4ff365e41ea20243",
      "tree": "d647043dc66745d7492758b9e0fc8d660da54c83",
      "parents": [
        "b166d8407622e842eb0dc9302ede01cdea182149"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 07 19:41:05 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 07 19:48:39 2014 +0000"
      },
      "message": "Fix clang errors in ArenaAllocator.\n\nChange-Id: Ib0fa290fd46ff9288f86cda9be2d1c1faf99b964\n"
    },
    {
      "commit": "a24122dc3aaa74b0385bb0ce30959f8a19c4a300",
      "tree": "4c4bf5d689fa856600a35ae9b14d5b49ebb0ec60",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 07 10:18:14 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 07 10:54:06 2014 +0000"
      },
      "message": "Use ScopedArenaAllocator for CacheFieldLoweringInfo pass.\n\nChange-Id: Idcc2edeb865e29b1bc42b108fc58a1f964295317\n"
    },
    {
      "commit": "a9d7be62735e3356cef7e8ed797c519134a17061",
      "tree": "631a2b7985bfdebc99e0b244273700e22036243c",
      "parents": [
        "234897797cf15beb3223dd2a99047add25a42f0a",
        "83cc7ae96d4176533dd0391a1591d321b0a87f4f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 07 10:50:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 07 10:50:35 2014 +0000"
      },
      "message": "Merge \"Create a scoped arena allocator and use that for LVN.\""
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\n"
    },
    {
      "commit": "a7e649d2341039072d02b954338aed3cb6b3638b",
      "tree": "5a6b424ff483ef017d506170e85cd117a85997c4",
      "parents": [
        "8785d615122d4abbd22db702139584e8c472f502",
        "e63a745f26fec5a5b4162fc83f6e88a1f696c30c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 06 18:33:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 06 18:33:59 2014 +0000"
      },
      "message": "Merge \"Make heap reference poisoning work with the interpreter.\""
    },
    {
      "commit": "83cc7ae96d4176533dd0391a1591d321b0a87f4f",
      "tree": "6b3c607119c1dc2850810f8463dfd968c486fba4",
      "parents": [
        "8785d615122d4abbd22db702139584e8c472f502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 18:02:05 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 06 15:37:40 2014 +0000"
      },
      "message": "Create a scoped arena allocator and use that for LVN.\n\nThis saves more than 0.5s of boot.oat compilation time\non Nexus 5.\n\nTODO: Move other stuff to the scoped allocator. This CL\nalone increases the peak memory allocation. By reusing\nthe memory for other parts of the compilation we should\nreduce this overhead.\n\nChange-Id: Ifbc00aab4f3afd0000da818dfe68b96713824a08\n"
    },
    {
      "commit": "befbd5731ecca08f08780ee28a913d08ffb14656",
      "tree": "ee359fc38671950afa91d96bf8c29232a799b628",
      "parents": [
        "97c3d61e46a3678dac848578c686c724ec3397fa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 01:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 01:34:07 2014 -0800"
      },
      "message": "Fix host architecture for 64bit.\n\nAlso, hack x86 assembler for use as a x86-64 trampoline compiler\u0027s assembler.\nImplement missing x86-64 quick resolution trampoline.\nAdd x86-64 to the quick elf writer.\n\nChange-Id: I08216c67014a83492ada12898ab8000218ba7bb4\n"
    },
    {
      "commit": "bf6b92a158053c98b15f4393abb3b86344ec9a20",
      "tree": "93a28d1e01b045a8df23fe5279601496b62af3dd",
      "parents": [
        "359597ee8c0667a7d2c0b74dcbb0f90bb6059bae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 05 16:11:04 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 22:32:53 2014 -0800"
      },
      "message": "Generic JNI implementation for x86_64\n\nStarting implementation for generic JNI on x86_64. Frames are of\nlarge static size (\u003e4K) right now, should be compacted later. Passes\nthe whole of jni_compiler_test.\n\nChange-Id: I88ac3e13a534afe7568d62a1ef97cb766e8260e4\n"
    },
    {
      "commit": "e63a745f26fec5a5b4162fc83f6e88a1f696c30c",
      "tree": "f26e1429c8226c5dde5ee4c361a57754ff46298c",
      "parents": [
        "e26baffe7f9e2a54f276f5c65e48454e413683ba"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 27 14:44:36 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 05 19:20:14 2014 -0800"
      },
      "message": "Make heap reference poisoning work with the interpreter.\n\nIt is disabled by default.\n\nBug: 12687968\nChange-Id: Iee0cad647f341a7b566f4cf74c2770d1c19312c9\n"
    },
    {
      "commit": "359597ee8c0667a7d2c0b74dcbb0f90bb6059bae",
      "tree": "251da13911288d0a89ed1cba316bd94fc1f496e0",
      "parents": [
        "e26baffe7f9e2a54f276f5c65e48454e413683ba",
        "5e754d88c73f1f1fafbbf87d564df000d5a0a12c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 06 02:10:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 06 02:10:22 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Avoid compiling monster methods in boot image\"\"\""
    },
    {
      "commit": "5e754d88c73f1f1fafbbf87d564df000d5a0a12c",
      "tree": "97f90137dfd596aac487ba073f8623263b1522c6",
      "parents": [
        "449fa6e44b220e48dee20f569b46161f3a056add"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 05 10:59:04 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 05 15:38:24 2014 -0800"
      },
      "message": "Revert \"Revert \"Avoid compiling monster methods in boot image\"\"\n\nThis reverts commit f679fab9be8905505d26a62bea257641f0bb0168.\n\n(cherry picked from commit 9d0bdfe63bec5a43d7668d9094a52caf77b6ed53)\n\nChange-Id: I72af1d44483edbd2a5f2e6b678e43f740d4613fd\n"
    },
    {
      "commit": "c8554361e89970ab92a94d1f719553a30d45b86c",
      "tree": "0275debfd06a8611768670a675f8614225a15b30",
      "parents": [
        "77e4cb33f0b311e86b9e350943ce302239108bde",
        "661974a5561e5ccdfbac8cb5d8df8b7e6f3483b8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 05 22:36:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 05 22:37:00 2014 +0000"
      },
      "message": "Merge \"Fix valgrind gtests and memory leaks.\""
    },
    {
      "commit": "661974a5561e5ccdfbac8cb5d8df8b7e6f3483b8",
      "tree": "02e428694277d85a98505f8e814aba378fc7651c",
      "parents": [
        "3cd52df3d740f8a656233b199dfcaab165f415ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 09 11:23:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 05 12:44:22 2014 -0800"
      },
      "message": "Fix valgrind gtests and memory leaks.\n\nAll tests pass other than image_test which passes if some bad reads\nare disabled (buzbee working on this).\n\nChange-Id: Ifd6b6e3aed0bc867703b6e818353a9f296609422\n"
    },
    {
      "commit": "83b96684ec004167693409c5ad6b243ce2fbe591",
      "tree": "e6e452a5bd5957811b0eb3873cc521b02ee431c0",
      "parents": [
        "8b9a8deb04910a2f2485a578ba6808111ed0967a",
        "a44d4f508fa1642294e79d3ebecd790afe75ea60"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 05 20:27:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 05 20:27:34 2014 +0000"
      },
      "message": "Merge \"Fix read of uninitialized memory in InlineIndexOf\""
    },
    {
      "commit": "ed8dd492e43cbaaa435c4892447072c84dbaf2dc",
      "tree": "e93e3d1e7dd6770ec8e2a3ed7105a7305eb2bc4d",
      "parents": [
        "511472b9110d15cf30a205bb514eb98f6afce651"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Tue Feb 11 14:15:10 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 12:14:43 2014 -0800"
      },
      "message": "AArch64: Add ARM64 Assembler\n\nThis patch adds the ARM64 Assembler and ManagedRegister backend.\nThe implementation of the Arm64Assembler class is based on VIXL (a\nprogrammatic A64 Assembler - see external/vixl ).\n\nChange-Id: I842fd574637a953c19631eedf26f6c70d9ed7f9e\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "a44d4f508fa1642294e79d3ebecd790afe75ea60",
      "tree": "980a81f8926acdc304875cbd324ba70895bb1d29",
      "parents": [
        "6f2083d3f909bce3988e71cd80374cee038ecba6"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 05 11:26:39 2014 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 05 11:26:39 2014 -0800"
      },
      "message": "Fix read of uninitialized memory in InlineIndexOf\n\nThe are two flavors of IndexOf that we treat as an intrinsic: a\nzero-based verion with 2 args and a 3-arg version that also takes\na start position.  The same code is used for both, but Valgrind\nreminded us that we shouldn\u0027t try loading a RegLocation for the\nnon-extent 3rd arg in the 2 argument version.\n\nWe got lucky in that the bug was benign - the generated code would\nstill be correct.\n\nChange-Id: I0bc7798c8034d35007ffe6d6d62f9ceb91fc44fd\n"
    },
    {
      "commit": "3cd52df3d740f8a656233b199dfcaab165f415ff",
      "tree": "4afa8c91584a5a18c9ac1be9e6ff39d6f1dae97b",
      "parents": [
        "2fecd65be4ce930e15a9d20358d32a650a2442b9",
        "f2b39562f384aa94dfff7e2d226c497f76800004"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 05 15:45:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 05 15:45:10 2014 +0000"
      },
      "message": "Merge \"Fix portable build.\""
    },
    {
      "commit": "2fecd65be4ce930e15a9d20358d32a650a2442b9",
      "tree": "fbcd2e0d71b0b4577553ff93bb890f31bf2e8f42",
      "parents": [
        "83f56a43d85dfdadb07cd6b057c03f4df45af647",
        "d4dd255db1d110ceb5551f6d95ff31fb57420994"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 05 15:42:50 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 05 15:42:51 2014 +0000"
      },
      "message": "Merge \"Add codegen support to the optimizing compiler.\""
    },
    {
      "commit": "c0a1b18ac71ec0ff3ec0cca3cc8db9eb74e50690",
      "tree": "b587b9b0df1969ab4e9d49c0a57c83cbf2c35feb",
      "parents": [
        "c84d2f1d3feb6271ea260947e2a1eb43d64a099b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 23:19:06 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 23:34:23 2014 -0800"
      },
      "message": "Reuse NoopCompilerCallbacks in oatdump\n\nChange-Id: Icb4d3941196c1a236f0184fe4d0b7f5838bc13bd\n"
    },
    {
      "commit": "2ec6520d57479d393bffa05defa1479b25ca8382",
      "tree": "6f5266b53e335c7bf74b52905f64435dd114a18f",
      "parents": [
        "e6031e6fefc8f439b44e284b8563c790ef764c68"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 15:16:37 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 16:53:15 2014 -0800"
      },
      "message": "Support compiler filters for boot classpath\n\nimage_writer.cc\n  Remove assumption that all methods in the boot classpath are compiled\n\noat_writer.cc\n  Don\u0027t skip writing ArtMethod::quick_code_offset_ for methods that need resolution, leave that to ImageWriter\n\ndex2oat.cc\n  Allow dex2dex compilation of image dex files by making the in memory pages writable in all cases, not just app case.\n\noatdump.cc\n  dump new OatHeader fields\n  use ImageSpace.GetImageFilename, not command line image filename, since location may be in dalvik-cache\n  remove inaccurate check about non-null GC map\n\nquick_trampoline_entrypoints.cc\n  add and improve some DCHECKS that were useful while debugging\n\nclass_linker.cc\nimage_space.cc\n  fix double facepalm\n\nparsed_options.cc\n  fix zygote logging to not skip values to two part options like -classpath \u003cfoo\u003e\n\nruntime.cc\n  wireup parsed compiler options to runtime\n\nChange-Id: Iad314df0b80623c0663d61713d5098297ab9ac87\n"
    },
    {
      "commit": "2fece5941f12395a94e742313e7059a9e419994d",
      "tree": "06fda58d44bd5c91e618ab960b77423ddd304d7c",
      "parents": [
        "f8b64c6c452b2ee1c90052124b0af33264028622",
        "9583fbcf597eff6d0b3c5359b8e8d5f70ed82c40"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 16:36:36 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 04 16:36:36 2014 +0000"
      },
      "message": "Merge \"Remove oat file location in the image.\""
    },
    {
      "commit": "9583fbcf597eff6d0b3c5359b8e8d5f70ed82c40",
      "tree": "847912709f811adda0fa63e89e4bf8af27769f2e",
      "parents": [
        "093aad184b4451639951a7e012d9b55cbf8c8a07"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 28 15:21:07 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 16:30:48 2014 +0000"
      },
      "message": "Remove oat file location in the image.\n\nThe oat file is now always in the same directory, and has the\nsame name as the image file. Only difference is the extension.\n\nThis also removes the need for host-prefix.\n\nChange-Id: I16d1f7aeb1d58372d41921694664e9c321afc1ad\n"
    },
    {
      "commit": "d4dd255db1d110ceb5551f6d95ff31fb57420994",
      "tree": "93c9dfff8d16f2b9675c35477cc4bcd8ea3f630c",
      "parents": [
        "b565506a63e75dac4a8bb9dd54dabf5259e5b95f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 28 10:23:58 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 16:19:11 2014 +0000"
      },
      "message": "Add codegen support to the optimizing compiler.\n\nChange-Id: I9aae76908ff1d6e64fb71a6718fc1426b67a5c28\n"
    },
    {
      "commit": "a1a7074eb8256d101f7b5d256cda26d7de6ce6ce",
      "tree": "51f2a2dc6fca540cc404aed3ed64b9aae74f586e",
      "parents": [
        "093aad184b4451639951a7e012d9b55cbf8c8a07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 03 10:28:05 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 04 11:50:09 2014 +0000"
      },
      "message": "Rewrite kMirOpSelect for all IF_ccZ opcodes.\n\nAlso improve special cases for ARM and add tests.\n\nChange-Id: I06f575b9c7b547dbc431dbfadf2b927151fe16b9\n"
    },
    {
      "commit": "093aad184b4451639951a7e012d9b55cbf8c8a07",
      "tree": "1beaa08f9f04dbe1a9072207fbe0befda31f5fe2",
      "parents": [
        "a071575c616f1f8f6d462cc74e04cebf1b7e276d",
        "39d95e695e2ef1fbd420eba6ceaa40c688099c30"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 04 11:46:14 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 04 11:46:14 2014 +0000"
      },
      "message": "Merge \"Remove unreachable catch entries in GenSpecialCase().\""
    },
    {
      "commit": "2da882315a61072664f7ce3c212307342e907207",
      "tree": "67d777be044f5b60e2f13ab7968b63c581904ea9",
      "parents": [
        "762d4e5b9e777ae64c4ba581af9c84b78a5e96a6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 27 12:26:20 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 03 23:27:12 2014 +0000"
      },
      "message": "Initial changes towards Generic JNI option\n\nSome initial changes that lead to an UNIMPLEMENTED. Works\nby not compiling for JNI right now and tracking native methods\nwhich have neither quick nor portable code. Uses new trampoline.\n\nChange-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e\n"
    },
    {
      "commit": "00e1ec6581b5b7b46ca4c314c2854e9caa647dd2",
      "tree": "37abdc2525724308303b6fcd78a86779d8032082",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@android.com",
        "time": "Thu Feb 27 23:44:13 2014 +0000"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 03 13:25:04 2014 -0800"
      },
      "message": "Revert \"Revert \"Rework Quick compiler\u0027s register handling\"\"\n\nThis reverts commit 86ec520fc8b696ed6f164d7b756009ecd6e4aace.\n\nReady.  Fixed the original type, plus some mechanical changes\nfor rebasing.\n\nStill needs additional testing, but the problem with the original\nCL appears to have been a typo in the definition of the x86\ndouble return template RegLocation.\n\nChange-Id: I828c721f91d9b2546ef008c6ea81f40756305891\n"
    },
    {
      "commit": "f796ca0715d0cb6f5afe00b3df00e80f99e186f7",
      "tree": "fd6c9d547ce6b1c8b3877838e93d48a47cc976f5",
      "parents": [
        "45042c09062e23bc7bc7aa5b0ccc66b2c327e6d9",
        "c17ebe866beb50eb6da1e6a47555cb4731467f3b"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@android.com",
        "time": "Mon Mar 03 18:52:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 03 18:52:03 2014 +0000"
      },
      "message": "Merge \"Incorrect result of the \"mul-long by 1\" operation\""
    },
    {
      "commit": "20daf93b38870290e13518ad4db0ccfcd7d9f018",
      "tree": "1246d5f3894491375dbea6c4eeab7b4b3be6194e",
      "parents": [
        "565ba4f80b89082d6d855e16af847b609936cfee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 03 17:34:22 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 03 17:34:22 2014 +0000"
      },
      "message": "Fix 64-bit build DCHECK failure in mir_fieldinfo.cc .\n\nChange-Id: I6021862b42358d4d1bfb8059470da08117a34336\n"
    },
    {
      "commit": "f2b39562f384aa94dfff7e2d226c497f76800004",
      "tree": "260a19b40af2979f1f3ea87ed1bb991a47ffa6af",
      "parents": [
        "cc261bfd336eddac18b85d4eb47f6c905d495241"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 03 15:54:42 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 03 15:54:42 2014 +0000"
      },
      "message": "Fix portable build.\n\nChange-Id: I84f223c6629eaf567ef33cd616dbaf04af7ed0b3\n"
    },
    {
      "commit": "be0e546730e532ef0987cd4bde2c6f5a1b14dd2a",
      "tree": "41aa0541ec85b8e26c5e50cc7341f506f5d52314",
      "parents": [
        "cc261bfd336eddac18b85d4eb47f6c905d495241"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 26 11:24:15 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 03 12:55:45 2014 +0000"
      },
      "message": "Cache field lowering info in mir_graph.\n\nChange-Id: I9f9d76e3ae6c31e88bdf3f59820d31a625da020f\n"
    },
    {
      "commit": "cc261bfd336eddac18b85d4eb47f6c905d495241",
      "tree": "575a2c4b89c0080e80ee17faf8d7b096c01d86e3",
      "parents": [
        "1179b7b770c096e93442b9c6afea4730283256f0",
        "dbb8c49d540edd2a39076093163c7218f03aa502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 03 10:45:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 03 10:45:10 2014 +0000"
      },
      "message": "Merge \"Remove non-existent ARM insn kThumb2SubsRRI12.\""
    },
    {
      "commit": "ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4",
      "tree": "e5f70dc307945fd510660ebde1fd259aecdf66a1",
      "parents": [
        "9fab32265f35c808b216210a8d5bebd931279041"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Feb 10 16:14:35 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 02 11:57:10 2014 -0800"
      },
      "message": "Tell GDB about Quick ART generated code\n\nThis is actually a lot of work.  To do this, we need:\n.debug_info\n.debug_abbrev\n.debug_frame\n.debug_str\n\nThese are generated into the OAT file by OatWriter and ElfWriterQuick.\n\nSince the Quick ART runtime doesn\u0027t use dlopen to load the OAT files,\nGDB can\u0027t find this information.  Use the alternate GDB JIT interface,\nwhich can be invoked at runtime. To use this interface, an ELF image\nneeds to be built in memory.  Read the information from the OAT file,\nfixup the addresses to point to the real locations, add a symbol table\nto hold the .text symbol, and then let GDB know about the information,\nwhich will be read from the runtime address space.\n\nThis is quite primitive now, and could be cleaned up considerably.  It\nprobably needs symbol table entries for the methods, and descriptions of\nparameters and return types.\n\nCurrently only supported for X86.\n\nThis defaults to enabled for debug builds. Added dexoat --gen-gdb-info\nand --no-gen-gdb-info flags to override.\n\nChange-Id: I4d18b2370f6dfaa00c8cc1925f10717be3bd1a62\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "3d504075f7c1204d581923460754bf6d3714b13f",
      "tree": "e095ee11d308f264b3dfb9f4c510f14fe6b1259c",
      "parents": [
        "e4a74a6ac8d1486b1227504044a60002e69a9fec"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 01 09:16:49 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 01 09:16:49 2014 -0800"
      },
      "message": "Make out arguments non-reference types.\n\nAlso, tidy some portable related code.\n\nChange-Id: I67c8aa52eef8b556ca117ecda1b1e75465ba06a5\n"
    },
    {
      "commit": "b48b9eb6d181a1f52e2e605cf26a21505f1d46ed",
      "tree": "117d99c16f201b2f14adfe0922e56b9ff433c133",
      "parents": [
        "3c506f9877b4a106d93169b6bb5610b24a84d61c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 16:20:21 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 19:03:57 2014 -0800"
      },
      "message": "Fix clang to compile and run host tests.\n\nDon\u0027t use the computed goto interpreter with clang 3.4 as it causes compilation\nto hang.\nAvoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it\nsets clang incompatible cflags.\nMost fixes are self-evident, for the quick dex file method inliner the enums\nwere being used with ostreams, so fix the enums and operator out python script\nto allow this.\nNote this change effects portable but this is untestable as portable was broken\nby ELF file and mc linker changes.\n\nChange-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903\n"
    },
    {
      "commit": "dbb8c49d540edd2a39076093163c7218f03aa502",
      "tree": "6dc923e8d79f1c436d1144eb909be5aed8525d07",
      "parents": [
        "1b22ddf2efe48ae1cbcdc34468037eca6072fe5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 28 17:36:39 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 28 17:46:22 2014 +0000"
      },
      "message": "Remove non-existent ARM insn kThumb2SubsRRI12.\n\nFor kOpSub/kOpAdd, prefer modified immediate encodings\nbecause they set flags.\n\nChange-Id: I41dcd2d43ba1e62120c99eaf9106edc61c41e157\n"
    },
    {
      "commit": "39d95e695e2ef1fbd420eba6ceaa40c688099c30",
      "tree": "6d35bc135e6f324d16bd4443c74b930f4133f607",
      "parents": [
        "1b22ddf2efe48ae1cbcdc34468037eca6072fe5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 28 12:51:24 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 28 12:56:42 2014 +0000"
      },
      "message": "Remove unreachable catch entries in GenSpecialCase().\n\nFix debug build CHECK failure when we generate special\nmethod implementation and drop unreachable catch handlers.\n\nBug: 13164331\nChange-Id: I00e9841a2db8acaf1e81e1d9702e155c5b7e72e2\n"
    },
    {
      "commit": "b1f1d642093418612c0a27ce4203b421bb6eb767",
      "tree": "bb30f5246ec96d838e493aadccfc604d305f5a39",
      "parents": [
        "7aa9ac0b25c9f391fd87f72edbf14baab9da918f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 27 12:55:32 2014 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 27 14:51:37 2014 -0800"
      },
      "message": "Workaround for range ops spanning vreg gap\n\nThe Dalvik runtime model includes two stacks: an interpreted stack\nholding the Dalvik virtual registers, and a native stack used by\nthe runtime system itself.  The interpreted stack closely follows\nthe Dalvik byte-code frame layout and invoke model, in which a\ncallee\u0027s incoming argument are physically located in the out region\nof the caller\u0027s frame.  Further, the non-argument vregs of a method\nare contiguous with its in argument region.\n\nThe Art runtime model retains the notion of a callee\u0027s incoming\narguments being physically located in the out region of a caller\u0027s\nframe.  However, because Art uses a single-stack model, a method\u0027s\nincoming argument region is not contiguous with its non-argument\nvirtual register storage.  There is a gap between them that is used\nto store the native return PC of the caller, as well as the callee\nsave register spill region.\n\nThe Dalvik\u0027s bytecode instruction set includes several \"range\"\nformat instructions (invoke-static-range, fill-array-data-range,\netc.).  These instructions define a contiguous range of virtual\nregisters as arguments.  Given the current Dalvik bytecode definition,\nthere is no rule preventing an operand range from spanning the\nincoming argument and normal vregs.  In Dalvik, this would not have\nbeen an issue.  In Art, it adds complexity to correctly copy a\nrange of arguments with a potential gap somewhere in the middle.\n\nWe don\u0027t believe this is a common situation.  This workaround CL\nensures correct behavior by detecting the spanning case and falling\nback to the interpreter.\n\nIf it turns out this is a more common case than expected, compiler\nsupport can be added.  More likely, though, is that we will disallow\nspanning ranges in a future revision of the bytecode (going forward,\nexisting range-spanning bytecode will continue to be supported).\n\nFix for internal tracking bug 13216301\nFix for external bug https://code.google.com/p/android/issues/detail?id\u003d66371\n\nChange-Id: I9562aa5ab0aae8ebf333c8b72caac8a1be33ab3c\n"
    },
    {
      "commit": "b565506a63e75dac4a8bb9dd54dabf5259e5b95f",
      "tree": "7ab5da3f29563c31898614a76132efd7d30959f6",
      "parents": [
        "3d86fbe5413142342554c2414b5b271163ad98fe",
        "0e33643519b68a343a7466dcaba12b8567777cc3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 27 11:00:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 27 11:00:36 2014 +0000"
      },
      "message": "Merge \"Move arena_bit_vector.h/cc to compiler/utils.\""
    },
    {
      "commit": "659d87d4a61f83f5582d816ee0bc94f00e19b46c",
      "tree": "547c08ad5dabfe64e0941bacf9a7ea7bd354aab7",
      "parents": [
        "4f2573b38f7b0bca027d8540c9b22abe8ba7b7bc"
      ],
      "author": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Thu Feb 27 14:23:11 2014 +0700"
      },
      "committer": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Thu Feb 27 14:31:38 2014 +0700"
      },
      "message": "art: Fix build errors for x86_64 target\n\nFixes build issues introduced by multilib, CompilerOptions and ElfFile patches.\n\nChange-Id: Ic05d149e3c7a1e644d0cb50cc7c3599025c90bdf\nSigned-off-by: Dmitry Petrochenko \u003cdmitry.petrochenko@intel.com\u003e\n"
    },
    {
      "commit": "a1ce1fef2d49d1d537776a5308ace7102a815fe5",
      "tree": "a1afe850d9ebd21f4b751eb68e1ec3dc60dab001",
      "parents": [
        "930f7b843ddc6e6530439d3fdb0e2133a6292f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 23:23:58 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 26 13:17:44 2014 -0800"
      },
      "message": "Split up CommonTest into CommonRuntimeTest and CommonCompilerTest\n\nChange-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70\n"
    },
    {
      "commit": "930f7b843ddc6e6530439d3fdb0e2133a6292f1e",
      "tree": "19aab2c810b069df6c7ece3fe341dcde222c9a5b",
      "parents": [
        "d5846e4b9d654c2a31e4affa3c22c835d2f5e2d6",
        "9d04a20bde1b1855cefc64aebc1a44e253b1a13b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 26 19:15:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 26 19:15:05 2014 +0000"
      },
      "message": "Merge \"(Experimental) Add Brooks pointers.\""
    },
    {
      "commit": "86ec520fc8b696ed6f164d7b756009ecd6e4aace",
      "tree": "7314b38ad594ac1360861a62c574ee8e5d892233",
      "parents": [
        "2c1ed456dcdb027d097825dd98dbe48c71599b6c"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@android.com",
        "time": "Wed Feb 26 19:03:09 2014 +0000"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@android.com",
        "time": "Wed Feb 26 19:03:09 2014 +0000"
      },
      "message": "Revert \"Rework Quick compiler\u0027s register handling\"\n\nThis reverts commit 2c1ed456dcdb027d097825dd98dbe48c71599b6c.\n\nChange-Id: If88d69ba88e0af0b407ff2240566d7e4545d8a99\n"
    },
    {
      "commit": "0e33643519b68a343a7466dcaba12b8567777cc3",
      "tree": "1e806496e21c12a8cb3ad83962e0f2ceed13eeda",
      "parents": [
        "504e6997501aa19c7e7973e70f187314af95602c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 26 18:24:38 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 26 18:30:05 2014 +0000"
      },
      "message": "Move arena_bit_vector.h/cc to compiler/utils.\n\nAlso move MIR\u0027s BasicBlock related code from arena_bit_vector.h to\nbit_vector_block_iterator.cc.\n\nChange-Id: I85c224b387d31cf57a1ef1f1a36eaadf22f1c85d\n"
    },
    {
      "commit": "2c1ed456dcdb027d097825dd98dbe48c71599b6c",
      "tree": "280b229d3495c8f7cccd23540144cd142a4dd068",
      "parents": [
        "504e6997501aa19c7e7973e70f187314af95602c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 20 11:48:04 2014 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 26 10:24:52 2014 -0800"
      },
      "message": "Rework Quick compiler\u0027s register handling\n\nFor historical reasons, the Quick backend found it convenient\nto consider all 64-bit Dalvik values held in registers\nto be contained in a pair of 32-bit registers.  Though this\nworked well for ARM (with double-precision registers also\ntreated as a pair of 32-bit single-precision registers) it doesn\u0027t\nplay well with other targets.  And, it is somewhat problematic\nfor 64-bit architectures.\n\nThis is the first of several CLs that will rework the way the\nQuick backend deals with physical registers.  The goal is to\neliminate the \"64-bit value backed with 32-bit register pair\"\nrequirement from the target-indendent portions of the backend\nand support 64-bit registers throughout.\n\nThe key RegLocation struct, which describes the location of\nDalvik virtual register \u0026 register pairs, previously contained\nfields for high and low physical registers.  The low_reg and\nhigh_reg fields are being replaced with a new type: RegStorage.\nThere will be a single instance of RegStorage for each RegLocation.\nNote that RegStorage does not increase the space used.  It is\n16 bits wide, the same as the sum of the 8-bit low_reg and\nhigh_reg fields.\n\nAt a target-independent level, it will describe whether the physical\nregister storage associated with the Dalvik value is a single 32\nbit, single 64 bit, pair of 32 bit or vector.  The actual register\nnumber encoding is left to the target-dependent code layer.\n\nBecause physical register handling is pervasive throughout the\nbackend, this restructuring necessarily involves large CLs with\nlots of changes.  I\u0027m going to roll these out in stages, and\nattempt to segregate the CLs with largely mechanical changes from\nthose which restructure or rework the logic.\n\nThis CL is of the mechanical change variety - it replaces low_reg\nand high_reg from RegLocation and introduces RegStorage.  It also\nincludes a lot of new code (such as many calls to GetReg())\nthat should go away in upcoming CLs.\n\nThe tentative plan for the subsequent CLs is:\n\n   o Rework standard register utilities such as AllocReg() and\n     FreeReg() to use RegStorage instead of ints.\n   o Rework the target-independent GenXXX, OpXXX, LoadValue,\n     StoreValue, etc. routines to take RegStorage rather than\n     int register encodings.\n   o Take advantage of the vector representation and eliminate\n     the current vector field in RegLocation.\n   o Replace the \"wide\" variants of codegen utilities that take\n     low_reg/high_reg pairs with versions that use RegStorage.\n   o Add 64-bit register target independent codegen utilities\n     where possible, and where not virtualize with 32-bit general\n     register and 64-bit general register variants in the target\n     dependent layer.\n   o Expand/rework the LIR def/use flags to allow for more registers\n     (currently, we lose out on 16 MIPS floating point regs as\n     well as ARM\u0027s D16..D31 for lack of space in the masks).\n   o [Possibly] move the float/non-float determination of a register\n     from the target-dependent encoding to RegStorage.  In other\n     words, replace IsFpReg(register_encoding_bits).\n\nAt the end of the day, all code in the target independent layer\nshould be using RegStorage, as should much of the target dependent\nlayer.  Ideally, we won\u0027t be using the physical register number\nencoding extracted from RegStorage (i.e. GetReg()) until the\nNewLIRx() layer.\n\nChange-Id: Idc5c741478f720bdd1d7123b94e4288be5ce52cb\n"
    },
    {
      "commit": "504e6997501aa19c7e7973e70f187314af95602c",
      "tree": "7314b38ad594ac1360861a62c574ee8e5d892233",
      "parents": [
        "ef2cc5a9c6e508a3e8b24d04ca35f7422f27e112",
        "be9a92aa804c0d210f80966b74ef8ed3987f335a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 26 14:01:05 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 26 14:01:06 2014 +0000"
      },
      "message": "Merge \"Add conditional branches, and build dominator tree.\""
    },
    {
      "commit": "be9a92aa804c0d210f80966b74ef8ed3987f335a",
      "tree": "10d58622f626f03156e0dec1f1fc00616554b336",
      "parents": [
        "3188d117d6f1ba5f3a30d0ff231d816ebb59a7f7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 25 14:22:56 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 26 13:24:04 2014 +0000"
      },
      "message": "Add conditional branches, and build dominator tree.\n\nChange-Id: I4b151a07b72692961235a1419b54b6b45cf54e63\n"
    },
    {
      "commit": "c17ebe866beb50eb6da1e6a47555cb4731467f3b",
      "tree": "704a456285312482394cb15e02dbfaa23e386f0f",
      "parents": [
        "ef2cc5a9c6e508a3e8b24d04ca35f7422f27e112"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Wed Feb 26 10:38:23 2014 +0700"
      },
      "committer": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Wed Feb 26 16:46:13 2014 +0700"
      },
      "message": "Incorrect result of the \"mul-long by 1\" operation\n\nART handles \"mul-long by 1\" as a special case and try to alloc a new pair\nof regs through the EvalLocWide method and then put there the multiplicand\nthrough the StoreValueWide method. But in case when both multiplicand and\nmultiplier are constants, it will not place correct values in a new reg pair\nand result of calculations will be incorrect. The new solution uses the\nonly StoreValueWide method.\n\nChange-Id: I3d6947737c92c5a12f2840003b17a427e31d288f\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "9d04a20bde1b1855cefc64aebc1a44e253b1a13b",
      "tree": "85b8315677c3d6545ac6c8b27db7cb00b82e68b7",
      "parents": [
        "0f8aa6b38f204ccacd3ac12bb844e628cec2215b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 31 13:35:49 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 25 13:56:48 2014 -0800"
      },
      "message": "(Experimental) Add Brooks pointers.\n\nThis feature is disabled by default.\n\nVerified that the Brooks pointers are installed correctly by using the\nCMS/SS collectors.\n\nChange-Id: Ia9be9814ab6e29169ac85edc4792ce8c81d552a9\n"
    },
    {
      "commit": "b55c898c6e3a1569a03cedbfc6dbf93d8d8ff3dd",
      "tree": "dca846982b1bbc4715e5c36e3e9bca058bd7aa9c",
      "parents": [
        "0f8aa6b38f204ccacd3ac12bb844e628cec2215b",
        "f7a82b422fa0428fb5678d91804610d56398b478"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@android.com",
        "time": "Tue Feb 25 20:23:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 20:23:30 2014 +0000"
      },
      "message": "Merge \"Implements a BasicBlock iterator using the ArenaBitVector.\""
    },
    {
      "commit": "f7a82b422fa0428fb5678d91804610d56398b478",
      "tree": "55582fcfd2d4e734e4709e96afcc14be690c494a",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Mon Feb 10 22:12:58 2014 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 25 12:20:24 2014 -0800"
      },
      "message": "Implements a BasicBlock iterator using the ArenaBitVector.\n\nAdded the implementation of a BasicBlock iterator using the ArenaBitVector.\nThis patch only adds the implementation of the iterator and does not yet use\n it everywhere it could be.\n\nAdded one example in ssa_transformation.cc of its use.\n\nChange-Id: Ia85d58320c80c48a43609265ea5318a416c71f18\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\n"
    },
    {
      "commit": "a028595f52b61e855d6dcf75f6bdf129d5568895",
      "tree": "8a0275373d1087b64e7e55a3258919252c9056cc",
      "parents": [
        "b04e7d59e05c8bbf0b42a26efe0242b47d318a29",
        "e19c91fdb88ff6fd4e88bc5984772dcfb1e86f80"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 25 20:08:26 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 20:08:26 2014 +0000"
      },
      "message": "Merge \"Fix hardcoded offsets in x86 String.indexOf.\""
    },
    {
      "commit": "2e589aa58a1372909f95e731fd6b8895f6359c3a",
      "tree": "6337f7e4765a6c6c1ba5d21e9f3f7c4ebe4971ee",
      "parents": [
        "661425e1f90d4f4ed44c66f5e74f48b92a3798df"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 25 17:53:53 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 25 19:03:17 2014 +0000"
      },
      "message": "Encode VmapTable entries offset by 2 to reduce size.\n\nWe\u0027re using special values 0xffff and 0xfffe for an\nfp register marker and for method pointer, respectively.\nThese values were being encoded as 3 bytes each and\nthis changes their encoding to 1 byte.\n\nBug: 9437697\nChange-Id: Ic1720e898b131a5d3f6ca87d8e1ecdf76fb4160a\n"
    },
    {
      "commit": "e19c91fdb88ff6fd4e88bc5984772dcfb1e86f80",
      "tree": "3d0169db0c318f92865cf385b6e24028113f8f4c",
      "parents": [
        "67f8f404a242752651771ab34df18f8eab910cb3"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Feb 25 08:19:08 2014 -0800"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Feb 25 08:49:49 2014 -0800"
      },
      "message": "Fix hardcoded offsets in x86 String.indexOf.\n\nUse runtime code that will work for 32 and 64 bit too.  The old code\ncopied constants from the runtime .S file and is correct for 32 bit code\nonly.\n\nChange-Id: I668e1d7f2db8186518c358bde0759633be0d7c40\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "67f8f404a242752651771ab34df18f8eab910cb3",
      "tree": "59707a05d81e8819857a8cb90ce40829263544ef",
      "parents": [
        "bdbc11899d04b284c0ec4b055e1a009c7034aaa5",
        "a36aeb30e806e0c899592bbaeee2b94bac4ab585"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 25 13:55:50 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 13:55:50 2014 +0000"
      },
      "message": "Merge \"Fix typo from previous commit that lead to performance regression.\""
    },
    {
      "commit": "a36aeb30e806e0c899592bbaeee2b94bac4ab585",
      "tree": "aee957eda4475d70c641364842422dc0428731fa",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 25 11:04:13 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 25 11:04:13 2014 +0000"
      },
      "message": "Fix typo from previous commit that lead to performance regression.\n\nChange-Id: I851654ae28522dd0358137578593d030e7eb9256\n"
    },
    {
      "commit": "ae7083dac2db59dcdef869e35ac44a039d888ee9",
      "tree": "65bbdbb112006237f9daeee9fd47f69a3e678f0d",
      "parents": [
        "fffb0b7e23796e5470f4fab4611f2fcc4a16979c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 21:56:02 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 21:56:02 2014 -0800"
      },
      "message": "Add additional const\n\nChange-Id: Ibf60cd4cfbb445189efe2439899f2a7084f1ea63\n"
    },
    {
      "commit": "fffb0b7e23796e5470f4fab4611f2fcc4a16979c",
      "tree": "3c2fd045f635a0511149272af9ff55a01a31b83c",
      "parents": [
        "a0c9b085d4ecf90ca3aa1252e81e65072b377ca4",
        "6449c62e40ef3a9bb75f664f922555affb532ee4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Feb 25 04:42:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 04:42:54 2014 +0000"
      },
      "message": "Merge \"Create CompilerOptions\""
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "6449c62e40ef3a9bb75f664f922555affb532ee4",
      "tree": "2f1b2120bd648c95dea32b68c8e168e42c8e24fd",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 10 23:48:36 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 14:24:12 2014 -0800"
      },
      "message": "Create CompilerOptions\n\nPackage up most compiler related options in CompilerOptions. Details include:\n- Includes compiler filter, method thresholds, SEA IR mode.\n- Excludes those needed during Runtime::Init such as CompilerCallbacks and VerificationResults.\n- Pass CompilerOptions to CompilerDriver.\n- Remove CompilerOptions from Runtime.\n- Add ability to pass options for app and image dex2oat to runtime via\n  -Xcompiler-option and -Ximage-compiler-option respectively.\n\nOther\n- Replace 2x CompilerCallbacks implementations with one.\n- Factor out execv code for use by both image and oat generation.\n- More OatFile error_msg reporting.\n- DCHECK for SuspendAll found trying to run valgrind.\n\nChange-Id: Iecb57da907be0c856d00c3cd634b5042a229e620\n"
    },
    {
      "commit": "4e30541a92381fb280cd0be9a1763b713ee4d64c",
      "tree": "84093651bbf0ad95b66b846c4f4cf4101994037b",
      "parents": [
        "e266ba9935bd12d685d83f73cd8d759e46c3014d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 19 10:54:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 21 15:24:04 2014 -0800"
      },
      "message": "Fix and optimize verify object.\n\nVerifyObject no longer resides in heap. You can now enable\nVerifyObject for non-debug builds. VerifyStack is still slow, so it\nis now guarded by its own flag.\n\nFixed the image writer to not use verification at places where\nverification fails due to invalid reads.\n\nFixed RosAlloc to use SizeOf which doesn\u0027t call verify object.\n\nAdded a flag paremeter to some of the mirror getters / setters to\nbe able to selectively disable VerifyObject on certain calls.\n\nOptimized the GC to not verify each object multiple times during\nobject scanning if verify object is enabled.\n\nAdded 3 verification options: verify reads, verify this, and verify\nwrites so that you can select how much verification you want for\nmirror getters and setters.\n\nRemoved some useless DCHECKs which would slow debug builds without\nproviding any benefits.\n\nTODO: RosAlloc verification doesn\u0027t currently work with verify\nobjects.\n\nBug: 12934910\nBug: 12879358\n\nChange-Id: Ic61033104dfc334543f89b0fc0ad8cd4f4015d69\n"
    },
    {
      "commit": "9a509efcd68644616817f59ed7d442ed6f024ff9",
      "tree": "5721833d2a1eb65670af5ec2c7530401f3e633e7",
      "parents": [
        "461173b850b25d03ab39e24b572287f82fce3477",
        "b3558e1bfe96398fc3d9bfddda2821b768a3f9a7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Feb 21 18:46:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 21 18:46:09 2014 +0000"
      },
      "message": "Merge \"Convert some LOG(DEBUG) messages into more approriate levels\""
    },
    {
      "commit": "9c86a0279aaf953377aa9e2277592e68bf814989",
      "tree": "bb9c9ae4b6916d89d0f95c6cf4a654ad0b469e9c",
      "parents": [
        "bf5b4b3a2d216e1dc7f693bf8efe223472136bb0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 21 16:40:21 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 21 09:00:50 2014 -0800"
      },
      "message": "Revert \"Annotate used fields.\"\n\nThis reverts commit 7f6cf56942c8469958b273ea968db253051c5b05.\n\nChange-Id: Ic389a194c3404ecb5bb563a405bf4a0d6336ea0d\n"
    },
    {
      "commit": "f59f18b2bd5432bb083205680c69fe64aaf60f39",
      "tree": "5d8d614f3afd80e75731d07dfef68ff3e9e70d9a",
      "parents": [
        "4dc23380cd99967d65c4f3b3f540cb0c78e9f546"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 17 15:53:57 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 21 14:08:35 2014 +0000"
      },
      "message": "Fix and rewrite local value numbering.\n\nFix memory versioning to take aliasing and method calls\ninto account. Use more instructions for the null check\nelimination. Return the local value name of the register\ndefined by the instruction if applicable.\n\nChange-Id: I4560bc680ae1ad553a7a00fa092c937e3da9fbbe\n"
    },
    {
      "commit": "4dc23380cd99967d65c4f3b3f540cb0c78e9f546",
      "tree": "fd09c808996284a136c90f9178a1aa032fa17ba2",
      "parents": [
        "58dabb5456eb4550fbd82012d9bc551920f1313c",
        "7f6cf56942c8469958b273ea968db253051c5b05"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 21 10:00:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 21 10:00:59 2014 +0000"
      },
      "message": "Merge \"Annotate used fields.\""
    },
    {
      "commit": "b3558e1bfe96398fc3d9bfddda2821b768a3f9a7",
      "tree": "57ef50b1a1fc57bfc12eff0c5349c9acb7e3252e",
      "parents": [
        "553e30c53423459bef6840a3e358199b1ae2db58"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Feb 21 00:05:43 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Feb 21 00:05:43 2014 -0800"
      },
      "message": "Convert some LOG(DEBUG) messages into more approriate levels\n\nChange-Id: Iace4b1e38e5bb116af78f665dad2bb6cd25c8ec7\n"
    },
    {
      "commit": "4028a6c83a339036864999fdfd2855b012a9f1a7",
      "tree": "c86f355cb39adc7a14469f0a4e5727623fbda443",
      "parents": [
        "0b2b3dbaa3db62c0af0d2f23f6aa1c539afe7443"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Feb 19 20:06:20 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 20 15:46:42 2014 -0800"
      },
      "message": "Inline x86 String.indexOf\n\nTake advantage of the presence of a constant search char or start index\nto tune the generated code.\n\nChange-Id: I0adcf184fb91b899a95aa4d8ef044a14deb51d88\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "7f6cf56942c8469958b273ea968db253051c5b05",
      "tree": "8df31f196572acea32513083f98c1f387e581915",
      "parents": [
        "3188d117d6f1ba5f3a30d0ff231d816ebb59a7f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 29 10:31:55 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 20 11:26:18 2014 +0000"
      },
      "message": "Annotate used fields.\n\nAnnotate all fields used by a method early during the\ncompilation, check acces rights and record field offset,\nvolatility, etc. Use these annotations when generating code\nfor IGET/IPUT/SGET/SPUT instructions.\n\nChange-Id: I4bbf5cca4fecf53c9bf9c93ac1793e2f40c16b5f\n"
    },
    {
      "commit": "f3e2cc4a38389aa75eb8ee3973a535254bf1c8d2",
      "tree": "ae6cf8c43b724cf2c5d21bd12e0eca507dcc7842",
      "parents": [
        "e7da4cf71712a3d7a64166ceadfb176d07018d32"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 18:37:26 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 20 09:43:34 2014 +0000"
      },
      "message": "Code cleanup to avoid LLVM dependency when building with quick only.\n\nChange-Id: I0985c227d775c72fd23975d4c9bf673ba32615c2\n"
    },
    {
      "commit": "e7da4cf71712a3d7a64166ceadfb176d07018d32",
      "tree": "3bae187175683183a2871bfcd7a564c8c48476c2",
      "parents": [
        "fd80b5717c0cdd10ef2caabf4291415a52fcc874",
        "50cfe74daaece80853cb3b45d4338329b7d0345b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 20 09:32:29 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 20 09:32:29 2014 +0000"
      },
      "message": "Merge \"Remove dependency on llvm/Support/ELF.h by using linux\u0027s elf.h.\""
    },
    {
      "commit": "50cfe74daaece80853cb3b45d4338329b7d0345b",
      "tree": "0c719d6496c684f426a70645d90eb1596856fe45",
      "parents": [
        "86ce70d30fcebf41273a9a9fd86eaa9b33c0ab56"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 13:27:42 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 20:35:39 2014 +0000"
      },
      "message": "Remove dependency on llvm/Support/ELF.h by using linux\u0027s elf.h.\n\nChange-Id: Iefe66af9958641ac7f08fdc22f438d976e5b4d54\n"
    },
    {
      "commit": "c4a2ee4958c1abe17973233b154874ade01d0a99",
      "tree": "f23021e6aa1bd70eed02e7b8573df689cb6b615b",
      "parents": [
        "de853fec54442da15a7de5df1e6988cbbe68954a",
        "dc781a13ddb4dabf646bb45d0c53b65cab948e5b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 19 20:25:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 19 20:25:19 2014 +0000"
      },
      "message": "Merge \"art: convert makefiles to support multilib build\""
    },
    {
      "commit": "818f2107e6d2d9e80faac8ae8c92faffa83cbd11",
      "tree": "0a92aa1ba319115d8af05badc150d1e9e8e5e4ca",
      "parents": [
        "a2a5354cd95faf242a70b99b7b11f8fdb7cb7c1b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 16:43:35 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 19:22:41 2014 +0000"
      },
      "message": "Re-apply: Initial check-in of an optimizing compiler.\n\nThe classes and the names are very much inspired by V8/Dart.\nIt currently only supports the RETURN_VOID dex instruction,\nand there is a pretty printer to check if the building of the\ngraph is correct.\n\nChange-Id: I28e125dfee86ae6ec9b3fec6aa1859523b92a893\n"
    },
    {
      "commit": "1af0c0b88a956813eb0ad282664cedc391e2938f",
      "tree": "22c31a72dc2d0c711056b4d4b1388a64de103261",
      "parents": [
        "68a5fefa90f03fdf5a238ac85c9439c6b03eae96"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 17:30:16 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 17:30:16 2014 +0000"
      },
      "message": "Revert \"Initial check-in of an optimizing compiler.\"\n\ng++ warnings turned into errors.\n\nThis reverts commit 68a5fefa90f03fdf5a238ac85c9439c6b03eae96.\n\nChange-Id: I09bb95d9cc13764ca8a266c41af04801a34b9fd0\n"
    },
    {
      "commit": "68a5fefa90f03fdf5a238ac85c9439c6b03eae96",
      "tree": "0f3ba23e5d3e2bbd211023fd7ce0740f694e7215",
      "parents": [
        "0bf2ed98bc7d529a28ab470d36308ee2358f5a1c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 16:43:35 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 16:48:02 2014 +0000"
      },
      "message": "Initial check-in of an optimizing compiler.\n\nThe classes and the names are very much inspired by V8/Dart.\nIt currently only supports the RETURN_VOID dex instruction,\nand there is a pretty printer to check if the building of the\ngraph is correct.\n\nChange-Id: Id5ef1b317ab997010d4e3888e456c26bef1ab9c0\n"
    },
    {
      "commit": "dc781a13ddb4dabf646bb45d0c53b65cab948e5b",
      "tree": "b74e4a579747ce12297b5a66f04669f42dfffa6a",
      "parents": [
        "89925e948c49616689eb4959aaf0e4ff1de18161"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 04 16:22:03 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 18 17:22:15 2014 -0800"
      },
      "message": "art: convert makefiles to support multilib build\n\nConvert makefiles to allow for building two architectures at the\nsame time.  More changes may be necessary to get the tests to\nbuild.\n\nChange-Id: I02ba11706b7e5b5592d76e43c167bcbf0e665b93\n"
    },
    {
      "commit": "2befd09cf4fe89a18a655f3e1dd310831bfa769f",
      "tree": "9329308374370e1db721cb4d1e4723daa6001fdf",
      "parents": [
        "46861fccd9b5efb3226e2003310f01e748aec0a1",
        "84c072c348006d87a370ad6e746e2d976cbe62f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 18 14:41:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 14:41:21 2014 +0000"
      },
      "message": "Merge \"Expose inline method identification for debugger.\""
    },
    {
      "commit": "46861fccd9b5efb3226e2003310f01e748aec0a1",
      "tree": "d144c4b504ff05f3819b50fed0ac4096fcb65927",
      "parents": [
        "b87fca834f1b5189f1f818b3849b6f0de1548ece",
        "3bc01748ef1c3e43361bdf520947a9d656658bf8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 18 13:57:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 13:57:26 2014 +0000"
      },
      "message": "Merge \"GenSpecialCase support for x86\""
    },
    {
      "commit": "84c072c348006d87a370ad6e746e2d976cbe62f2",
      "tree": "6b86b7bffab633957bd7b89d00367c0d078ee165",
      "parents": [
        "2c3458dbda97b70158ee7ef22d13ce473a2a2147"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 17 15:07:04 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 18 11:33:33 2014 +0000"
      },
      "message": "Expose inline method identification for debugger.\n\nAlso, record only those getter/setter functions which\nwe really intend to inline in the short term (and which\nactually have a special implementation emitted).\n\nChange-Id: Icb8d71707a65cb6fabae5bc9118e5f3eaf7b63dd\n"
    },
    {
      "commit": "b87fca834f1b5189f1f818b3849b6f0de1548ece",
      "tree": "519ab20e3527b3f6ffa2b48d8f7fdb9929859c39",
      "parents": [
        "df8d416733642347c92ae2b4175b8fd0af401f31",
        "b84f522ff2f2b40d57d658f774da7b2a313a981e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 10:29:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 10:29:11 2014 +0000"
      },
      "message": "Merge \"Fix lint error.\""
    },
    {
      "commit": "b84f522ff2f2b40d57d658f774da7b2a313a981e",
      "tree": "228d6fa874afb422150066832d6f9efdbc88b52e",
      "parents": [
        "f5df8974173124faddb8e2b6a331959afdb94fdf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 10:18:47 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 10:20:24 2014 +0000"
      },
      "message": "Fix lint error.\n\nChange-Id: I40d7290d547275369449620509da759db2800935\n"
    },
    {
      "commit": "df8d416733642347c92ae2b4175b8fd0af401f31",
      "tree": "f6d84dc8a6b8aaebcf9bac71afb5cbaa96ae82ff",
      "parents": [
        "b52b2195c21ce53ef71e576d674dc549dd4b4949",
        "f5df8974173124faddb8e2b6a331959afdb94fdf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 10:05:51 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 10:05:51 2014 +0000"
      },
      "message": "Merge \"Rewrite the compiler interface for CompilerDriver.\""
    },
    {
      "commit": "f5df8974173124faddb8e2b6a331959afdb94fdf",
      "tree": "26114bf466b445c60176b06a2f8a01f1e14e9358",
      "parents": [
        "32a6c7f3bd76bbe574675d44b7d8076995690a5b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 14 18:37:08 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 18 10:03:48 2014 +0000"
      },
      "message": "Rewrite the compiler interface for CompilerDriver.\n\nChange-Id: I15fa9afe7ffb7283ebda8d788a1e02793e3f75a6\n"
    },
    {
      "commit": "b52b2195c21ce53ef71e576d674dc549dd4b4949",
      "tree": "814a4a22cb563a2a4faa77e78f0a1d89b5af6a56",
      "parents": [
        "2c3458dbda97b70158ee7ef22d13ce473a2a2147",
        "de99bba92b4beac4c347772177f47bdd61e8f376"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 18 01:53:23 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 01:53:24 2014 +0000"
      },
      "message": "Merge \"Optimize x86 long V*V by skipping imul\""
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "89925e948c49616689eb4959aaf0e4ff1de18161",
      "tree": "1bd36ae08018f6411692eca1bb137f0874de2816",
      "parents": [
        "239e8da166be56f83340938ac080daf97b638f9d",
        "653f2bf126ee55f0a8033d840040bb00d74ea593"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Feb 15 00:10:57 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 15 00:10:57 2014 +0000"
      },
      "message": "Merge \"Fixed result storage of instruction with long constant operand\""
    },
    {
      "commit": "de99bba92b4beac4c347772177f47bdd61e8f376",
      "tree": "aaae21487f77a20f58f6943c49f1ca92457d1559",
      "parents": [
        "209a3a03595984a7a94103c3c6ba8c5afaf358a1"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Feb 14 12:15:02 2014 -0800"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Feb 14 12:15:02 2014 -0800"
      },
      "message": "Optimize x86 long V*V by skipping imul\n\nThe algorithm for long multiplication can take advantage of the fact\nthat we are multiplying a value by itself by converting 1L*2H + 2L*1H\ninto (2H*1L)+(2H*1L), thus converting a multiply into an addition.\n\nChange-Id: I259a25699a8787badd943318e99bafdd06587ec6\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "79aa423fce400db3f551a3874e69e7cc4fb4f68f",
      "tree": "54b53ac63d73e0e6614770b383c89a3a6b3169d3",
      "parents": [
        "68bb649b128cd8760732524bd7ba58b49780d9d3"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Thu Feb 13 13:55:50 2014 +0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 13 15:31:02 2014 -0800"
      },
      "message": "x86 compiler should handle the \"div/rem by 1\" case\n\nThe current implementation of the (div/rem)/imm algorithm in\nART\u0027s x86 compiler (X86Mir2Lir::GenDivRemLit) handles the only\ncase when imm \u003d\u003d -1, imm \u003e\u003d 2 and imm \u003c\u003d -2, but in the case\nwhen imm \u003d\u003d 1, the result of calculation is incorrect.\n\nThis patch adds handler of the \"div/rem by 1\" case.\n\nChange-Id: I4bcdcd9c17f5ccb6c60e7c359c00e04cd07f5bee\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "3bc01748ef1c3e43361bdf520947a9d656658bf8",
      "tree": "9ac4f9cfd8079f2e89c85986bb60205a6f3e7579",
      "parents": [
        "68bb649b128cd8760732524bd7ba58b49780d9d3"
      ],
      "author": {
        "name": "Razvan A Lupusoru",
        "email": "razvan.a.lupusoru@intel.com",
        "time": "Thu Feb 06 13:18:43 2014 -0800"
      },
      "committer": {
        "name": "Razvan A Lupusoru",
        "email": "razvan.a.lupusoru@intel.com",
        "time": "Thu Feb 13 14:00:16 2014 -0800"
      },
      "message": "GenSpecialCase support for x86\n\nMoved GenSpecialCase from being ARM specific to common code to allow\nit to be used by x86 quick as well.\n\nChange-Id: I728733e8f4c4da99af6091ef77e5c76ae0fee850\nSigned-off-by: Razvan A Lupusoru \u003crazvan.a.lupusoru@intel.com\u003e\n"
    },
    {
      "commit": "ab4a4f2c6eb7ad5ddb7b63677ee12a5efb16d35c",
      "tree": "eb8a3781b89b124f35ae7607aec37bd7ab70817c",
      "parents": [
        "8b8adace3511e6fd68c6ae0eb80046d68186f8eb",
        "e549da59446a9fb986fbf02fe4cd2e3d610bd051"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 13 12:22:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 13 12:22:04 2014 +0000"
      },
      "message": "Merge \"Pass correct is_static to ResolveField.\""
    },
    {
      "commit": "653f2bf126ee55f0a8033d840040bb00d74ea593",
      "tree": "16161d03fc6fa0f2f18d52e1b4f87826cf9c7854",
      "parents": [
        "8b8adace3511e6fd68c6ae0eb80046d68186f8eb"
      ],
      "author": {
        "name": "Maxim Kazantsev",
        "email": "maxim.kazantsev@intel.com",
        "time": "Thu Feb 13 15:11:17 2014 +0700"
      },
      "committer": {
        "name": "Maxim Kazantsev",
        "email": "maxim.kazantsev@intel.com",
        "time": "Thu Feb 13 15:40:33 2014 +0700"
      },
      "message": "Fixed result storage of instruction with long constant operand\n\nWhen generating native code from .dex file, ART needs to store\noperation results correctly. There were incorrect results in\ncomputations with long constant arguments. The cause is\ninappropriate usage of registers storing result of such\noperation which is not yet spilled into memory and is still\nrequired for following instructions. There were mov-s into\nthese registers.\n\nThis patch ensures that the result of long operation with constant\noperand will be stored properly.\n\nChange-Id: Id65801eb76f0efb67515b73b8d01423205da1892\nSigned-off-by: Maxim Kazantsev \u003cmaxim.kazantsev@intel.com\u003e\n"
    },
    {
      "commit": "ed8081ab1e7fd5dc1d3429fc116ee02e450bbc0f",
      "tree": "b34f0ae6c058de9b10c7c5b4986d271185576a9b",
      "parents": [
        "1f26fb175bf3a10b5e1eb495d22778b47400f323",
        "614c2b4e219631e8c190fd9fd5d4d9cd343434e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 12 22:25:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 22:25:35 2014 +0000"
      },
      "message": "Merge \"Support to generate inline long to FP bytecodes for x86\""
    },
    {
      "commit": "1f26fb175bf3a10b5e1eb495d22778b47400f323",
      "tree": "5d673d359757c3b85f0a646c33b14e8eabd56e70",
      "parents": [
        "ae7e954bdb0ab23dac8619bbbe7bb5a2bf4fa6d7",
        "41dcb9f856a2051527cd595f8fe7d200066acba4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 12 20:40:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 20:40:28 2014 +0000"
      },
      "message": "Merge changes I41dcb9f8,I8bc80275\n\n* changes:\n  Revert \"Add a script for running art standalone.\"\n  Add StandardSocketOptions to the black list.\n"
    }
  ],
  "next": "707c96a9d3b23182d1515a7e683c0885eee08a06"
}
